Over the years SAP has developed different customer modification technologies. SAP consultants should ideally be familiar with all of them because they can be helpful to customize the system to fit the specific processes requirement. Modifications on SAP standard programs require an access key and are not recommended in the first place because they will lead to issues during upgrades on new versions.

Here is an overview about different customer modification technologies:
- User Exits
User-Exits let you insert custom programs into the standard workflow at specific times in the generated application. User-Exits must be created as subprograms (FORM routines) in includes. They are considered as one oft the oldest customer modification technologies in sap.
- Customer Exits (Transaction CMOD and SMOD)
The Customer-Exit are implemented through function modules. They are predefined extensions that you can customize with customer-specific logic. You can find these functions in the table MODSAP.
- BAdIs
A BAdI (Business Add-In) is an object-oriented extension option and a more advanced type of extension. Its key feature is to provide a mechanism to modify the functionality of a precisely defined business function (BAPI) without modifying the delivered source code.
- Enhancement Points
The Enhancement Framework allows modification-free changes to standard SAP software. This extension technology was introduced around 2005. With this technology, global classes, function modules, Web Dynpro ABAP components and all source code objects can be extended using system-provided implicit extension options.
Enhancement points can be divided into:
- Implicit Extension Options: These are provided by the framework and exist without extra preparation by a developer. Examples include the start and end of methods, form routines, function modules, and includes.
- Explicit Extension Options: These need to be explicitly added to the source code. They are created in one system and must be shared with developers in other systems through extension spots.
In this example we want to add a validation check routine by using an implicit enhancement point to a standard BAPI function. The BAPI „BAPI_BANK_GETDETAIL“ provides bank data by reading the table bnka that contains multiple bank master data records. Here we want to make sure that entries contain a valid SWIFT code or otherwise lead to an error message in the program processing.

First of all we need to select „Enhance Source Code (Shift+F4)“ and select „Show implicit Enhancement Options“ to see the implicit default enhancement points in the SE80 editor.

Now it is possible to change an implicite enhancement code point at the beginning of the BAPI routine.

We need to define a name for that enhancement point.


Now the validation check code routine can be added.

Futhermore the enhancement point need to be enabled to work. This can be done in the enhancement implementation settings (transaction SE19) or by double clicking the enhancement spot name in SE80. You will get forwarded to that transaction SE19. It is also possible to check and enable the enhancement in the SE80 itself.

The testing for that enhancement point routine can be done by running a program that calls the BAPI „BAPI_BANK_GETDETAIL“. When an external breakpoint is set on the enhancement point in BAPI_BANK_GETDETAIL it will open the debugger on runtime when the enhancement point modification is being used as intented.


