ABAPadvanced
User Exits, Customer Exits & BAdIs
The evolution of SAP's enhancement techniques for injecting custom logic into standard programs without modifying SAP code.
Enhancement strategy is one of the most tested topics for experienced ABAP consultants because it directly touches upgrade safety - the central promise of "never modify SAP standard code" that keeps a system upgradeable. Interviewers want to hear the historical progression and, more importantly, when to use which technique today.
User exits are blank forms SAP leaves for you to fill in at fixed spots in a printed contract; BAdIs are more like plug sockets built into the wall at design time - many different appliances (implementations) can be plugged in independently without rewiring the house.
Key Concepts
1
User exits are the oldest form - empty subroutines (FORM includes, typically named USEREXIT_*) planted by SAP inside standard programs, called via PERFORM ... IN PROGRAM, that a developer fills in through customer includes. They are modification-adjacent (technically not a core object change, but tightly coupled to a specific program) and were mostly used in SD, MM, and PP before customer exits took over. Customer exits (SMOD/CMOD) formalized this into function module exit slots grouped into enhancements assigned to projects in CMOD, giving named import/export/tables parameters analogous to a real function module interface, and were the standard for R/3 and early ECC.
FORMUSEREXIT_*PERFORM ... IN PROGRAM
2
BAdIs (Business Add-Ins) are the modern, object-oriented replacement, defined as an interface implemented by one or more classes, activated via SE18/SE19. Classic BAdIs allowed only one active implementation per filter value; the newer "new BAdI" framework (ENHANCEMENT SPOT) supports multiple simultaneously active implementations, each with its own filter and fallback class, which is far more flexible for parallel enhancement projects. Kernel-based enhancement points and enhancement sections (ENHANCEMENT-POINT/ENHANCEMENT-SECTION) let SAP mark specific lines inside standard code as explicitly enhanceable, giving a controlled way to inject logic mid-program without a true core modification.
SE18SE19ENHANCEMENT SPOTENHANCEMENT-POINTENHANCEMENT-SECTION
3
A senior answer also covers implicit enhancement points (available at the start/end of nearly every method, form, and program automatically) versus explicit ones SAP deliberately placed, and stresses that all these techniques survive SAP upgrades because they live in the customer namespace, unlike direct SAP object modifications tracked via SPAU/SPDD during upgrades.