SAP ECC Customer Exits by Module: SMOD Enhancements for MM, PP, PM, QM, SD and FI
A searchable list of commonly used SMOD customer exits on SAP ECC 6.0, grouped by MM, PP, PM, QM, SD and FI, with the transactions they affect and their components. Use it to shortlist the exit, then confirm the components in SMOD before creating a CMOD project.
| Enhancement (SMOD) | Module | Transactions | Description | Components | Typical use |
|---|---|---|---|---|---|
MM06E005 | MM | ME21N, ME22N, ME23N, ME31K, ME31L | Customer fields in purchasing document | Function exits EXIT_SAPMM06E_006 to _009, _012, _013, _016 to _018; subscreens SAPLXM06 0101 (header), 0111 (item); CI_EKKODB, CI_EKPODB | Add Z fields to PO header or item with a custom tab |
MEREQ001 | MM | ME51N, ME52N, ME53N | Customers' own data in purchase requisition | EXIT_SAPLMEREQ_* function exits; CI_EBANDB; subscreen SAPLXM02 0111 | Custom tab and fields on the requisition item |
M06B0001 | MM | ME51N, ME54N | Role determination for release of requisitions | Function exit | Workflow agent determination for PR release |
M06B0002 | MM | ME51N, ME52N | Changes to communication structure for requisition release | Function exit; communication structure CEBAN (extend with an append structure) | Release strategy by a custom characteristic, e.g. total value of all items or a Z field |
M06E0004 | MM | ME21N, ME22N, ME28, ME29N | Changes to communication structure for release of purchasing document | Function exit; structure CEKKO | PO release strategy by a derived value such as a Z cost center group |
M06E0005 | MM | ME28, ME29N | Role determination for release of purchasing documents | Function exit | Workflow agent determination for PO release |
MM06E003 | MM | ME21N, ME31K, ME31L | Number range and document number | Function exits | Choose a number range by plant or purchasing org |
MM06E004 | MM | ME21N, ME22N | Control import data screens in purchase order | Function exits | Control foreign trade import data screens |
ME590001 | MM | ME59, ME59N | Grouping of requisitions for PO split in ME59 | Function exit | Split automatic POs by a custom criterion |
MEVME001 | MM | MIGO, MB01 | GR default quantity calculation and over/underdelivery tolerance | Function exits | Custom proposed GR quantity or tolerance check |
MBCF0002 | MM-IM | MIGO, MB1A, MB1B, MB1C | Customer function exit: segment text in material document item | EXIT_SAPMM07M_001 | Default MSEG-SGTXT item text from other data |
MB_CF001 | MM-IM | MIGO and all goods movements | Customer function exit when updating a material document | EXIT_SAPLMBMB_001 (update task) | Write Z tables with the posted material document; no COMMIT |
LMR1M001 | MM-IV | MIRO, MIR7 | User exits in Logistics Invoice Verification | Function exits | Custom checks or defaults during invoice entry |
LMR1M003 | MM-IV | MIRO | Number assignment in Logistics Invoice Verification | Function exit | Own number range logic for invoice documents |
LMR1M005 | MM-IV | MIR7, MRBP | Logistics Invoice Verification: release parked document | Function exit | Control release of parked invoices |
MGA00001 | MM / LO-MD | MM01, MM02 | Material master (industry): checks and enhancements | EXIT_SAPLMGMU_001 | Validate material master fields on save, e.g. mandatory MRP fields by material type |
MGA00002 | MM / LO-MD | MM01 | Material master (industry): number assignment | Function exit | Build or check material numbers by type |
PPCO0007 | PP | CO01, CO02 | Exit when saving production order | EXIT_SAPLCOZV_001 | Checks or Z table updates when a production order is saved |
COZF0001 | PP | CO01, CO02 | Change purchase requisition for externally processed operation | Function exit | Set purchasing group or vendor on PRs from external operations |
COZF0002 | PP | CO01, CO02 | Change purchase requisition for externally procured component | Function exit | Adjust PRs created for non-stock components |
CONFPP05 | PP | CO11N, CO15 | PP order confirmation: customer specific enhancements when saving | Function exit | Checks or Z updates at confirmation save |
IWO10009 | PM | IW31, IW32 | PM order: customer check for save event | EXIT_SAPLCOIH_009 | Block save of maintenance orders missing data such as PM activity type |
IWO10002 | PM | IW31, IW32 | PM maintenance order: customer check for order release | Function exit | Prevent release until checks pass |
QQMA0014 | QM / PM | QM01, QM02, IW21, IW22 | Checks before saving a notification | EXIT_SAPMIWO0_020 | Mandatory damage or cause codes before save |
V45A0001 | SD | VA01, VA02 | Determine alternative materials for product selection | Function exit | Custom product substitution logic |
V45A0002 | SD | VA01 | Predefine sold-to party in sales document | Function exit | Default sold-to from user or terminal |
V60A0001 | SD | VF01, VF04 | Customer functions in the billing document | Function exits EXIT_SAPLV60A_* | Changes during billing document creation |
V61A0001 | SD | VA01, VF01 (pricing) | Customer enhancement: pricing | EXIT_SAPLV61A_001 | Exclude or modify conditions during pricing |
SDVFX001 | SD / FI | VF01, VFX3 | User exit header line in delivery to accounting | EXIT_SAPLV60B_001 | Change accounting document header data from billing |
SAPLF051 | FI | FB01, FBV0, FB60 | Workflow for FI (pre-capture, release for payment) | Function exits | Parked document and payment release workflow logic |
FEDI0001 | FI | IDoc inbound/outbound for FI | Function exits for EDI in FI | Function exits | Custom segments in FI EDI processing |
Component names are listed only where they are widely documented; open the enhancement in SMOD > Components to see the full list on your release. Activate an exit by assigning the enhancement to a project in CMOD and activating the project.
Inventory your active CMOD projects
Send us an extract of MODATTR and MODACT and we will return a list of active exits by module with notes on which have BAdI replacements.
Optional. The tool and every export work without this. No spam.
How to use it
Filter by module or transaction code. The Components column tells you what you will implement: a function exit (EXIT_<program>_<nnn>, whose Z include ZX... you code), a screen exit (a subscreen in a SAPLX... function group) or a table include (CI_...). Once you have a candidate, open it in SMOD, read the documentation, then create a project in CMOD, assign the enhancement, code the ZX include and activate the project. Exits do nothing until the CMOD project is active, which is the first thing to check when an exit seems not to fire.
Finding the exit for any transaction
The reliable manual route: in SE93 find the program behind the transaction (also in table TSTC), in SE38 or SE80 note the program's package, then in SMOD use F4 > Information system and search enhancements by that package. In code, search the program for CALL CUSTOMER-FUNCTION to see each exit number in context. Table MODSAP lists components per enhancement, MODSAPT holds the texts, and MODACT shows which CMOD project uses an enhancement. A breakpoint on the CALL CUSTOMER-FUNCTION statement in the debugger confirms the exit is reached for your scenario.
- SE93 or TSTC: transaction to program
- TADIR: program to package (DEVCLASS)
- SMOD F4 by package, or MODSAP by MEMBER
- CMOD: project, assignment, activation
Worked example: PR release by a custom field
A plant wants requisitions over a threshold to need an extra approval only when the Z field ZZCAPEX on EBAN is set. Add ZZCAPEX to communication structure CEBAN with an append structure, create a characteristic on CEBAN-ZZCAPEX, then implement M06B0002, copying the EBAN value into the communication structure. Add the characteristic to the release class (CL20N / CL24N) and the strategies in SPRO. M06E0004 does the same for purchase orders with CEKKO. For PO custom tabs, MM06E005 with CI_EKKODB and CI_EKPODB is the standard route.
Version notes and gotchas
On ECC 6.0 many SMOD exits have BAdI successors: ME_PROCESS_PO_CUST for purchase order logic, MB_DOCUMENT_BADI next to MB_CF001, WORKORDER_UPDATE next to the PPCO and IWO10 exits. Both can be active, so check both when tracing behaviour. Function exits run in the calling program's context; MB_CF001 runs in the update task, so no dialog messages and no COMMIT. A CMOD project with several enhancements activates or deactivates as a unit, which can surprise teams that transport one exit at a time.
Frequently Asked Questions
What is the user exit for a purchase order in SAP?
MM06E005 (customer fields in purchasing document) is the main one for custom PO header and item fields and tabs in ME21N. MM06E003 handles number ranges and M06E0004 the release strategy communication structure CEKKO. On ECC 6.0, BAdI ME_PROCESS_PO_CUST is often the better choice for checks and field changes.
Which user exits support PR release strategy?
M06B0002 lets you change the communication structure CEBAN used by requisition release strategies, so a custom characteristic can drive strategy determination. M06B0001 handles role determination for release workflow. The PO equivalents are M06E0004 (CEKKO) and M06E0005.
What is the user exit for the material master?
MGA00001 (material master industry: checks and enhancements) with function exit EXIT_SAPLMGMU_001 is the usual exit for validations at save in MM01 and MM02. MGA00002 covers number assignment. BAdI BADI_MATERIAL_CHECK is the BAdI alternative for checks.
How do I check if a user exit is active?
In CMOD, display the project that contains the enhancement and check its status is active; table MODATTR holds project attributes and MODACT maps projects to enhancements. Also check the ZX include actually has code. Set a breakpoint at the CALL CUSTOMER-FUNCTION statement to confirm it is reached.
If you want developers to ask your ECC system which exits are active and what the ZX includes do, privately on your own servers, we can build that.
Related Tools
SAP ECC Enhancement Transactions and Exit Tables Reference (SMOD, CMOD, SE18, MODSAP, SXC_EXIT)
Lookup table of the transactions, tables and classes used to find, implement and audit customer exits, BAdIs and enhancement implementations on SAP ECC 6.0.
SAPSAP ECC Classic BAdI Definitions Reference (MIGO, ME21N, MIRO, Deliveries, PM Orders)
Reference table of widely used BAdI definitions on SAP ECC 6.0 with interface, key methods, transactions and typical use, plus how to find a BAdI and where error messages are allowed.
SAPSAP ECC SD User Exit Forms Reference (MV45AFZZ, RV60AFZZ, MV50AFZ1)
Lookup table of the classic SD user exit FORM routines for sales orders, deliveries and billing on SAP ECC 6.0: include, transaction, when it fires, structures available and the usual gotcha.
More SAP tools
See all- SAP ECC Private AI Layer Blueprint Generator
- SAP ECC AI Assistant Sizing and Value Calculator
- SAP ECC Background Job Tables Reference (TBTCO, TBTCP, Job Status Codes)
- SAP ECC Output Determination Tables and Codes Reference (NAST, TNAPR, NACE)
- SAP ECC Movement Type Configuration Tables Reference (T156, T156T, T157D)
- SAP ECC Stock Type and Location Transfer Movement Type Matrix
- SAP ECC Movement Type to OBYC Transaction Key and GBB Account Modifier Reference
- SAP ECC 6.0 Enhancement Packages and Maintenance Dates Reference (EHP1 to EHP8, 2027, 2030, 2033)
- SAP ECC ORDERS05 IDoc Segments and Qualifiers Reference
Keep exploring
Free tools
- SAP ECC Enhancement Transactions and Exit Tables Reference (SMOD, CMOD, SE18, MODSAP, SXC_EXIT)Lookup table of the transactions, tables and classes used to find, implement and audit customer exits, BAdIs and enhancement implementations on SAP ECC 6.0.
- SAP ECC Private AI Layer Blueprint GeneratorFill in your version, database, hosting and use cases to get an architecture plan for adding a private, on-prem AI assistant to SAP ECC 6.0, with components, security controls and a three-phase rollout.
- SAP ECC Classic BAdI Definitions Reference (MIGO, ME21N, MIRO, Deliveries, PM Orders)Reference table of widely used BAdI definitions on SAP ECC 6.0 with interface, key methods, transactions and typical use, plus how to find a BAdI and where error messages are allowed.
ERP fixes and how-tos
- SAP QM QA32: user exits, enhancements and standard lot reportsOptions to customise the QA32 inspection lot list, how to find user exits and BAdIs, and the standard SAP QM lot and results reports you can use instead.
- SAP PP and MM Enhancement Examples: User Exits, BAdIs and Enhancement SpotsPractical SAP PP and MM enhancement examples: user exits, BAdIs such as ME_PROCESS_PO_CUST and WORKORDER_UPDATE, how to find them and a PO validation sketch.
- How to add AI to SAP ECC 6.0 on-prem without moving data to a cloudReference architecture for a private on-prem AI assistant on SAP ECC 6.0: RFC and BAPI reads, SLT replica, retrieval index, local LLM, permission mirroring.
Integrations
- How to add an AI chatbot to SAP ECC 6.0Add an AI chatbot to SAP ECC 6.0 for planners, buyers and customers: grounded in live data, role-aware, embeddable in portals, and able to run fully on-prem.
- How to add AI agents to SAP ECC 6.0How to add AI agents to SAP ECC 6.0: a tool layer over BAPIs, RFC and IDocs, human approval before any posting, and an on-prem model that never leaves your network.