How To trigger IDOC LOIPRO when PO Changed or Created

Trigger IDOC LOIPRO: SAP Process Order IDoc in detail is the main topic of the following SAP ABAP Tutorial.

  • First, the SAP Process Order IDoc structure LOIPRO will be detailed. (covered in Part 1)
  • Second how to fill the extra segment of an IDoc LOIPRO extension (covered in Part 1)
  • Third, the easiest way to Generate Outbound IDoc LOIPRO for SAP PO. (covered in Part 1)
  • Last, How To trigger IDOC LOIPRO when PO Changed/Created.(Part 2)

How To trigger IDOC LOIPRO when PO Changed/Created

In SAP, Process Orders are assimilated to a Master Data. So there is no entry in NACE to trigger an Idoc when an order is updated.
Within the different ways to trigger to create an IDoc LOIPRO once a SAP Process Order is created or update is to implement a BADI. I found that it is the best way to do.

SAP Process Order BADIs

Try to implement the BADI WORKORDER_UPDATE (in SAP Tcode SE18)
Actually the BADI WORKORDER_UPDATE is the Business Add-In PM/PP/PS/PI Orders Operation: UPDATE

The others BADI for Process Order are:

BADI Description
WORKORDER_CONFIRM Business Add-In PM/PP/PS/PI Orders Operation: Confirm
WORKORDER_CONFIRM_CUST_SUBSCR Confirmation: Subscreen with Customer's Own Fields
WORKORDER_CONFIRM_EA_APPL Confirmation: Function Calls from EA-APPL
WORKORDER_DFPS_PIC_ATP Defense BADI for Availability Check
WORKORDER_DOCLINKS BAdI: Document Links (Production Orders)
WORKORDER_FINANCIALS Anbindung FIN Add-On an Fertigungs- und Proze aufrag
WORKORDER_GOODSMVT Business Add-In PM/PP/PS/PI Orders: Automatic Goods Movement
WORKORDER_INFOSYSTEM BAdI: PP and PI Order Information System
WORKORDER_MODIFY_SCREEN Screen Adjustments
WORKORDER_PISHEET Business Add-In PM/PP/PS/PI Orders Operation: Discarding of
WORKORDER_REWORK Business Add-In PP Orders Operation: Rework
WORKORDER_UPDATE Business Add-In PM/PP/PS/PI Orders Operation: UPDATE

SAP Process Order BADI WORKORDER_UPDATE

The first step is to define the list of BADI WORKORDER_UPDATE methods. Here the full list of the methods available:

Method Description
ARCHIVE_OBJECTS Archiving Additional Objects
AT_DELETION_FROM_DATABASE Order is deleted from the database (archiving)
AT_SAVE Save Order Time: Dialog
CMTS_CHECK Check: Configurable Warehouse Order Allowed
INITIALIZE Initialization when Importing/Creating Order
IN_UPDATE Save Order Time: Update
NUMBER_SWITCH Swap Tempory Order Numbers with Final Order Numbers
BEFORE_UPDATE Save Order Time: Before Calling Update
AT_RELEASE Release Order Time: After SAP Checks Before Release
REORG_STATUS_ACT_CHECK Reorganization of Order: Status Check
REORG_STATUS_ACTIVATE Reorganization of Order: Follow-Up Action After Status Set
REORG_STATUS_REVOKE Reorganization of Order: Follow-Up Action After Status Reset

Method AT_SAVE – trigger IDOC LOIPRO

To trigger the LOIPRO01 IDoc when SAP Process Order/ Work Order is modified or created, we will rewrite the method AT_SAVE. This method is triggered when the user clicks on SAVE button on PO/WO SAP Tcodes ( COR1/ COR2 ).
The AT_SAVE takes as input IS_HEADER_DIALOG Order Header in Dialog Structure. It is quite enough because it has all the keys to access the SAP PO.

An important point, you must put wrapper you ABAP code in a Function Module and call the processing in BACKGROUND TASK AS SEPARATE UNIT DESTINATION ‘NONE’.
This call will wait until the Main SAP GUI Process for Saving before triggering the IDOC.
The advantages are:

  1. Wait until a COMMIT before triggering the LOIPRO IDoc
  2. Avoid blocked Processing Order – conflict
  3. keep the main flow of the SAP standard Process unchanged
  4. Avoid Stopping Saving the SAP PO if error occurs for IDoc Generation.

An ABAP Sample for creating LOIPRO in AT_SAVE Method would be:

Check this article about Statement SUBMIT is not allowed in this form which explain how to use the IN UPDATE TASK.