Skip to Content
Technical Articles
Author's profile photo chandan bhatnagar

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 –

  1. Data dictionary enhancement
  2. Customer Exit
  3. BTE
  4. BADI

Data dictionary enhancement

We can enhance SAP standard table or structure by using two ways,

  1. Append structure
  2. 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 –

  1. Functional Exit
  2. Menu Exit
  3. Screen Exit

We can see the list of customer exit by transaction code SMOD.

  1. Debuting the program and create a breakpoint for command call customer function.
  2. Search in program “call customer-function”.
  3. 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

  1. Process Interface – Can influence the SAP standard object
  2. 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.

  1. BADI is based on object-oriented programming.
  2. We can see list of existing BADI by t code SE18.
  3. 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 🙂 

Assigned Tags

      5 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Marc Bernard
      Marc Bernard

      Nice overview. It's lacking some critical information for functional consultants, for example:

      • What method is supported by what release or is deprecated as of what release?
      • Does it work on-premise and/or in cloud solutions?
      • Call to research if missing features are available in newer releases or provided by partner solutions

      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).

       

      Author's profile photo chandan bhatnagar
      chandan bhatnagar
      Blog Post Author

      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..!!

       

       

       

      Author's profile photo Marc Bernard
      Marc Bernard

      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

       

      Author's profile photo chandan bhatnagar
      chandan bhatnagar
      Blog Post Author

      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.

      Author's profile photo Marc Bernard
      Marc Bernard

      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.