The document discusses BADIs (Business Add-Ins), which are enhancement options in SAP that allow custom implementations. It describes how to create a new BADI, define an interface with methods, create implementations, and add filters to dynamically call different implementation methods based on filter values passed at runtime. It provides an example where a calculation BADI is created with addition and subtraction methods, and implementations are created to return different results based on the country filter value.
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
377776000 call-badi-from-report
1. REPORT z_badi_calc_ab.
PARAMETERS : pctry TYPE land1,
paramet1 TYPE i,
paramet2 TYPE i.
DATA : resultadd TYPE i,
resultsub TYPE i,
objbadi TYPE REF TO z_badi_calc_ab. "Creating object to call BADI's implemented methods
GET BADI objbadi
FILTERS
z_country_filter = pctry. "Passing Filter values.
CALL BADI objbadi->;;addition
EXPORTING
param1 = paramet1
param2 = paramet2
CHANGING
RESULT = resultadd.
WRITE: / 'Add Result: ', resultadd.
CALL BADI objbadi->;;substraction
EXPORTING
param1 = paramet1
param2 = paramet2
CHANGING
RESULT = resultsub.
WRITE: / 'Substraction Result: ', resultsub.
The new Enhancement Framework and Kernel BADI
The BADI is an object-oriented enhancement option. The BADI defines an interface that can be implemented by BADI-
implementations that are transport objects of their own. The new BADI is fully integrated into the Enhancement Framework.
BAdis are like predefined Enhancement options available in SAP which can then be Implemented by the Industries as per there
needs.
BAdis: Business Add Ins are Enhancements to the standard SAP code. These BAdi Enhancement can be done with the Interfaces
which contains various methods (standard or customized). This Interface name is generated automatically and can b e changed as
required.
2. After defining the Interfaces developer assign some methods as required to these interfaces. These methods can have
only Importing and Changing parameters Exporting Parameters are not allowed. Finally BAdi is Activated and ready to be used
in program.
For creating BAdi first we need to create Enhancement Spot. New BAdi can only be created inside SPOT.
Below figure shows how to create Enhancement SPOT (TCode-SE18)
New Enhancement SPOT is created.
Now we are creating new BAdi inside this created Enhancement SPOT
Click on Create BADI button.
3. Provide BAdi name and short description.
BAdi requires one Interface which will contains all methods.
Creating new Interface, just doule click on Interface link under the BAdi definition section.
5. As soon as you will save Interface, it will open new screen to define methods inside this Interface.
All these methods can then be called using BAdi.
6. Create two different methods namely Addition and Subtraction and provide the parameter list for these methods created inside
Interfaces.
The parameters inside these Interface methods can only be Importing and Changing. Exporting parameters are not allowed in
Interface methods.
7. Two created methods are displayed inside Interfaces.
Two steps are already completed
1. Created new BAdi
2. Created Interface and added two methods as required.
Now need to create Enhancement Implementation so that methods created inside Interfaces can be called.
9. A new BADI implementation will be created with name “Z_BADI_IMPL”.
Double click on Implementing Class then following screen with two Interface methods will get displayed.
10. Double click on any Interface method. Currently these methods are all blank and need to Implement to have custom logic inside
these methods.
11. Now to use this we have created new Report Program
12. ABAP statements GET BADI, CALL BADI are used to Access Badi Objects.
Filters:
Filters are mainly used as a condition to switch over different implementations methods. For example there is one
BAdi having Implementation for converting any amount to UD. Now there is one more new requirement to have
currency conversion to IN.
In this case we need to have different Implementation in BAdi which will be switched based on the input provided by
the user. This calling of Implementation is all dynamic and can only be determined by BAdi at runtime.
Now creating filters in BADI
13.
14. Click on Activate.
Now Double click on Enhancement Implementation to open it.
Double Click on Filter and then click on EDIT button.
After this to add different Filter condition click on Combination button.
Now time to add filter condition in created Filters.
15. When click on Combination button following screen will be displayed.
Here double click on “????” to add new filter conditions.
Need to place value for these filters which will be used by BAdi to decide at runtime which method to call.
In our example we are making calculation based on Country so I have taken IN (India) and another filter will be US.
16. Two filters are created.
Activate the BADI.
Now to play with Filters we need to create another Implementation which will get called based on Country selected by User.
Need to create another Implementation which will calculate the result based on US country.
17. Every Implementation needs a class, if we provide same class name t hen this Implementation will inherit the methods of first
Implementation which will be useless.
Now we have two Enhancement Implementations, having different method implementations one for US and another for IN.
18. Double click on Enhancement
Now create new filter for this Implementation
19. For US we have added 100 more to both parameters.
Now filters are all ready to be used in Report program.
20. In above screen shot highlighted section shows how to use filters in program.