Introduction
Before discussing the difference between User Exits and Customer Exits in SAP ABAP, let’s have a short introduction of the two.
The enhancement allows the user to add their functionalities to the SAP standard applications without modifying the original application. Enhancement Framework is used to modify the standard SAP behavior as per the customer requirements. There are different ways to add custom functionalities in standard codes. User Exit and Customer Exit are among them.
User Exits
User exits are implemented in the form of subroutines and hence also called FORM EXITs. They are collected in Include and are attached to the SAP standard program. They are empty subroutines where one can fill their source code. They are the type of system enhancements originally developed for R/3 SD(Sales and Distribution). Technically they modify the existing code.
Syntax:
FORM USEREXIT_XXXX
INCLUDE ZZUSEREXIT_XXXX
ENDFORM.
Customer Exits
Customer exits act as hooks where one can hang their new functionalities. These are created for specific programs, screens, and menus within the standard applications. Technically, they are enhancements as they provide add-on functionality. They are used for all modules like MM, SD, FICO, PP etc.
There are 3 types of Customer Exits:
Function Module Exits
It is implemented as a call to the function module. It allows the developer to add code in include that is implemented in a function module at a specific location in an SAP application program.
Syntax: CALL CUSTOMER-FUNCTION ‘910’
Screen Exits
It allows the customers to add fields to a screen in the SAP program via sub-screen which is called within standard screen’s flow logic.
Syntax: CALL CUSTOMER-SUBSCREEN CUSTOM_SRC
Menu Exits
These are implemented by SAP and are reserved menu entries in the GUI interface. It allows adding functionalities to menus.
Syntax: +CUS (additional item in GUI status)
Now, let’s have a look at their difference.
Difference between User Exits and Customer Exits
User Exits | Customer Exits |
It is implemented in the form of subroutine | It is implemented for specific programs, screens, and menu within standard applications |
It is technically a modification as existing code are changed | It is technically an enhancement as this provides add-on functionality |
It refers to SD module only | It refers to all modules like MM, SD, FICO, PP etc. |
All variables, structures, internal tables, etc. are exposed to be viewed and/or changed | Only variables, structures, and tables that are passed into the function through the interface are restricted to be viewed and/or changed |
It requires an access key | It does not require any access key |
Changes remain after the upgrade | Changes are lost after upgrade |
It gets automatically activated whenever the application/program is activated | To implement this, a project is created in CMOD then activated |