on 07-02-2021 10:56 AM
IM a fresher in abap.
I have created a purchase order report with 2 screens, one shows 4 columns and other shows the item details with respect to the po number.
And on 2nd screen , I created a custom button, that should call transaction ME22n.
here is the code ive did, upto call transaction.
tables: ekko,ekpo.
INCLUDE zdata. " include data declaration.
"selection screen.
SELECTION-SCREEN: begin of block b2 with frame title text-002.
SELECT-OPTIONS: s_bukrs for ekKo-buKRs,
s_lifnr for ekko-lifnr,
s_ebeln for ekKo-ebeln ."OBLIGATORY.
SELECTION-SCREEN: end of block b2.
*AT
START-OF-SELECTION.
perform get_data.
perform f_cats.
PERFORM build_layout.
PERFORM SUBTOTAL.
PERFORM DATA_RETRIEVAL.
PERFORM DISPLAY.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .
select *
from ekko
into CORRESPONDING FIELDS OF TABLE it_ekko
WHERE bukrs in s_bukrs and
ebeln in s_ebeln AND
LIFNR IN S_LIFNR.
sort it_ekko by ebeln ASCENDING.
if it_ekKo is not initial.
SELECT ebeln
ebelp
bukrs
matnr
werks
MENGE
MEINS
NETWR
MATKL
* WAERK
FROM EKPO
INTO CORRESPONDING FIELDS OF TABLE IT_EKPO
FOR ALL ENTRIES IN IT_EKKO
WHERE EBELN = IT_EKKO-EBELN.
sort it_ekpo by ebeln ASCENDING.
ENDIF.
ENDFORM. " GET_DATA
FORM SUBTOTAL.
wa_sort-spos = 1.
wa_sort-fieldname = 'lifnr'.
* WA_SORT-TABNAME = 'IT_EKKO'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO it_sort.
CLEAR WA_SORT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_CATS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_cats .
WA_LAYO-colwidth_optimize = 'X'.
* Set layout field for row attributes(i.e. color)
WA_LAYO-info_fieldname = 'LINE_COLOR'.
wa_fcat-col_pos = '1'.
wa_fcat-fieldname = 'ebeln'.
wa_fcat-seltext_m = 'PO NUMBER'.
*WA_FCAT-emphasize = 'X'.
wa_fcat-hotspot = 'X'.
APPEND wa_fcat to it_fcat.
CLEAR:WA_FCAT.
wa_fcat-col_pos = '2'.
wa_fcat-fieldname = 'bukrs'.
*WA_FCAT-emphasize = 'C2'.
wa_fcat-seltext_m = 'COMPANY CODE'.
APPEND wa_fcat to it_fcat.
CLEAR:WA_FCAT.
wa_fcat-col_pos = '3'.
wa_fcat-fieldname = 'lifnr'.
wa_fcat-seltext_m = 'VENDOR'.
*WA_FCAT-emphasize = 'C3'.
APPEND wa_fcat to it_fcat.
CLEAR:WA_FCAT.
wa_fcat-col_pos = '4'.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-seltext_m = 'MATERIAL'.
*WA_FCAT-emphasize = 'C4'.
APPEND wa_fcat to it_fcat.
CLEAR:WA_FCAT.
wa_fcat-col_pos = '5'.
wa_fcat-fieldname = 'WERKS'.
wa_fcat-seltext_m = 'PLANT'.
*WA_FCAT-emphasize = 'C5'.
APPEND wa_fcat to it_fcat.
CLEAR:WA_FCAT.
wa_fcat-col_pos = '6'.
wa_fcat-fieldname = 'MENGE'.
wa_fcat-seltext_m = 'PO QUANTITY'.
*WA_FCAT-emphasize = 'C6'.
WA_FCAT-DO_SUM = 'X'.
APPEND wa_fcat to it_fcat.
CLEAR:WA_FCAT.
ENDFORM. " F_CATS
*&---------------------------------------------------------------------*
*& Form DATA_RETRIEVAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM data_retrieval .
*data: Id_color(1) type c.
LOOP AT IT_EKPO INTO WA_EKPO.
WA_FINAL-EBELN = WA_EKPO-EBELN.
WA_FINAL-BUKRS = WA_EKPO-BUKRS.
WA_FINAL-MATNR = WA_EKPO-MATNR.
WA_FINAL-WERKS = WA_EKPO-WERKS.
WA_FINAL-MENGE = WA_EKPO-MENGE.
WA_FINAL-EBELP = WA_EKPO-EBELP.
WA_FINAL-MATkL = WA_EKPO-MATkL.
WA_FINAL-meins = WA_EKPO-meins.
wa_final-netwr = wa_ekpo-netwr.
READ TABLE IT_EKKO INTO WA_EKKO WITH KEY EBELN = WA_EKPO-EBELN.
IF SY-SUBRC = 0.
WA_FINAL-LIFNR = WA_EKKO-LIFNR.
* WA_FINAL-WAERS = WA_EKKO-WAERS.
ENDIF.
*id_color = id_color + 1.
*
* if Id_color = 8.
*Id_color = 1.
*endif.
*concatenate 'C' Id_color '10' into WA_FINAL-line_color.
*** wa_ekko-line_color = 'C410'.
**modify it_FINAL from wa_FINAL.
APPEND WA_FINAL TO IT_FINAL.
ENDLOOP.
ENDFORM. " DATA_RETRIEVAL
FORM TOP_OF_PAGE1.
CLEAR WA_HEADER.
WA_HEADER-TYP = 'H'.
WA_HEADER-INFO = 'PURCHASE ORDER RECORD'.
APPEND WA_HEADER TO IT_HEADER.
CLEAR WA_HEADER.
DESCRIBE TABLE IT_FINAL LINES LINES.
lines_char = LINES.
CONCATENATE 'TOTAL NO OF RECORD SELECTED' lines_char INTO V_LINES SEPARATED BY SPACE.
WA_HEADER-TYP = 'A'.
WA_HEADER-INFO = V_LINES.
APPEND WA_HEADER TO IT_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_HEADER
.
REFRESH IT_HEADER.
CLEAR: WA_HEADER.
ENDFORM.
form build_layout.
WA_LAYO-no_input = 'X'.
WA_LAYO-colwidth_optimize = 'X'.
WA_LAYO-totals_text = 'Totals'(201).
* Set layout field for row attributes(i.e. color)
WA_LAYO-info_fieldname = 'LINE_COLOR'.
endform. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE1'
IS_LAYOUT = WA_LAYO
IT_FIELDCAT = IT_FCAT
IT_SORT = it_sort
I_SAVE = 'X'
TABLES
T_OUTTAB = IT_FINAL
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY
form USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELF TYPE SLIS_SELFIELD.
FREE:IT_FCAT.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_final INTO wa_final INDEX RS_SELF-TABINDEX.
PERFORM GETDATA2.
PERFORM FIELDCAT2.
PERFORM DISPLAY2.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GETDATA2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM getdata2 .
* SET PF-STATUS 'BUTTON'.
IF IT_FINAL IS NOT INITIAL.
select ebeln ebelp matnr WERKS matkl bukrs meins menge netwr
from ekpo INTO CORRESPONDING FIELDS OF table it_ekpo
WHERE EBELN = WA_FINAL-EBELN.
ENDIF.
ENDFORM. " GETDATA2
*&---------------------------------------------------------------------*
*& Form FIELDCAT2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fieldcat2 .
CLEAR:WA_FCAT.
WA_FCAT1-COL_POS = '1'.
WA_FCAT1-JUST = 'R'.
wa_fcat1-fieldname = 'ebeln'.
wa_fcat1-seltext_m = 'PO NUMBER'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.
wa_fcat1-col_pos = '2'.
wa_fcat1-fieldname = 'EBELP'.
wa_fcat1-seltext_m = 'PO ITEM'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.
wa_fcat1-col_pos = '3'.
WA_FCAT1-TABNAME = 'IT_ekko'.
wa_fcat1-fieldname = 'bukrs'.
wa_fcat1-seltext_m = 'COMPANY CODE'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.
*wa_fcat1-col_pos = '4'.
*wa_fcat1-fieldname = 'OIC_LIFNR'.
*wa_fcat1-seltext_m = 'VENDOR'.
*APPEND wa_fcat1 to it_fcat1.
*CLEAR:WA_FCAT1.
wa_fcat1-col_pos = '4'.
wa_fcat1-fieldname = 'MATNR'.
wa_fcat1-seltext_m = 'MATERIAL'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.
wa_fcat1-col_pos = '5'.
wa_fcat1-fieldname = 'MATKL'.
wa_fcat1-seltext_m = 'MAT. GROUP'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.
wa_fcat1-col_pos = '6'.
wa_fcat1-fieldname = 'WERKS'.
wa_fcat1-seltext_m = 'PLANT'.
WA_FCAT1-DO_SUM = 'X'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.
wa_fcat1-col_pos = '7'.
wa_fcat1-fieldname = 'MENGE'.
wa_fcat1-seltext_m = 'PO QUANTITY'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.
wa_fcat1-col_pos = '8'.
wa_fcat1-fieldname ='MEINS'.
wa_fcat1-seltext_m = 'UOM'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.
wa_fcat1-col_pos = '9'.
wa_fcat1-fieldname ='NETWR'.
wa_fcat1-seltext_m = 'AMOUNT'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.
wa_fcat1-col_pos = '10'.
wa_fcat1-fieldname ='WAERS'.
wa_fcat1-seltext_m = 'CURRENCY'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.
WA_LAYO-colwidth_optimize = 'X'.
WA_LAYO-info_fieldname = 'LINE_COLOR'.
WA_LAYO-COLTAB_FIELDNAME = 'CELLCOLOR'.
ENDFORM. " FIELDCAT2
FORM TOP_OF_PAGE2.
CLEAR WA_HEADER1.
WA_HEADER1-TYP = 'H'.
WA_HEADER1-INFO = 'PURCHASE ORDER RECORD'.
APPEND WA_HEADER1 TO IT_HEADER1.
CLEAR WA_HEADER1.
WA_HEADER1-TYP = 'S'.
WA_HEADER1-KEY = 'DATE:'.
CONCATENATE SY-DATUM+6(2) SY-DATUM+4(2) SY-DATUM(4) INTO WA_HEADER1-INFO SEPARATED BY '/'.
APPEND WA_HEADER1 TO IT_HEADER1.
CLEAR :WA_HEADER1,lines_char,v_lines,lines.
DESCRIBE TABLE IT_ekpo LINES LINES.
lines_char = LINES.
CONCATENATE 'TOTAL NO OF RECORD SELECTED' lines_char INTO V_LINES SEPARATED BY SPACE.
WA_HEADER1-TYP = 'A'.
WA_HEADER1-INFO = V_LINES.
APPEND WA_HEADER1 TO IT_HEADER1.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_HEADER1
.
REFRESH IT_HEADER1.
CLEAR: WA_HEADER1.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display2 .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SUB_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND2'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE2'
*
IS_LAYOUT = WA_LAYO
IT_FIELDCAT = IT_FCAT1
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
I_SAVE = 'X'
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT = 'X'
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = it_EKPO
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*DATA REF1 TYPE REF TO CL_GUI_ALV_GRID.
* CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
* IMPORTING
* E_GRID = REF1.
* CALL METHOD REF1->CHECK_CHANGED_DATA.
CLEAR: WA_FCAT1.
REFRESH IT_FCAT1.
ENDFORM. " DISPLAY2
FORM SUB_PF_STATUS USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'BUTTON'.
ENDFORM.
form USER_COMMAND2 USING R_UCOMM LIKE SY-UCOMM RS_SELF TYPE SLIS_SELFIELD.
SET SCREEN 0.
case R_UCOMM.
when 'ME22N'.
READ TABLE IT_EKPO INTO WA_EKPO INDEX RS_SELF-TABINDEX.
IF SY-SUBRC = 0.
RS_SELF-REFRESH = 'X'.
SET PARAMETER ID 'BES' FIELD WA_EKPO-EBELN.
CALL TRANSACTION 'ME22N' AND SKIP FIRST SCREEN.
eNDIF.
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.