Skip to Content
Author's profile photo Caetano Almeida

BAdIs and Exits for production and process orders

As I see daily on the Manufacturing PP space threads asking for exits or BAdis for specific scenarios, I decided to create this list with the most important user-exits and BAdIs that are available for production and process orders (if you are looking for BAdIs for MRP, check the blog BAdIs for MRP).

Below you can find the main BAdIs for production and process orders and the methods available for each one:

  • WORKORDER_UPDATE: This BAdI is called whenever the order is changed, for example, on transaction CO02 or during capacity leveling
    • 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

  • WORKORDER_CONFIRM: This BAdI is called during the order confirmation for additional checks.
    • AT_SAVE – Confirm Order, Time: Dialog
    • BEFORE_UPDATE -Confirm Order, Time: Before Update
    • IN_UPDATE – Confirm Order, Time: Update
    • AT_CANCEL_CHECK – Confirm Order, Time: Check if Cancellation is Possible
    • INDIVIDUAL_CAPACITY – Confirm Order: Preassignment Individual Capacity

  • WORKORDER_GOODSMVT: This BAdI can be used to manipulate goods movements that are posted during an order confirmation
    • BACKFLUSH Confirmation: Backflush
    • GOODS_RECEIPT Confirmation: Automatic Goods Receipt
    • MANUAL_GOODS_RECEIPT Manual Goods Receipt for Order
    • IM_CALLED Time after Inventory Management is Called
    • PICKLIST Pick list
    • GM_SCREEN_LINE_CHECK Goods Movement Overview: Line Check
    • GM_SCREEN_OKCODE_CHECK Goods Movement Overview: OK Code Check
    • COGI_AUTHORITY_CHECK Postprocessing: Authorization Check
    • COGI_POST Postprocessing of Incorrect Goods Movements
    • COMPLETE_GOODSMOVEMENT Confirmation: Addition of User Input on Goods Movement
    • GM_WIPBATCH_PROPOSE Goods Movement WIP-Batch: Proposal
    • GM_WIPBATCH_CHECK Goods Movement WIP-Batch: Line Check


  • WORKORDER_REWORK: This BAdI is used on a rework scenario, in order to transfer outwards an additional yield when entering a backflush for PP orders. This is added
    • GET_REWORKED_QUANTITY Returns the Reworked Yield

  • WORKORDER_INFOSYSTEM: This Business Add-In can be used to fill additional (customer-specific) fields in the order info system (transactions COOIS, COOISPI, COHV…) for production orders and process orders.
    • ORDER_TABLES_MODIFY Processing of order tables
    • PLANNED_ORDER_TABLES_MODIFY Processing of planned order tables
    • AT_SELECTION_SCREEN Is called in the WBS for the PPIO_ENTRY selection screen
    • AT_OUTPUT_SCREEN Is called for every action on the output list
    • OVERVIEW_MODIFY Processing of the object overview
    • TABLES_MODIFY_LAY Processing of Order and Planned Order Tables
    • DETAIL_LIST_LAY Process Detail Lists
    • OVERVIEW_TREE_LAY Process Layout-Based Object Overview
    • AT_OUTPUT_SCREEN_LAY Call When Action is Carried Out on the Output List
  • WORKORDER_DOCLINKS: This BAdI can be used to manipulate the order document links.
    • MAINTAIN_DOCLINKS Document Link Maintenance

  • WORKORDER_PISHEET: This BAdI enables you to discard browser-based PI sheets directly from  the process order.
    • PI_SHEET_DISCARD – Discard PI Sheet
    • PI_SHEET_DISCARD_DOWN – Discard PI Sheet/Download to External System

  • WORKORDER_CONFIRM_CUST_SUBSCR: This BAdI enables you to change the subscreen for customer-specific fields in the time ticket (single-screen entry CO11N/COR6N and in the order header confirmation CO15/CORK).
    • GET_SUBQTY_LAYOUTS – Determine Name of Existing Quantity Layouts

    • CHECK_SUBQTY_LAYOUT – Check for Layout for Existence of Subdivided Quantities

    • GET_CONF_CUSTOMIZING – Customizing Confirmation Parameters

    • CHECK_SUBQTY_POSTED – Check Whether Subdivided Quantities Confirmed

    • PUT_DATA_TO_QM_SUBSCR – Transfer Data to Screen Enhancement for QM

    • PUT_OK_CODE_TO_SUBSCR – Transfer OK Code to Screen Enhancement

    • PUT_DATA_TO_SUBSCR – Transfer Data to Screen Enhancement

    • GET_DATA_FROM_SUBSCR – Adopt Data from Screen Enhancement

