BADI's - Business Add Ins

BADI's (Business ADd Ins) are a new type of extension introduced in SAP R/3 release 4.6c. They are based in ABAP Objects: they are classes with different methods which can be modified by customers. Their goal is to let customers meet their requirements by adding non standard code in the standard system.


BADI's have two views: the definition view and the implementation view. SE18 is the transaction to access BADI's definition view. In this view, the basic characteristics of the BADI are set: input and output parameters, type of BADI, etc. In the implementation view, which is accessed via transaction SE19, you can see the how the definition was implemented; that is, the methods that have been used, the code inserted in them, etc. In transaction SE19 you can see all the implementations of a specific BADI definition.

BADI's definitions come with the standard SAP System. It is not common to create definitions for the user. In the definition, the capacity of multiple implementations is set: single if only one implementation can be created (like in User Exits) or multiple. You can also set the filters for the BADI; this is used, for example, to create localizations if you filter by country. This is why the SAP System includes many BADI implementations.

It is also possible to create industry specific extensions for specific business types (oil industry, pharmacy, etc). This is possible because BADI's have a multilayer architecture (SAP, partners, customer solutions, localizations, industry specific solutions, etc) in contrast with User Exit, which is double layer (SAP and Customer solutions).

Method for finding BADI's

To find a BADI that may be useful for a specific goal, you can use the following method:

Insert a BREAK-POINT in the method GET_INSTANCE of class CL_EXIT_HANDLER (in transaction SE24). Then execute the program or transaction of your interest; when execution stops in the BREAK-POINT you can see BADI names in the exit_name variable. This method will make execution stop a lot of times because this method is executed very often, and not all of the BADI's you will get are useful. Nevertheless, it is a very useful method.

If this method is not good enough for you, you can download this program that will find all the extensions in a program or transaction.

In this link you can see an example of BADI implementation.