SAP Process Order Idoc Outound: Sample ABAP is the last part of LOIPRO IDoc.
It will covers a sample ABAP code how to generate LOIPRO IDoc including preparing Data and calling the CLOI* BAPI to create a LOIPRO Idoc.
Table of Contents
SAP Process Order Idoc Outound: Trigger LOIPRO IDoc when Save
Check more detail on How To trigger IDOC LOIPRO when PO Changed/Created.
The BADI to be implemented is WORKORDER_UPDATE and the method is AT_SAVE
METHOD if_ex_workorder_update~at_save. " SAP Process Order Idoc Outound when PO/WO Saved CALL FUNCTION 'ZIDOC_CREATE_ZLOIPRO' IN BACKGROUND TASK AS SEPARATE UNIT DESTINATION 'NONE' EXPORTING message_type = 'ZLOIPRO' aufnr = is_header_dialog-aufnr werks = is_header_dialog-werks matnr = is_header_dialog-matnr. ENDMETHOD.
SAP Process Order Idoc Outound: Prepare Data
Before calling the standard function CLOI_MASTERIDOC_CREATE_LOIPRO to create the LOIPRO01 IDoc for SAP Process Order Master, some structure must be filled.
Get here How to Get SAP Process Order Status
Here a sample ABAP code to fill the ORDER_DATA TYPE CLOI_AFKO_TAB
DATA: lt_order_data TYPE cloi_afko_tab. DATA: ls_order_data TYPE cloi_afko_struct. *----------------------------------------------------------* * " Fill Order Data for SAP Process Order Idoc Outound *----------------------------------------------------------* TYPES: BEGIN OF ty_jest, stat LIKE jest-stat , END OF ty_jest. " Retrieve PO Master Data DATA: ls_afko TYPE afko. DATA: ls_aufk TYPE aufk. DATA: lt_afpo TYPE TABLE OF afpo. DATA: lt_jest TYPE TABLE OF ty_jest. DATA: ls_jest TYPE ty_jest. DATA: lt_affl TYPE TABLE OF affl. DATA: ls_affl TYPE affl. DATA: lt_afab TYPE TABLE OF afab. DATA: ls_afab TYPE afab. DATA: lt_afvv TYPE TABLE OF afvv. DATA: ls_afvv TYPE afvv. " Tables and structures for BAPI mapping DATA: lt_jstk TYPE cloi_jstk_tab. DATA: ls_jstk LIKE LINE OF lt_jstk. DATA: lt_affl_tab TYPE cloi_affl_tab. DATA: ls_affl_str TYPE cloi_affl_struct. DATA: lt_afab_tab TYPE cloi_afab_tab. DATA: ls_afab_str TYPE cloi_afab_struct. DATA: lt_afvv_tab TYPE cloi_afvo_tab. DATA: ls_afvv_str TYPE cloi_afvo_struct. * AFKO: Order Header Data PP Orders SELECT SINGLE * FROM afko INTO ls_afko WHERE aufnr = aufnr. * AUFK: Order master data SELECT SINGLE * FROM aufk INTO ls_aufk. " OBJNR * JEST: Work Order Status SELECT stat FROM jest INTO TABLE lt_jest WHERE objnr = ls_aufk-objnr. * AFPO: AFPO SELECT * FROM afpo INTO TABLE lt_afpo WHERE aufnr = aufnr. * AFFL: Work order sequence SELECT * FROM affl INTO TABLE lt_affl WHERE aufpl = ls_afko-aufpl. * AFVV:DB structure of the quantities/dates/values in the operation IF NOT lt_affl[] IS INITIAL. SELECT * FROM afvv INTO TABLE lt_afvv FOR ALL ENTRIES IN lt_affl WHERE aufpl = lt_affl-aufpl AND aplzl = lt_affl-aplzl. ENDIF. *----------------------------------* * Fill Data to BAPI input *----------------------------------* MOVE-CORRESPONDING ls_afko TO ls_order_data. MOVE-CORRESPONDING ls_aufk TO ls_order_data. ls_order_data-objnr = ls_aufk-objnr. LOOP AT lt_jest INTO ls_jest. CLEAR ls_jstk. ls_jstk-stat = ls_jest-stat. APPEND ls_jstk TO lt_jstk. ENDLOOP. LOOP AT lt_affl INTO ls_affl. CLEAR ls_affl_str. REFRESH lt_afvv_tab. MOVE-CORRESPONDING ls_affl TO ls_affl_str. LOOP AT lt_afvv INTO ls_afvv WHERE aufpl = ls_affl-aufpl AND aplzl = ls_affl-aplzl. CLEAR ls_afvv_str. MOVE-CORRESPONDING ls_afvv TO ls_afvv_str . APPEND ls_afvv_str TO lt_afvv_tab. ENDLOOP. ls_affl_str-t_afvo[] = lt_afvv_tab[]. APPEND ls_affl_str TO lt_affl_tab. ENDLOOP. LOOP AT lt_afab INTO ls_afab. CLEAR ls_afab_str. MOVE-CORRESPONDING ls_afab TO ls_afab_str. APPEND ls_afab_str TO lt_afab_tab. ENDLOOP. ls_order_data-t_afpo = lt_afpo[]. ls_order_data-t_jstk = lt_jstk[]. ls_order_data-t_affl = lt_affl_tab[]. ls_order_data-t_afab = lt_afab_tab[]. APPEND ls_order_data TO lt_order_data.
Here an other interesting SCN article Creation of production order IDOCs to a given selection
SAP Process Order Idoc Outound: Create LOIPRO IDOC
Once the table ORDER_DATA is populated, the CLOI_MASTERIDOC_CREATE_LOIPRO can be called to generate the SAP Work Order Idoc ( LOIPRO01).
" Call the SAP Process Order Idoc Outound IDOC LOIPRO01 Creation CALL FUNCTION 'CLOI_MASTERIDOC_CREATE_LOIPRO' EXPORTING opt_sys = lv_logsys message_type = message_type TABLES order_data = lt_order_data.
You may also like:
Check also this article on Automation of LOIPRO outbound IDOCS on sap.blog.com