Technical Articles
SAP Enhancement & Modification Basics – Must read for Functional Consultant
Introduction
This document will help functional consultant to understand the difference between enhancement and modification. What kind of enhancement are available and how to search the one based on requirement.
Purpose
There are many businesses requirement which are not possible in SAP standard and we need to do enhancement or modification with the help of technical team. This document will help functional consultant to understand the available type of enhancement and how can he/she search those as per business requirement.
Scope
We will cover different types of available enhancement and how to use it.
Enhancement
SAP object is the object that is delivered or created by SAP. Customer object is the object that is created by a customer.
Enhancement is a way to add or change the SAP object functionality without modifying the SAP object.
Below are the types of enhancement available in SAP –
- Data dictionary enhancement
- Customer Exit
- BTE
- BADI
Data dictionary enhancement
We can enhance SAP standard table or structure by using two ways,
- Append structure
- Customising include
Append structure and customising include allow us to enhance SAP standard tables or structures by adding fields to them.
We can enhance table or structure by using customising include only if the table or a structure has customising include Statement.
Use – If there is a requirement to save some additional fields.
Customer Exit
Customer exit is one type of SAP enhancement. With customer exit we can enhance the SAP standard program without modifying SAP Object.
There are three type of customer exit –
- Functional Exit
- Menu Exit
- Screen Exit
We can see the list of customer exit by transaction code SMOD.
- Debuting the program and create a breakpoint for command call customer function.
- Search in program “call customer-function”.
- Use transaction SMOD
Use- If there is a requirement to apply some validation on field, want to substitute values during the posting or need some additional screen during any transaction etc.
Business transaction event (BTE)
BTE is a type of enhancement which is basically developed for FI module. BTE is based upon function module, but it is different from customer exit.
In customer exit only SAP and Customer is involved unlike BTE where partner is also involved other than SAP and customer. So not only customer can modify the SAP program, but other partner firm can also modify the standard logic in BTE.
There are 2 types of BTE interface
- Process Interface – Can influence the SAP standard object
- Publish and subscribe interface – Cannot influence the SAP Standard object.
Enter T-code – FIBF , you can find both type of BTE.
Use- Can be used in FI reports, payment advise, dunning, validation, and substitution.
Business Add-in (BADI)
When SAP developers were creating SAP standard program, they found that customer may need different logic in the future, So they created BADI and also an interface.
- BADI is based on object-oriented programming.
- We can see list of existing BADI by t code SE18.
- We can implement the BADI by t code SE19.
We can search BAdI Name is used for classical and Enhancement spot used for new.
You can check the documentation related to BAdI and used those as per your requirement.
Click on display, we can check if this BAdI is already implemented or not.
There is a tab in header “Implementation” , click on that then display.
So this BAdI is already implemented as we can clearly see above.
Use- Can be used widely to apply additional logic in sap standard program like applying payment block based on certain business requirement as shown above.
Modification
SAP object is the object that is delivered or created by SAP. Customer object is the object that is created by a customer. Modification is a way to add or change the SAP object functionality directly modifying the SAP object. This is not recommended as it can leads to inconsistency.
Modification is not recommended until unless you have complete knowledge of flow. There is modification which is allows and it is user exit.
When we do modification, we required SAP Software change registration.
SAP recommends us to use modification assistance when modifying SAP standard program.
Use – User exit is one kind of modification which can be used to modify the SAP object with our own logic.
Confusion – So now the confusion is what should we use ? Either enhancement or modification. If enhancement then what type of enhancement. Actually this is defined by SAP itself, SAP has defined already which object can be modified. Enhancement is pre-planned by SAP and SAP has already defined what kind of enhancement can be used or not.
Please share your valuable feedback.
Please follow my blog for FI cutover activities –
https://blogs.sap.com/2022/10/14/sap-fi-cutover-activity-plan-complete-activities/
Please follow my blog for validation and substitution –
https://blogs.sap.com/2022/10/30/user-exit-in-validation-substitution-for-functional-consultant/
Please follow the below link for related topic
https://answers.sap.com/tags/648420875567243523242285841826221
and read other posts on the topic –
https://blogs.sap.com/tags/648420875567243523242285841826221/
Please follow my profile for related information. Thanks Everyone 🙂
Nice overview. It's lacking some critical information for functional consultants, for example:
In the part about modifications, it should say, user exits are "one kind of enhancement" (not a mod).
SAP has not defined what can be modified. Everything can be modified. And almost any code can be enhanced as well using implicit enhancement spots (except for protected system code).
Thanks for your comment. Being a functional consultant I might have limited understanding over ABAP. But, Technically user exit comes under modification since you are changing the SAP standard code. Any changes that are made to the SAP standard code comes under modification. Whereas enhancement is a concept where in which you don't change any standard code instead you add your code as a hook to the existing code. And these hooks are defined by SAP developers. I will appreciate if you will add some additional knowledge which can be helpful for others. Cheers..!!
This is not correct. Customer exits are not modifying any SAP code. The documentation also lists them under "Enhancements":
https://help.sap.com/docs/SAP_NETWEAVER_750/2b28ffa716c24348903f8ffbfeb81df8/c81975cc43b111d1896f0000e8322d00.html
Hello Marc, User exit and customer exit both are different, isn't it. I have seen while we were using user exit MV45AFZZ , it require the access key but in case of customer exit it don't ask for access key. And I suppose we require access while we do modification of SAP object.
User exit is an older term for customer exit. You are going way back to when you had to modify the user exit includes (when enhancements didn't exist).
The nicer way is to use an enhancement within the include (no mod, no need for access key). Here's a good example: https://www.tutorialscampus.com/sap-abap/user-exits.htm
PS: At some point, SAP switched from "user exit includes" in the SAP namespace to delivering the exit as includes in the custom namespace (ZXxxxUyy). This also avoided the modification.
chandan bhatnagar and Marc Bernard thanks you both. A nice conversation to get more about enhancements. I love this one. =)