Developer ToolsFree checklistPDF, Excel, Word exportSAP ECC 6.0All SAP ECC 6.0 tools

SAP ECC User Exit Implementation Checklist (CMOD and SMOD)

This checklist covers finding, choosing and implementing a user exit in SAP ECC 6.0 with SMOD and CMOD, from locating the right exit to activation and transport. It also helps decide when a BAdI, a Business Transaction Event or an enhancement point is the better hook.

0%

0 of 29 items complete

4 critical items still open - these are the highest-risk gaps.

Download checklist:

Find

Decide

Implement

Activate and transport

Test and document

Critical items are where most user exit tickets come from: an exit that is never reached, an enhancement already used in another project, an inactive project and commits inside exits.

Need an enhancement inventory?

We can list active CMOD projects, BAdI implementations and form exits in your ECC system and map them for your next upgrade.

Optional. The tool and every export work without this. No spam.

Was this tool useful?

How customer exits work in ECC

SAP delivers enhancements in SMOD. Each enhancement groups components: function exits (called with CALL CUSTOMER-FUNCTION 'nnn', which resolves to function module EXIT_<program>_nnn), screen exits, menu exits and table enhancements through CI_ includes. You use them by creating a project in CMOD, assigning one or more enhancements and writing code in the ZX includes inside the exit function modules. An enhancement can be assigned to only one project, so two teams cannot each own a separate project for the same exit. SAP stores enhancement components in MODSAP and project assignments in MODACT.

  • SMOD: SAP enhancement definitions (display only for customers)
  • CMOD: customer projects that implement them
  • Code goes in ZX includes, so it survives upgrades without SPAU modification adjustment

User exit vs BAdI vs BTE

Form user exits are FORM routines in SAP includes such as MV45AFZZ in sales orders; changing them is a modification and needs an SSCR object key. Customer exits through CMOD need no key and survive upgrades cleanly, but allow only one project per enhancement. Classic and kernel BAdIs are object-oriented, can have several implementations and filters, and are SAP's preferred approach since the 2000s. Business Transaction Events, maintained in FIBF, are the FI equivalent with process and publish-and-subscribe interfaces. When a BAdI or BTE exists at the same point, use it.

Worked example: finding an exit for VA01

System > Status in VA01 shows program SAPMV45A, package VA. Searching SMOD by package VA or searching SAPMV45A for CALL CUSTOMER-FUNCTION lists candidate function exits, while the form routines in MV45AFZZ (such as USEREXIT_SAVE_DOCUMENT_PREPARE) are the classic sales order user exits. For a check on save, the form exit is common but needs an SSCR key; a BAdI found with the CL_EXITHANDLER breakpoint may avoid that. Whatever you pick, prove with a breakpoint that the hook is reached with the data you need.

Common mistakes

Writing code in the include but forgetting to activate the CMOD project. Assigning an enhancement that another project already uses, then wondering why the project will not save. Issuing COMMIT WORK or popups inside an exit called during save, which breaks the logical unit of work. Leaving code unguarded so it runs for every company code. Not transporting the project and the include together.

Frequently Asked Questions

How do I find a user exit in SAP?

Get the program from System > Status, find its package, then search SMOD by package or SE84 under Customer Exits. Search the program for CALL CUSTOMER-FUNCTION to see exits actually called. For BAdIs, set a breakpoint in CL_EXITHANDLER=>GET_INSTANCE. Confirm with a breakpoint that the exit fires when you need it.

How do I activate a user exit in SAP?

In CMOD, open your project, check that the enhancement is assigned and the components (ZX include, screens) are active, then press Activate project. The exit runs only when the project is active. Transport the project and include together and check the project status in the target system.

What is the difference between a user exit and a BAdI?

A customer exit is a function module hook implemented once per enhancement through a CMOD project. A BAdI is an object-oriented hook that can have several implementations, filters and clean interfaces. Form user exits are routines in SAP includes and count as modifications. Prefer a BAdI or BTE when one exists.

Can two CMOD projects use the same enhancement?

No. An SMOD enhancement can be assigned to only one CMOD project at a time. If another project already holds it, add your code to that project's include and coordinate with its owner, or move the logic into a shared Z function or class called from the single include.

If you want developers to ask your ECC system which exits and enhancements are active, and where, in plain English on your own servers, we can set that up.

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