|
Sample list report off Table NAST with Line selection option.
REPORT znast. *** Table Definitions *** TABLES: nast. *** TYPE DEFINITIONS *** TYPES: BEGIN OF itab_data_structure, kappl LIKE nast-kappl, "Application objky LIKE nast-objky, "Key kschl LIKE nast-kschl, "Output type parnr LIKE nast-parnr, "Partner erdat LIKE nast-erdat, "Creation date usnam LIKE nast-usnam, "User name vstat LIKE nast-vstat. "Status TYPES: END OF itab_data_structure. TYPES: BEGIN OF itab_data_structure2, objky LIKE nast-objky, "Key docnum LIKE edidc-docnum, "Idoc Number mestyp LIKE edidc-mestyp. "Message type TYPES: END OF itab_data_structure2. *** INTERNAL TABLE DEFINITIONS *** DATA: itab_data TYPE itab_data_structure OCCURS 0 WITH HEADER LINE, itab_data2 TYPE itab_data_structure2 OCCURS 0 WITH HEADER LINE, itab_linked_idocs LIKE sww_contob OCCURS 5 WITH HEADER LINE, t_roles LIKE relroles OCCURS 5 WITH HEADER LINE. *** DATA DEFINITIONS DATA: field_name(30), "Check for line selection on field t_kschl(4), "Output type t_kunnr(10), "Customer number t_object LIKE borident. *** Selection screen *** SELECTION-SCREEN BEGIN OF BLOCK g1 WITH FRAME TITLE text-000. SELECT-OPTIONS: s_kappl FOR nast-kappl, "Application s_objky FOR nast-objky, "Key s_kschl FOR nast-kschl, "Output type s_parnr FOR nast-parnr, "Partner s_erdat FOR nast-erdat, "Creation date s_usnam FOR nast-usnam, "User name s_vstat FOR nast-vstat. "Status SELECTION-SCREEN END OF BLOCK g1. SELECTION-SCREEN BEGIN OF BLOCK g2 WITH FRAME TITLE text-001. PARAMETERS: r_kappl RADIOBUTTON GROUP r1, r_objky RADIOBUTTON GROUP r1, r_kschl RADIOBUTTON GROUP r1, r_parnr RADIOBUTTON GROUP r1, r_erdat RADIOBUTTON GROUP r1, r_usnam RADIOBUTTON GROUP r1, r_vstat RADIOBUTTON GROUP r1. SELECTION-SCREEN END OF BLOCK g2. SELECTION-SCREEN BEGIN OF BLOCK g3 WITH FRAME TITLE text-002. PARAMETERS: c_idoc AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN END OF BLOCK g3. *** Initialization *** INITIALIZATION. * Default dates MOVE 'I' TO s_erdat-sign. MOVE 'BT' TO s_erdat-option. MOVE sy-datum TO s_erdat-high. SUBTRACT 7 FROM sy-datum. MOVE sy-datum TO s_erdat-low. APPEND s_erdat. * Default Status MOVE 'I' TO s_vstat-sign. MOVE 'NE' TO s_vstat-option. MOVE '1' TO s_vstat-low. APPEND s_vstat. * Default Output MOVE 'I' TO s_kschl-sign. MOVE 'EQ' TO s_kschl-option. MOVE 'ZBA0' TO s_kschl-low. APPEND s_kschl. MOVE 'ZBA1' TO s_kschl-low. APPEND s_kschl. MOVE 'ZBA2' TO s_kschl-low. APPEND s_kschl. MOVE 'ZP00' TO s_kschl-low. APPEND s_kschl. MOVE 'ZAVA' TO s_kschl-low. APPEND s_kschl. MOVE 'ZD00' TO s_kschl-low. APPEND s_kschl. START-OF-SELECTION. REFRESH: itab_data, itab_data2. SELECT * FROM nast WHERE kappl IN s_kappl AND objky IN s_objky AND kschl IN s_kschl AND parnr IN s_parnr AND erdat IN s_erdat AND usnam IN s_usnam AND vstat IN s_vstat. itab_data-kappl = nast-kappl. itab_data-objky = nast-objky. itab_data-kschl = nast-kschl. itab_data-parnr = nast-parnr. itab_data-erdat = nast-erdat. itab_data-usnam = nast-usnam. itab_data-vstat = nast-vstat. APPEND itab_data. ENDSELECT. IF sy-subrc <> 0. MESSAGE i999(b1) WITH 'No records in that range!'. ELSE. IF c_idoc = 'X'. CLEAR: itab_data2. LOOP AT itab_data. itab_data2-objky = itab_data-objky. CASE itab_data-kschl. WHEN 'ZD00'. "Invoice READ TABLE itab_data2 WITH KEY objky = itab_data-objky. CHECK sy-subrc <> 0. REFRESH: t_roles. t_object-objkey = itab_data-objky. t_object-objtype = 'VBRK'. CALL FUNCTION 'SREL_GET_NEXT_RELATIONS' EXPORTING object = t_object TABLES roles = t_roles EXCEPTIONS internal_error = 1 no_logsys = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE i999(b1) WITH 'Could not execute linked docs FM:' itab_data-objky. ELSE. LOOP AT t_roles WHERE objtype = 'IDOC'. itab_data2-docnum = t_roles-objkey. SELECT SINGLE mestyp FROM edidc INTO itab_data2-mestyp WHERE docnum = t_roles-objkey. APPEND itab_data2. ENDLOOP. ENDIF. WHEN 'ZAVA'. "Delivery READ TABLE itab_data2 WITH KEY objky = itab_data-objky. CHECK sy-subrc <> 0. REFRESH: t_roles. t_object-objkey = itab_data-objky. t_object-objtype = 'LIKP'. CALL FUNCTION 'SREL_GET_NEXT_RELATIONS' EXPORTING object = t_object TABLES roles = t_roles EXCEPTIONS internal_error = 1 no_logsys = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE i999(b1) WITH 'Could not execute linked docs FM:' itab_data-objky. ELSE. LOOP AT t_roles WHERE objtype = 'IDOC'. itab_data2-docnum = t_roles-objkey. SELECT SINGLE mestyp FROM edidc INTO itab_data2-mestyp WHERE docnum = t_roles-objkey. APPEND itab_data2. ENDLOOP. ENDIF. WHEN 'ZBA0' OR 'ZBA1' OR 'ZBA2'. "Orders READ TABLE itab_data2 WITH KEY objky = itab_data-objky. CHECK sy-subrc <> 0. REFRESH: t_roles. t_object-objkey = itab_data-objky. t_object-objtype = 'BUS2032'. CALL FUNCTION 'SREL_GET_NEXT_RELATIONS' EXPORTING object = t_object TABLES roles = t_roles EXCEPTIONS internal_error = 1 no_logsys = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE i999(b1) WITH 'Could not execute linked docs FM:' itab_data-objky. ELSE. LOOP AT t_roles WHERE objtype = 'IDOC'. itab_data2-docnum = t_roles-objkey. SELECT SINGLE mestyp FROM edidc INTO itab_data2-mestyp WHERE docnum = t_roles-objkey. COLLECT itab_data2. ENDLOOP. ENDIF. WHEN 'ZP00'. "Scheduling Agreement READ TABLE itab_data2 WITH KEY objky = itab_data-objky. CHECK sy-subrc <> 0. REFRESH: t_roles. t_object-objkey = itab_data-objky. t_object-objtype = 'BUS2035'. CALL FUNCTION 'SREL_GET_NEXT_RELATIONS' EXPORTING object = t_object TABLES roles = t_roles EXCEPTIONS internal_error = 1 no_logsys = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE i999(b1) WITH 'Could not execute linked docs FM:' itab_data-objky. ELSE. LOOP AT t_roles WHERE objtype = 'IDOC'. itab_data2-docnum = t_roles-objkey. SELECT SINGLE mestyp FROM edidc INTO itab_data2-mestyp WHERE docnum = t_roles-objkey. APPEND itab_data2. ENDLOOP. ENDIF. ENDCASE. ENDLOOP. ENDIF. ENDIF. END-OF-SELECTION. DESCRIBE TABLE itab_data. IF sy-tfill > 0. IF r_kappl = 'X'. SORT itab_data BY kappl. ELSEIF r_objky = 'X'. SORT itab_data BY objky. ELSEIF r_kschl = 'X'. SORT itab_data BY kschl. ELSEIF r_parnr = 'X'. SORT itab_data BY parnr. ELSEIF r_erdat = 'X'. SORT itab_data BY erdat. ELSEIF r_usnam = 'X'. SORT itab_data BY usnam. ELSEIF r_vstat = 'X'. SORT itab_data BY vstat. ENDIF. PERFORM print_itab_data TABLES itab_data itab_data2. ENDIF. AT LINE-SELECTION. GET CURSOR FIELD field_name. CASE field_name. WHEN 'ITAB_DATA2-DOCNUM' OR 'ITAB_DATA2-MESTYP'. "IDoc number CALL FUNCTION 'EDI_DOCUMENT_DATA_DISPLAY' EXPORTING docnum = itab_data2-docnum EXCEPTIONS no_data_record_found = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE i999(b1) WITH 'Could not display IDoc:' itab_data2-docnum. ENDIF. CLEAR: itab_data2-docnum. WHEN 'ITAB_DATA-OBJKY'. "Order number t_kschl = sy-lisel+34(4). CASE t_kschl. WHEN 'ZAVA'. "Delivery SET PARAMETER ID 'VL' FIELD itab_data-objky. CALL TRANSACTION 'VL03' AND SKIP FIRST SCREEN. WHEN 'ZBA0' OR 'ZBA1' OR 'ZBA2'. "Sales Order SET PARAMETER ID 'AUN' FIELD itab_data-objky. CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN. WHEN 'ZP00'. "Scheduling Agreement SET PARAMETER ID 'LPN' FIELD itab_data-objky. CALL TRANSACTION 'VA33' AND SKIP FIRST SCREEN. WHEN 'ZD00'. "Invoice SET PARAMETER ID 'VF' FIELD itab_data-objky. CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN. WHEN OTHERS. MESSAGE i999(b1) WITH 'Unrecognized Output Type!'. ENDCASE. WHEN 'ITAB_DATA-PARNR'. "Customer number t_kunnr = sy-lisel+39(10). SET PARAMETER ID 'KUN' FIELD itab_data-parnr. CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN. WHEN OTHERS. MESSAGE i999(b1) WITH 'Please click the Doc or Partner #.'. ENDCASE. CLEAR: t_kunnr, t_kschl, field_name. *&---------------------------------------------------------------------* *& Form print_itab_data *&---------------------------------------------------------------------* * Print out ITAB_DATA *----------------------------------------------------------------------* * -->T_ITAB_DATA Internal Table Data |