Multiple Implementations of Badi
I understood the concept of BADI -----means used to enhance the standard object or functionality in system.
I have created one Badi in the system and following are the steps.
1. Create Enhancement spot in SE18.
2. Created BADI definition in the Enhancement spot.
3. Assigned Interface to the created BADI
4. Then i have created BADI implementation and where it ask for the Enhancement implementation (Enhancement Implementation also created in same step)
5. Created Badi Implementation class and also done the implementation of Interface methods.
6. Done the activation of BADI and Enhancement spot.
Calling the same Badi in the zprogram.....
Data bd type ref to zBADI_definition.
get badi bd.
call badi bd->method importing parms.
I executed the program and it worked fine.
Now again opened the enhancement spot in SE18.
I have second implementation of same Existing BADI in the new Enhancement Implementation.
Now how to call the new implementation in the same program?
Request you to please help here.
vikram Muralidharan replied
If you need to call a specific implementation, use the concept of FILTER. You can define a filter value for every implementation that you create and during call badi, use the filter value. SAP will call only that implementation that matches the filter value you pass.
Additionally the understanding is we cannot control the sequence of implementation call. This is not true. By creating a screen enhancement for badi_sorter along with using filters, we can control the sequence.
Enhancement impl and Badi impls are different from one another. Every explicit enhancement is assigned to a spot. To implement these explicit enhancements, we need to create new implementations. The implementations that we create will either replace SAP's implementation or will get executed along with SAP's implementation.