SAPFree referencePDF, Excel, Word exportSAP ECC 6.0All SAP ECC 6.0 tools

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.

Download:
Enhancement (SMOD)ModuleTransactionsDescriptionComponentsTypical 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.

Was this tool useful?

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.

ArchRay builder
Design the on-prem AI stack for SAP ECC 6.0: model, GPUs, RAG pipeline, guardrails
See memory, speed and cost as you swap parts, then export the diagram. Free, in your browser.
Open the builder

Keep exploring

Free tools

ERP fixes and how-tos

AI on your ERP

Integrations