Beruflich Dokumente
Kultur Dokumente
com
http://www.sapabapiq.com/2013/10/how-to-find-badi-different-methods.html?pfstyle=wp
Each BAdi consists of the method with out implementation called as BAdi
definition. We need to create classes to write the abap code by implementing the
methods called as BAdi implementation.
1/15
These different methods should help the ABAP developer to find best suited BADI for their requirement.
The BAdIs can be found in the following ways
1. Through SPRO
2. Through ST05 -> SQL Trace and Buffer Trace (Performance Analysis)
3. Through SE24 -> CL_EXITHANDLER.
4. Through function module SXV_GET_CLIF_BY_NAME.
Apart from the above mentioned methods we can also find the BADI using the two methods below, Though not very
effective but its a GOOD-TO-KNOW information.
5. Through SE30 Runtime analysis
6. Through TADIR table entry.
Every method has been explained with screen shots and examples, hope this post helps you to know different
methods for finding BADI.
2/15
Navigate through this node you would find the Node Business Add-Ins for Purchasing NODE.
Read through the Documentation available and check if the BAdI satisfies your requirement and then create an
implementation.
It is not mandate that the BAdI node will appear in the same manner for other module.
3/15
We need to navigate through the all the nodes and find the BAdI node. For example In Purchasing we directly get
the NODE business add-in however if we navigate through Sales and Distribution we get under the system
modification.
Though this gives us all the BAdI that we have for the given module however its not very specific to the transaction
we may be looking for.
The Next method is the one through ST05. This answers to our problem, we can find all BAdI that trigger for a given
transaction code.
This method is based on the fact that all BAdI are registered in SAP database tables and during a transaction
execution if any BAdI is called then these tables will surely be accessed.
The BAdI database tables are SXS_INTER, SXC_EXIT, SXC_CLASS and SXC_ATTR.
These tables are always accessed by the views V_EXT_IMP and V_EXT_ACT.
When we create a trace for the given transaction we can filter the trace by these view names to get all BAdI.
Step1.
Switch on the TRACE through Transaction ST05 (Performance analysis) and set the flag for BUFFER TRACE SQL
TRACE and activate the trace.
4/15
Step2.
Execute the transaction for which we need to find the BAdI, in our case it ME52N. Navigate through the transaction
like change a data, check the document and save etc doing so the trace would capture all BAdI that would trigger on
these events.
Step3.
Execute Transaction ST05 and deactivate the Trace -> display trace.
This would popup the screen Set Restriction for displaying trace.
Under the field Objects fill values and hit OK.
5/15
6/15
Step4.
Export the trace list to an excel document by hitting on the Trace list option in the MENU OPTIONS and SAVE as
LOCAL file.
7/15
This is a very simple but efficient method to find the BAdI for a give transaction.
Step1.
Execute Transaction SE24 and enter the class name as CL_EXITHANDLER. There would be numerous methods
with this class but we are interested only in GET_INSTANCE method.
Step2.
Double click on the method name and place a break-point on the CALL METHOD
cl_exithandler=>get_class_name_by_interface.
8/15
Step3.
Now execute the transaction for which the BAdI is required.
The code processing would stop at the break-point we have applied, click on the EXIT_NAME in the Changing
parameter.
The parameter EXIT_NAME holds the name of the BAdI. Take a note of the BAdI and hit F8.
If for instance we are looking for a BAdI while saving the document then when the SAVE button is hit processing
would stop at the break point and would give the name of the BAdI that would trigger at the SAVE event.
9/15
The next method is same the above only that instead of putting a break point at CL_EXITHANDLER we can place a
break point in the function module SXV_GET_CLIF_BY_NAMEat CALL FUNCTION 'SXV_ADD_PREFIX and
execute the transaction.
The exporting parameter NAME holds the value at the BAdI name.
10/15
Take a note of the BAdI that would trigger based on the requirement.
Put a break point at the ENDFUNCTION of the Above mentioned Function Module.
Step 3.
11/15
Module.
If this is CL_EX then it is a BADI else it is a Exit. Example is shown in the below Screen shot.
Hope this document helps people who dont know this method of finding a BADI.
The Runtime analysis measures the CPU time required by ABAP statements. The most important are the database
access, context statements, Modularization units like Perform Call function Call screen Call transaction etc, Internal
Table operations like append collect Insert etc, Data transfer like read dataset etc and for our specific requirement
the ABAP object statements Though there are many other statements that Runtime Analysis measure, we may not
move into details of that.
Once we have the hit list from the SE30, we can search through the HIT LIST for METHOD cl_exithandler.
Execute Transaction SE30 and under the Current session tab enter the transaction ME52N (as used through out this
document) and execute.
Flow through the transaction and save and exit. So we now have the Runtime analysis available for the transaction
we just executed, Search through the HIT LIST for CL_EXITHANDLER. Select the line and then in the
Menu bar -> Goto -> Display Source code.
12/15
This would take us to the code where either the BAdI name is directly passed in the instance or through a variable. if
its through a variable double click on the variable for the variable definition.
13/15
Lastly we can find some of the BAdI names from the TADIR table entry.
Just as we can find the user exit from TADIR, BADI name can also be retrieved there.
Though this is a good method for finding User exits however for BAdI this is just good-to-know information, the
reason being that the BAdI name is fetched based on the Development class or the package.
It may so happen that the package may contain all the BAdI provided by SAP for that transaction or the BAdI may
exist in another Package which is accessed when the transaction is executed.
Consider the Example below.
Execute Transaction Se11 and display table TADIR.
14/15
And execute.
Though ME52N has many other BAdI which are called however they exist in the package ME.
Decide which method suits better to your needs and requirements before using these different methods to find
BADI's.
"You found the information helpful and want to say thanks? Your donation is enough to inspire us to do
more. Thanks a bunch!"
15/15