SAP CMOD – Customer modifications
User Exits are implemented in such a way that unlike changes to SAP standard code, they will survive across upgrades and hot pack applications. They are also User Objects and can therefore be implemented without the need of requesting an SSCR from SAP.
Within the standard SAP programs at key points are calls to function modules starting with ‘EXIT_’. These function modules generally accept as input parameters structures containing for example the entire Order Header (VBAK) of the sales order just entered, or perhaps a table of the Order Items. These function calls are placed at points such as just before the Order is saved or just before it is printed and so on.
These function modules contain a single include statement. The name of this include is in the User domain and starts with Z. This enables it to be edited without the need for an SSCR and also prevents it being overwritten during upgrades.
Once this include has been created and activated, and the user exit is activated the User exit becomes functional.
User Exits are implemented using the transaction code ‘CMOD’. Enter this in the command line and press the Enter key. This will then show the CMOD parameter screen:
User Exits are assigned a project name which begins with Z. Having entered the relevant name in the ‘Project’ field, click the Create (or Change) button as applicable.
When you are creating a new project, the projects attribute screen will be displayed. This allows you to enter a title for the project and allows access to the Enhancements (User Exits) that you want to assign to the project and the components that you wish to use within those enhancements.
This screen allows you to enter a description of the project. Once you have done this, click the save button. You will be asked as usual to assign a development class and create a transport.
Once the transport has been created you can then go on to assign the enhancements that you wish to use to the project.
Unfortunately I have access to a 4.6C system only so therefore this description is based around that.
To find enhancements for a particular program locate the Development Class for the relevant program. Run the transaction and on the first input screen click on the Status button. This provides the program name. Another method of finding the program name is to use transaction SE93 which is the Create/Modify Transaction transaction. Enter the transaction code and click display.
In either case, cut the program name and then enter it into transaction SE38 ? the ABAP program editor. Select the ?Attributes? radio button and click display. Note the Development Class.
In 46C, go back to the CMOD main screen, enter the project name and select the ?Enhancement Assignment? radio button.
Click the change button. This will display the enhancement assignment screen. Position the cursor in the first field and press the <F4> key. This will display the Input Help personal list window, a standard window that you should be familiar with. Click the ?Information System? button and enter the development class located above into the development class field. Click the green tick.
This will display a list of enhancements for that particular development category with a short description of what they do.
Select relevant description which will be transferred back to the Enhancement Assignment screen.
For versions other than 46C, use transaction SE37 which is the Function Module editor, in the function module name field press the <F4> key and select further options. One of these will be the development class.
Clicking the enhancement button provides information on the enhancement.
The information displayed in this report includes whether the enhancement has been implemented, and is active. (Green things scattered throughout the report). Clicking the Exit name (In this case ?EXIT_SAPLV60A_002? will display the relevant function module:
To create the enhancement, double click the Include name. This then takes you into SE38 where you can edit the include to your hearts content.
Note, however, that when you try and create this include you will get a warning message displayed that the namespace you are trying to use belongs to SAP. Just click on the green tick and sail straight through.