“Business Add-In” hereinafter BADi, are an extension technology in the SAP environment (Systems, Applications, and Products in Data Processing). BADIs are predefined extension points in the source code of SAP applications, which allow developers to add, modify or customize standard functionality without modifying the original source code. This flexibility makes it easy to adapt SAP systems to the specific needs of an organization without compromising the integrity and future updating of applications. Through clearly defined interfaces, BADIs allow the incorporation of additional business logic and interaction with standard modules, thus contributing to greater agility and efficiency in the management of business processes.
To find and work with BADIs, follow these steps:
- Identification of BADIs: First, determine which area or process of SAP you want to extend or customize. Investigate the SAP documentation and manuals related to that functionality to identify if there are BADIs available.
- Transaction “SE18”: Access transaction “SE18” on the SAP home screen. This transaction allows you to search and view the definitions of BADIs.
- Search for BADIs: In transaction “SE18”, enter the name of the BADI or a keyword related to the functionality you want to extend. This will provide you with a list of relevant BADIs.
- Selection of BADI: Select the BADI that best suits your needs. Here you will see the description, the name of the standard implementation and other useful information.
- BADI Implementation: Use transaction “SE19” to create an implementation of the selected BADI. You can provide a unique name for the deployment and choose whether it is local (only to your system) or global (spreads to other systems).
- Logic Development: In the BADI implementation, you can add your own code to extend or modify the functionality. This allows you to integrate additional business logic according to your requirements.
- Deployment Activation: Once you have completed the BADI implementation, activate it using transaction “SE19”. This will link your implementation to the corresponding BADI.
- Test and Validation: Perform extensive testing to ensure that your BADI implementation behaves as expected and does not negatively impact standard functionality.
There are several approaches to find BADIS, here you will find four methods to do it
Method 1 : For this method, you must consider that the first step takes into account that the BADIS are registered in the SXS_INTER, SXC_EXIT, SXC_CLASS and SXC_ATTR tables and that they are accessed through the V_EXT_IMP and V_EXT_ACT views. In this way, each existing call to a BADI, the system makes use of the aforementioned tables. Therefore, one method to find the BADI we need is based on the use of transaction ST05(Performance Analysis). The following procedure will be carried out
1. Enter transaction ST05 and once there, select the “Table Buffer trace” checkbox and press the “Activate Trace” button..
2. Next, open a new mode and execute the transaction for which you want to find a BADI.
3. Once the program has been executed, we return to the screen where we had transaction ST05 and click on the “Deactivate Trace” button in order to finish the trace.
4.Once the trace has finished, click on the “Display Trace” button where the Trace will be filtered with the objects: V_EXT_IMP and V_EXT_ACT (views).
5. Press the “Copy (F8)” button, Fill Operations: OPEN and “Enter”.
Result : A list will be obtained with all the “interface class names” of the V_EXT_IMP views starting with IF_EX_*. This is the standard SAP prefix for “BADI class interfaces”. The name of the BADI is found after the prefix IF_EX_. For example, if the interface name is IF_EX_ADDR_LANGU_TO_VERS, the BADI is called ADDR_LANGU_TO_VERS.
Method 2 : From transaction SE80, set a break-point in the “ACT_IMPS_PER_FLT_VAL” method of the “CL_BADI_FLT_DATA_TRANS_AND_DB” class just after the “SELECT” header with the comment “read BADI attributes”.
Then execute the transaction you want to analyze. For each stop at the debugger break-point, examine the “exit_name” and “internal” fields.
1.Enter transaction SE24 (Class Builder) place a break-point in the CALL METHOD cl_exithandler=>get_class_name_by_interface which is inside the GET_INSTANCE method of the CL_EXITHANDLER class.
Then, execute the transaction or program to be verified. The variable exit_name shows the names of the BADIs that the program implements. This method can be cumbersome because it stops execution many times, but this ensures that if a BADI exists it will stop at that point. What is being done is putting a BREAK-POINT at the time SAP checks if a BADI definition has any active implementation; therefore, even if there is no active implementation for that particular BADI, the method will detect that a BADI exists at that point. To see if that BADI is implemented or not, go to Transaction SE18 with the name of the BADI obtained in the variable exit_name and go to the menu option
Implementations → Resume.
Obtain the package (Development Class) of the transaction that you want to analyze using the transaction SE93. In transaction SE18, in the expanded search, search by filtering by the previously found package and the system will return all the BADIs related to that package. Taken from http://www.teknodatips.com.ar/sap-netweaver/29-como-encontrar-e-implementar-badis.html