Here are the user-exits available for PP order processing:

  • PPCO0001
    • EXIT_SAPLCOBT_001 – User Exit PP Order Processing (Non-Order-Type-Specific)
  • PPCO0002
    • EXIT_SAPLCORE_001   Set deletion flag
    • EXIT_SAPLCORE_002   Set deletion indicator
    • EXIT_SAPLCORE_003   Technically complete
    • EXIT_SAPLCORO_001   Check exit for function “Set deletion flag”
    • EXIT_SAPLCORO_002   Check exit for function “Set deletion indicator”
  • PPCO0003
    • EXIT_SAPLCOEXT_001 – Check Exit for Production Order Change from Assembly Order
  • PPCO0004
    • EXIT_SAPLCORE_004 – Mass Processing of Production Orders: General Sort Exit
  • PPCO0005
    • EXIT_SAPLCOSD_001 – Storage Location/Backflushing on Order Creation

  • PPCO0006
    • EXIT_SAPLCOZF_003 – Exit for Predefining Fields in the Order Header
  • PPCO0007
    • EXIT_SAPLCOZV_001 – User Exit for Checking or Changing Header Fields During Order-Type-Specific
  • PPCO0008
    • EXIT_SAPLCOMK_006 – Enhancement in the adding and changing of components
  • PPCO0009
    • EXIT_SAPLCOSF_001 – Customer Exit: Goods Receipt for Production Order
  • PPCO0010
    • EXIT_SAPLCOCOM10_001 – Enhancement in make-to-order production – Unit of measure
  • PPCO0012 – Production Order: Display/Change Order Header Data
    • EXIT_SAPLCOKO1_001 – Transfer of Order Data to Customer Enhancement
    • EXIT_SAPLCOKO1_002 – Transfer of Data Changes from Customer Enhancement
  • PPCO0013
    • EXIT_SAPLCOMK_008 – Change Priorities for Selection Criteria for Batch Determination
  • PPCO0014
    • EXIT_SAPLNWDB_001 – Select process orders for external relationships
  • PPCO0015
    • EXIT_SAPLCOSD_002 – Customer Exit: Additional Attributes Document Link
  • PPCO0016
    • EXIT_SAPLCODM_001 – User Exit: Generate Document Links from Master Data
  • PPCO0017
    • EXIT_SAPLCODD_001 – User Exit: Document Links Dialog Processing
  • PPCO0018
    • EXIT_SAPLCOKO1_004 – Check whether changes to order header/item are allowed in th
  • PPCO0019
    • EXIT_SAPLCOVG_001 – User Exit for Checks of Operation Changes in the Production
  • PPCO0020 – Process order: Display/change order header data
    • EXIT_SAPLCOKO_005 – Transfer of Order Data to Customer Enhancement
    • EXIT_SAPLCOKO_006 – Transfer of Data Changes from Customer Enhancement
  • PPCO0021
    • EXIT_SAPLCOZR_003 – Release Control for Automatic Batch Determination: Handling
  • PPCO0022
    • EXIT_SAPLCOTX_001 – Determination of Production Memo

  • PPCO0023
    • EXIT_SAPLCOMK_014 – Checks Changes to Order Components

User-exits called during the process order confirmation:

  • CONF0001  Enhancements in order confirmation
    • EXIT_SAPLCORU_001 – Order Confirmation: Deactivation of Functions
  • CONFPI01
    • EXIT_SAPLCORF_401 – Process order conf.: Calculate cust.specific default values
  • CONFPI02
    • EXIT_SAPLCORF_402 – Process Order Confirmation: Customer-Specific Input Check Wi
  • CONFPI03 
    • EXIT_SAPLCORF_403 – Process Order Conf.: Customer-Specific Checks after Operation
  • CONFPI04 
    • EXIT_SAPLCORF_404 – Process Order Confirmation: Customer-Specific Input Checks
  • CONFPI05
    • EXIT_SAPLCORF_405 – Process order conf.: Cust. spec. enhancements when saving
  • CONFPI06
    • EXIT_SAPLCORF_406 – Process order confirmation: Actual data transfer

