点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
REPORT zmm_rept_purchorderkkb01 LINE-SIZE 80 LINE-COUNT 65(3) MESSAGE-ID z_msg_class NO STANDARD PAGE HEADING. *------------------DECLARING THE STANDARD TABLES---------------------* TABLES : ekko, "PURCHASE ORDER : HEADER ekpo. "PURCHASE ORDER : ITEM *------------------DECLARING THE INTERNAL TABLE----------------------* DATA : BEGIN OF it_ekko OCCURS 2, ebeln LIKE ekko-ebeln, "PURCHASE ORDER NUMBER bukrs LIKE ekko-bukrs, "COMPANY CODE bsart LIKE ekko-bsart, "PURCHASING DOCUMENT TYPE lifnr LIKE ekko-lifnr, "VENDOR spras LIKE ekko-spras, "LANGUAGE KEY zterm LIKE ekko-zterm, "PAYMENT TERMS KEY end of it_ekko. DATA : BEGIN OF it_ekpo OCCURS 2, ebeln LIKE ekpo-ebeln, "PURCHASE ORDER NUMBER ebelp LIKE ekpo-ebelp, "PURCHASE ORDER NUMBER werks LIKE ekpo-werks, "PLANT matnr LIKE ekpo-matnr, "MATERIAL NUMBER matkl LIKE ekpo-matkl, "MATERIAL GROUP END OF it_ekpo. DATA: it_ebeln LIKE ekko-ebeln OCCURS 0 WITH HEADER LINE. *DATA: it_ebeln_high LIKE ekko-ebeln OCCURS 0 WITH HEADER LINE. DATA: p_ebeln TYPE i. *------------------Declaring the selection screen--------------------* SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001. SELECT-OPTIONS : s_ebeln FOR ekko-ebeln. PARAMETER : p_limit TYPE i. SELECTION-SCREEN END OF BLOCK blk1. *INCLUDE z_incl_purorderkkb01_sub_f01. *--------------------------------------------------------------------* * Validation for number of records to be printed * *--------------------------------------------------------------------* *AT SELECTION-SCREEN ON p_limit. * IF p_limit IS INITIAL. * MESSAGE e011. * ENDIF. * IF p_limit GT sy-linct. * MESSAGE e010. * ENDIF. *----------------------------------------------------------------------* * Search help for purchase document number (s_ebeln-low) * *----------------------------------------------------------------------* AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ebeln-low. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = s_ebeln-low IMPORTING output = s_ebeln-low. perform form_search_help. IF sy-subrc <> 0. CASE sy-subrc. WHEN 2. LEAVE TO SCREEN 1000. ENDCASE. ELSE. LOOP AT it_ebeln. IF sy-tabix = p_ebeln. s_ebeln-low = it_ebeln. EXIT. ENDIF. ENDLOOP. ENDIF. *----------------------------------------------------------------------* * Search help for purchase document number (s_ebeln-high) * *----------------------------------------------------------------------* AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ebeln-high. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = s_ebeln-high IMPORTING output = s_ebeln-high. perform form_search_help. IF sy-subrc <> 0. CASE sy-subrc. WHEN 2. LEAVE TO SCREEN 1000. ENDCASE. ELSE. LOOP AT it_ebeln. IF sy-tabix = p_ebeln. s_ebeln-high = it_ebeln. EXIT. ENDIF. ENDLOOP. ENDIF. *----------------------------------------------------------------------* * Start-of-selection event * *----------------------------------------------------------------------* START-OF-SELECTION. *----------------------To attach a user interface----------------------* SET PF-STATUS '0010'. *---------To fetch the data for the basic list-------------------------* SELECT ebeln "PURCHASE ORDER NUMBER bukrs "COMPANY CODE bsart "PURCHASING DOCUMENT TYPE lifnr "VENDOR spras "LANGUAGE KEY zterm "PAYMENT TERMS KEY up to p_limit rows into table it_ekko from ekko where ebeln in s_ebeln. REFRESH it_ekpo. *---------To fetch the data for the secondary list-----------------------* if it_ekpo is initial. SELECT ebeln "PURCHASE ORDER NUMBER ebelp "PURCHASING DOCUMENT TYPE werks "PLANT matnr "MATERIAL NUMBER matkl "MATERIAL GROUP FROM ekpo INTO TABLE it_ekpo for all entries in it_ekko WHERE ebeln EQ it_ekko-ebeln. endif. *----------------------------------------------------------------------* * End-of-selection event * *----------------------------------------------------------------------* END-OF-SELECTION. *---------To display the data for the basic list-----------------------* format color 4 intensified off. LOOP AT it_ekko. WRITE :/ sy-vline, it_ekko-ebeln UNDER text-002, 18 sy-vline, "PURCHASE ORDER NUMBER it_ekko-bukrs UNDER text-003, 27 sy-vline, "COMPANY CODE it_ekko-bsart UNDER text-004, 38 sy-vline, "PURCHASING DOCUMENT TYPE it_ekko-lifnr UNDER text-005, 50 sy-vline, "VENDOR it_ekko-spras UNDER text-006, 62 sy-vline, "LANGUAGE KEY it_ekko-zterm UNDER text-007, 80 sy-vline. "PAYMENT TERMS KEY hide : it_ekko-ebeln. ENDLOOP. WRITE :/ sy-uline(80). *----------------------------------------------------------------------* * To generate the detailed lists * *----------------------------------------------------------------------* AT LINE-SELECTION. CASE sy-lsind. WHEN 1. SET PF-STATUS '0011'. *---------To display the data for the secondary list-----------------------* WINDOW STARTING AT 10 10 ENDING AT 90 30. format color 5 intensified off. LOOP AT it_ekpo where ebeln = it_ekko-ebeln . WRITE :/ sy-vline, it_ekpo-ebeln UNDER text-002, 15 sy-vline, "PURCHASE ORDER NUMBER it_ekpo-ebelp UNDER text-008, 30 sy-vline, "PO ITEM NUMBER it_ekpo-werks UNDER text-009, 45 sy-vline, "PLANT it_ekpo-matnr UNDER text-010, 60 sy-vline, "MATERIAL NUMBER it_ekpo-matkl UNDER text-011, 80 sy-vline. "MATERIAL GROUP ENDLOOP. WRITE :/ sy-uline(80). ENDCASE. CASE sy-ucomm. WHEN 'EXIT' OR 'CANC' OR 'BACK'. LEAVE TO SCREEN 0. ENDCASE. *----------------------------------------------------------------------* * At user-command event * *----------------------------------------------------------------------* AT USER-COMMAND. CASE sy-ucomm. WHEN 'SELE' OR 'LIST1'. IF sy-lsind = 1. SET PF-STATUS '0011'. *---------To display the data for the secondary list-----------------------* WINDOW STARTING AT 10 10 ENDING AT 90 30. format color 5 intensified off. LOOP AT it_ekpo where ebeln = it_ekko-ebeln . WRITE :/ sy-vline, it_ekpo-ebeln UNDER text-002, 15 sy-vline, "PURCHASE ORDER NUMBER it_ekpo-ebelp UNDER text-008, 30 sy-vline, "PO ITEM NUMBER it_ekpo-werks UNDER text-009, 45 sy-vline, "PLANT it_ekpo-matnr UNDER text-010, 60 sy-vline, "MATERIAL NUMBER it_ekpo-matkl UNDER text-011, 80 sy-vline. "MATERIAL GROUP ENDLOOP. WRITE :/ sy-uline(80). endif. ENDCASE. CASE sy-ucomm. WHEN 'EXIT' OR 'CANC' OR 'BACK'. LEAVE TO SCREEN 0. ENDCASE. *----------------------------------------------------------------------* * Top-of-page for basic list * *----------------------------------------------------------------------* TOP-OF-PAGE. format color 3 intensified off. WRITE :/ sy-uline(80). WRITE :/ sy-vline, 03 sy-repid, 60 text-015, sy-uname, 80 sy-vline. WRITE :/ sy-vline, 03 sy-datum, 35 text-012, 60 text-014, sy-pagno, 80 sy-vline. WRITE :/ sy-uline(80). WRITE :/ sy-vline, text-002, 18 sy-vline, "PURCHASE ORDER NUMBER text-003, 27 sy-vline, "COMPANY CODE text-004, 38 sy-vline, "PURCHASING DOCUMENT TYPE text-005, 50 sy-vline, "VENDOR text-006, 62 sy-vline, "LANGUAGE KEY text-007, 80 sy-vline. "PAYMENT TERMS KEY WRITE :/ sy-uline(80). *----------------------------------------------------------------------* * Top-of-page for secondary list * *----------------------------------------------------------------------* TOP-OF-PAGE DURING LINE-SELECTION. format color 2 intensified off. WINDOW STARTING AT 10 10 ENDING AT 90 30. WRITE :/ sy-uline(80). WRITE :/ sy-vline, 03 sy-repid, 60 text-015, sy-uname, 80 sy-vline. WRITE :/ sy-vline, 03 sy-datum, 35 text-013, 60 text-014, sy-pagno, 80 sy-vline. WRITE :/ sy-uline(80). WRITE :/ sy-vline, text-014, 15 sy-vline, "PURCHASE ORDER NUMBER text-008, 30 sy-vline, "PO ITEM NUMBER text-009, 45 sy-vline, "PLANT text-010, 60 sy-vline, "MATERIAL NUMBER text-011, 80 sy-vline. "MATERIAL GROUP WRITE :/ sy-uline(80). *----------------------------------------------------------------------* * End-of-page event * *----------------------------------------------------------------------* END-OF-PAGE. WRITE :/ sy-vline, 03 text-016, p_limit, 60 text-014, sy-pagno, 80 sy-vline. write:/ sy-uline(80). INCLUDE Z_INCLUDE_PURCHORDERKKB01. form form_search_help . REFRESH it_ebeln. CLEAR it_ebeln. CLEAR P_ebeln. SELECT ebeln FROM ekko INTO TABLE it_ebeln. CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY' EXPORTING endpos_col = 21 endpos_row = 35 startpos_col = 12 startpos_row = 1 titletext = text-012 IMPORTING choise = P_ebeln TABLES valuetab = it_ebeln EXCEPTIONS break_off = 1 OTHERS = 2.