|
REPORT ZKEEHOMEWORK1 NO STANDARD PAGE HEADING message-id zasia LINE-SIZE 180 LINE-COUNT 60.
INCLUDE ZALV_EXAMPLE_INCL. "在下面
**********************Table Work Area*********************** TABLES: VBAK,VBAP,KNA1,VBEP.
*********************DATA TYPES***************************** DATA: BEGIN OF WA, MATKL LIKE VBAP-MATKL, KUNNR LIKE KNA1-KUNNR, VBELN LIKE VBAP-VBELN, POSNR LIKE VBAP-POSNR, MATNR LIKE VBAP-MATNR,
ARKTX LIKE VBAP-ARKTX, NETPR LIKE VBAP-NETPR, KWMENG LIKE VBAP-KWMENG, EDATU LIKE VBEP-EDATU,
ADRNR LIKE KNA1-ADRNR, NAME1 LIKE KNA1-NAME1, END OF WA. DATA: WA_TAB LIKE WA OCCURS 500 WITH HEADER LINE, HF_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND', HF_PF_STATUS TYPE SLIS_FORMNAME VALUE 'PF_STATUS', TOP_OF_PAGE_EVENT TYPE slis_alv_event. DATA: total type i.
*********************SELECTION SCREEN**************************
SELECT-OPTIONS ZVBELN FOR VBAK-VBELN MATCHCODE OBJECT VMVA. PARAMETERS:ZERNAM LIKE VBAK-ERNAM OBLIGATORY default 'cura'. SELECT-OPTIONS ZAUDAT FOR VBAK-AUDAT . SELECT-OPTIONS ZKUNNR FOR VBAK-KUNNR. PARAMETERS:List RADIOBUTTON GROUP AAA, ALV RADIOBUTTON GROUP AAA, Form RADIOBUTTON GROUP AAA Default 'X'.
**********************SELECTION SCREEN VALIDATION************* *AT SELECTION-SCREEN. * SELECT SINGLE * FROM VBAK WHERE VBELN IN ZVBELN AND ERNAM = ZERNAM. * IF SY-SUBRC = 4. * MESSAGE I000 WITH 'No Hit Found'. * LEAVE SCREEN. * ENDIF.
**********************MAIN PROCESS***************************** START-OF-SELECTION. * set pf-status 'ZKEEHOMEWORK1'. PERFORM QUERY_DATA. END-OF-SELECTION. IF ALV = 'X'. PERFORM ALV_DISPLAY. ELSEIF Form = 'X'. PERFORM PrintInForm. ENDIF. *********************Print Page Header************************* * WRITE:0(10) 'SONum',10 SY-VLINE, * 'ItemNo',20 SY-VLINE, * 'MatNo',30 SY-VLINE, * 'MatGrp',40 SY-VLINE, * 'MatDesc',80 SY-VLINE, * 81(8)'NetPrice',90 SY-VLINE, * 91(8) 'Qty',100 SY-VLINE, * 'DlyDate',115 SY-VLINE, * 'CustNo',125 SY-VLINE, * 'CustAddr',155 SY-VLINE, * 156(20) 'CustName'. * ULINE.
*********************Handling & Printing Hits******************* * SORT WA_TAB BY MATKL KUNNR. * LOOP AT WA_TAB. * WRITE:wa_tab-vbeln,10 SY-VLINE, * wa_tab-posnr,20 SY-VLINE, * wa_tab-matnr,30 SY-VLINE, * wa_tab-matkl,40 SY-VLINE, * wa_tab-arktx,80 SY-VLINE, * 81(8) wa_tab-netpr,90 SY-VLINE, * 91(8) wa_tab-kwmeng,100 SY-VLINE, * wa_tab-edatu,115 SY-VLINE, * wa_tab-kunnr,125 SY-VLINE, * wa_tab-adrnr,155 SY-VLINE, * 156(20) wa_tab-name1. * * ULINE. * * AT END OF KUNNR. * SUM. * WRITE: 'Total Qty of customer[',wa_tab-KUNNR centered,']:',40(10) *wa_tab-kwmeng. * WRITE: /. * ULINE. * ENDAT. * AT END OF MATKL. * SUM. * WRITE: 'Total Qty of MatGrp[',wa_tab-MATKL centered,']:',40(10) *wa_tab-kwmeng. * WRITE: /. * ULINE. * ENDAT. * * ENDLOOP.
****************************User Command Handling*********** FORM QUERY_DATA. SELECT distinct VBAP~MATKL KNA1~KUNNR VBAP~VBELN VBAP~POSNR VBAP~MATNR VBAP~ARKTX VBAP~NETPR VBAP~KWMENG VBEP~EDATU KNA1~ADRNR KNA1~NAME1 into table wa_tab FROM VBAP INNER JOIN VBAK ON VBAP~VBELN = VBAK~VBELN INNER JOIN VBEP ON VBAP~VBELN = VBEP~VBELN AND VBEP~POSNR = VBAP~POSNR INNER JOIN KNA1 ON VBAK~KUNNR = KNA1~KUNNR
WHERE VBAK~VBELN IN ZVBELN AND VBAK~ERNAM = ZERNAM AND VBAK~AUDAT IN ZAUDAT AND VBAK~KUNNR IN ZKUNNR.
IF SY-SUBRC = 4. MESSAGE I000 WITH 'No Hits Found'. LEAVE SCREEN. ENDIF. ENDFORM.
*---------------------------------------------------------------------* * FORM ALV_DISPLAY * *---------------------------------------------------------------------* FORM ALV_DISPLAY. **************************Initialization********************* FIELDCAT_INIT: 'MATKL' 'X' 'group' '' '10' ''. FIELDCAT_INIT: 'KUNNR' 'X' 'customer' '' '16' ''. FIELDCAT_INIT: 'VBELN' '' 'sale order' '' '' ''. FIELDCAT_INIT: 'POSNR' '' 'item' '' '6' ''. FIELDCAT_INIT: 'MATNR' '' 'material ' '' '40' ''. FIELDCAT_INIT: 'ARKTX' '' 'description' '' '' ''. FIELDCAT_INIT: 'NETPR' '' 'price' 'X' '16' 'CURR'. FIELDCAT_INIT: 'KWMENG' '' 'qunatity' 'X' '16' 'INT1'. FIELDCAT_INIT: 'EDATU' '' 'DlyDate' '' '16' ''. FIELDCAT_INIT: 'ADRNR' '' 'CustAddr' '' '50' ''. FIELDCAT_INIT: 'NAME1' '' 'CustName' '' '40' ''.
****************************Set Sort Table********************* IT_SORT_ROW-FIELDNAME = 'MATKL'. IT_SORT_ROW-SPOS = 1. IT_SORT_ROW-UP = 'X'. IT_SORT_ROW-SUBTOT = 'X'. APPEND IT_SORT_ROW TO IT_SORT.
IT_SORT_ROW-FIELDNAME = 'KUNNR'. IT_SORT_ROW-SPOS = 2. IT_SORT_ROW-UP = 'X'. IT_SORT_ROW-SUBTOT = 'X'. APPEND IT_SORT_ROW TO IT_SORT.
****************************Set Top-of-Page******************** TOP_OF_PAGE_EVENT-NAME = 'TOP_OF_PAGE'. TOP_OF_PAGE_EVENT-FORM = 'TOP_OF_PAGE_CALLBACK'. APPEND TOP_OF_PAGE_EVENT TO wtbl_event.
***************************Write Out*************************** g_repid = sy-repid. gs_layout-zebra = 'X'. gs_layout-f2code = '&ETA'. gs_layout-detail_popup = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING i_callback_program = g_repid I_CALLBACK_PF_STATUS_SET = HF_PF_STATUS I_CALLBACK_USER_COMMAND = HF_USER_COMMAND it_fieldcat = gt_fieldcat is_layout = gs_layout it_events = wtbl_event it_sort = it_sort TABLES t_outtab = WA_TAB.
ENDFORM.
FORM PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB. Set pf-Status 'STANDARD' EXCLUDING EXTAB. ENDFORM.
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM. WHEN '&ETA'. "dobbleclick READ CURRENT LINE. set Parameter ID 'AUN' field WA_TAB-vbeln. call transaction 'VA02' and skip first screen. WHEN 'KEEPRT'. PERFORM PrintInForm. WHEN OTHERS. MESSAGE I003 WITH R_UCOMM. ENDCASE. ENDFORM.
*---------------------------------------------------------------------* * FORM top_of_page_callback * *---------------------------------------------------------------------* FORM top_of_page_callback. WRITE:/ sy-repid, 35 sy-title, 85 sy-datum, sy-uzeit, / sy-uname, 85 'Page: ', sy-cpage.
ENDFORM.
*---------------------------------------------------------------------* * FORM PrintInForm * *---------------------------------------------------------------------* FORM PrintInForm.
CALL FUNCTION 'OPEN_FORM' EXPORTING form = 'ZKEEFORM_TEST' language = '1' EXCEPTIONS canceled = 1 device = 2 form = 3 options = 4 unclosed = 5 mail_options = 6 OTHERS = 7. SORT WA_TAB BY MATKL KUNNR.
Loop at wa_tab.
* CALL FUNCTION 'START_FORM' * EXPORTING * form = 'ZKEEFORM_TEST' * language = '1'.
CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'LOGO' function = 'SET' type = 'BODY' window = 'LOGO'.
CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'HEADER' function = 'SET' type = 'BODY' window = 'HEADER'.
CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'MAIN' function = 'SET' type = 'BODY' window = 'MAIN'.
at last. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'TOTAL' function = 'SET' type = 'BODY' window = 'FOOTER'.
CALL FUNCTION 'END_FORM'. endat. endloop.
CALL FUNCTION 'CLOSE_FORM'. ENDFORM.
*-----------------------------------------------------------------------------------------------------
***INCLUDE ZALV_EXAMPLE_INCL . *&---------------------------------------------------------------------* *& Include ZMMRP_IN_01 * *&---------------------------------------------------------------------* *--------------------------------------------------------------------- * Forms *--------------------------------------------------------------------- * Initialization fieldcatalog DEFINITION OF HEADING. * Fieldnames and ref_fieldnames MUST be UPPER CASE !! TYPE-POOLS: slis. DATA: gt_fieldcat TYPE slis_t_fieldcat_alv, gs_layout TYPE slis_layout_alv, it_sort TYPE slis_sortinfo_alv OCCURS 0. DATA: g_repid LIKE sy-repid, wstr_event TYPE slis_alv_event, wtbl_event TYPE slis_t_event. DATA: pos TYPE i VALUE 1. DATA: ls_fieldcat TYPE slis_fieldcat_alv. DATA: BEGIN OF it_sort_row OCCURS 0, * spos(2) type n, spos LIKE alvdynp-sortpos, fieldname TYPE slis_fieldname, tabname TYPE slis_fieldname, * up(1) type c, * down(1) type c, * group(2) type c, * subtot(1) type c, up LIKE alvdynp-sortup, down LIKE alvdynp-sortdown, group LIKE alvdynp-grouplevel, subtot LIKE alvdynp-subtotals, comp(1) TYPE c, expa(1) TYPE c, obligatory(1) TYPE c, END OF it_sort_row.
DEFINE fieldcat_init. * USING rt_fieldcat TYPE slis_t_fieldcat_alv. clear ls_fieldcat. ls_fieldcat-col_pos = pos. ls_fieldcat-fieldname = &1. ls_fieldcat-key = &2. ls_fieldcat-seltext_l = &3. ls_fieldcat-seltext_m = &3. * ls_fieldcat-seltext_s = &3. * ls_fieldcat-outputlen = &4. ls_fieldcat-do_sum = &4. ls_fieldcat-outputlen = &5. ls_fieldcat-datatype = &6. append ls_fieldcat to gt_fieldcat. pos = pos + 1. END-OF-DEFINITION. "fieldcat_init
DEFINE fieldcat_init1. * USING rt_fieldcat TYPE slis_t_fieldcat_alv. clear ls_fieldcat. ls_fieldcat-col_pos = pos. ls_fieldcat-fieldname = &1. ls_fieldcat-key = &2. ls_fieldcat-seltext_l = &3. ls_fieldcat-seltext_m = &3. * ls_fieldcat-seltext_s = &3. * ls_fieldcat-outputlen = &4. ls_fieldcat-do_sum = &4. ls_fieldcat-outputlen = &5. ls_fieldcat-no_out = &6. append ls_fieldcat to gt_fieldcat. clear ls_fieldcat. pos = pos + 1. END-OF-DEFINITION. "fieldcat_init1
*&---------------------------------------------------------------------* *& Form write_list_in_alv *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_IT_SHOW text * -->P_0279 text *----------------------------------------------------------------------* FORM frm_write_list_in_alv TABLES i_table USING itabnam. "upper case
g_repid = sy-repid. gs_layout-zebra = 'X'. gs_layout-f2code = '&ETA'. gs_layout-detail_popup = 'X'. * gs_layout-COLWIDTH_OPTIMIZE = 'X'. * gs_layout-box_fieldname = 'BOX'.
* CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' * EXPORTING * i_program_name = g_repid * i_internal_tabname = itabnam * i_inclname = g_repid * CHANGING * ct_fieldcat = gt_fieldcat.
* PERFORM fieldcat_init USING gt_fieldcat[]. * * it_sort_row-fieldname = 'MATKL'. * it_sort_row-spos = 1. * it_sort_row-up = 'X'. * it_sort_row-subtot = 'X'. * APPEND it_sort_row TO it_sort. * * it_sort_row-fieldname = 'BKLAS'. * it_sort_row-spos = 2. * it_sort_row-up = 'X'. * it_sort_row-subtot = 'X'. * APPEND it_sort_row TO it_sort.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING i_callback_program = g_repid it_fieldcat = gt_fieldcat[] is_layout = gs_layout it_events = wtbl_event it_sort = it_sort TABLES t_outtab = i_table. ENDFORM. "WRITE_LIST_IN_ALV
*&---------------------------------------------------------------------* *& Form write_list_in_alv *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_IT_SHOW text * -->P_0279 text *----------------------------------------------------------------------* FORM frm_write_list_in_alv0 TABLES i_table USING itabnam. "upper case
g_repid = sy-repid. gs_layout-zebra = 'X'. gs_layout-f2code = '&ETA'. gs_layout-detail_popup = 'X'. * gs_layout-box_fieldname = 'BOX'.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = g_repid i_internal_tabname = itabnam i_inclname = g_repid CHANGING ct_fieldcat = gt_fieldcat.
* PERFORM fieldcat_init USING gt_fieldcat[].
* it_sort_row-fieldname = 'FGMATNR'. * it_sort_row-spos = 1. * it_sort_row-up = 'X'. * it_sort_row-subtot = 'X'. * APPEND it_sort_row TO it_sort. * * it_sort_row-fieldname = 'BKLAS'. * it_sort_row-spos = 2. * it_sort_row-up = 'X'. * it_sort_row-subtot = 'X'. * APPEND it_sort_row TO it_sort.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING i_callback_program = g_repid it_fieldcat = gt_fieldcat[] is_layout = gs_layout it_events = wtbl_event it_sort = it_sort TABLES t_outtab = i_table. ENDFORM. "WRITE_LIST_IN_ALV |