User-exits called during the process order confirmation:

  • CONFPP01
    • EXIT_SAPLCORF_101 – PP order conf.: Determine customer specific default values
  • CONFPP02 
    • EXIT_SAPLCORF_102 – PP order conf.: Customer specific input checks 1
  • CONFPP03 
    • EXIT_SAPLCORF_103 – PP order conf.: Cust. specific check after op. selection
  • CONFPP04 
    • EXIT_SAPLCORF_104 – PP order conf.: Customer specific input checks 2
  • CONFPP05 
    • EXIT_SAPLCORF_105 – PP order conf.: Customer specific enhancements when saving
  • CONFPP06 
    • EXIT_SAPLCORF_106 – PP Order Confirmations: Actual Data Transfer

  • CONFPP07 – Single Screen Entry: Inclusion of User-Defined Subscreen
    • EXIT_SAPLCORU_S_100 – Transfer Data from SAPLCORU_S to Customer-Defined Screen
    • EXIT_SAPLCORU_S_101 – Return Data from Customer-Defined Screen to SAPLCORU_S

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Thiago Felipe Silveira
      Thiago Felipe Silveira


      Nice work!


      Author's profile photo Former Member
      Former Member

      Hi Caetano,

      Very useful this list!

      Thank you for sharing.


      Author's profile photo Former Member
      Former Member


      Nice topic.

      But i am confused to call the badi method,how to implement?


      Author's profile photo Caetano Almeida
      Caetano Almeida
      Blog Post Author

      Hello Matthew

      You must create your own BAdI implementation on transaction SE18, then you can add the code on the method.


      Author's profile photo Former Member
      Former Member

      HI Caetano

      Fox example,The BADI WORKORDER_INFOSYSTEM method GET_REWORKED_QUANTITY,there are four parameters,I_ORDER_HEADER、I_OPERATION、I_PREDEC_OPERATION、CH_REWORKED_QUANTITY,the rework order yield how to update the original production order?I don't know what the fields of original production order should be updated.

      Can u give same advice?



      Author's profile photo Caetano Almeida
      Caetano Almeida
      Blog Post Author

      Hi Matthew

      You can find a detailed documentation about the BAdI on transaction SE18.

      If you have further questions, please open a thread describing the issue.


      Author's profile photo Sagar Mantri
      Sagar Mantri

      Dear Caetano,


      I want to create automatic settlement rule while creation process order using tcode COR1, I have tried IWO10027 but its not getting triggered through COR1. Could you please suggest any specific BADI/Enhancement for creation of settlement rule at time of creation of process order using COR1 ?




      Author's profile photo Rohan Malik
      Rohan Malik

      Hello Sagar,


      What was the solution you finally achieved ?




      Author's profile photo Ayub Pathan
      Ayub Pathan

      hello sir

      did u find the solution for that ??

      Author's profile photo Renald Alvin Bastin
      Renald Alvin Bastin

      Hi Caetano,

      Very useful details. Thank you for collating them here.


      Author's profile photo Ankit Gusain
      Ankit Gusain



      I am still unable to find how to update qndat via COR6 T-code. Please suggest.

      Author's profile photo Anil Kumar Aleti
      Anil Kumar Aleti


      this is a quite useful list of the user Exits in one place


      i was looking in particular for the exit to add components into a PP Order: PPCO0008

      many thanks !

      Author's profile photo Erick romero
      Erick romero

      I need to change some header data for Production orders when i execute the /SAPAPO/RRP3 transaction i check the conversion indicator an click on SAVE button i need one USER EXIT or method to change data

      Author's profile photo Jason Lin
      Jason Lin

      Nice,thanks a lot.

      Author's profile photo Ayub Pathan
      Ayub Pathan

       can anyone please suggest me the user exit by using which we can prohibit the issue of SFG to next higher level production order unless SFG production order is settled.

      Author's profile photo Scott Zheng
      Scott Zheng

      Hi Almeida,

      Really awesome sharing! That's so helpful for ABAPer who wanna work deeper in PP module.


      Author's profile photo Caetano Almeida
      Caetano Almeida
      Blog Post Author

      Thanks for your feedback!

      Author's profile photo Beth Ranly
      Beth Ranly

      Looking for a user exit when doing the goods receipt on the production order.  Currently in OBYC, the offset to inventory is one gl account.  Client would like to split the material valuation and credit material, labor and overhead based on the standard.  Is this possible?