BUSSINESS ADD INS: OVERVIEW DIAGRAM
As an application programmer, you can use business add-ins to create enhancements in customer namespace. All enhancement types, such as program exit, menu exit, and screen exit, can be created using BAdIs. In fact, the key feature of a BAdI is its reusability.
BUSSINESS ADD INS: ADVANTAGES
Earlier enhancement techniques had some serious limitations:
Customer exits in these enhancements did not allow multiple uses.
No enhancements were available at program, screen, or menu level.
Administration level enhancements for business transaction events were insufficient.
New enhancement techniques had to address these deficiencies. BAdIs allow you to create all enhancement types. The key feature of a BAdI being its reusability, you stand to reap certain advantages:
Multiple usage or reusability
Possibility of all enhancement types, such as program, menu, and screen exits
Administration level enhancements
Use of the latest technology
SOFTWARE DELIVERY PROCESS
Previously enhancements were delivered directly to the customer. However, with the introduction of BAdIs, the implementation is a three-step process. This is because, for a BAdI to be executed, the implementation class and the service class need to be identified in the system.
BUSSINESS ADD-INS: ARCHITECTURE
A prerequisite for creating BAdIs is the availability of an enhancement option in an SAP application program. Additionally, there must be a BAdI class and an interface that implements it. The interface is implemented at the customer site.
BUSSINESS ADD-INS: COMPONENTS
Each BAdI includes a range of enhancement components, such as a program exit, menu exit, or a screen exit. When a BAdI is created, a BAdI interface and a generated class that implements the interface is automatically created. The generated class performs various tasks, such as filtering and control. The first task is performed so that only the relevant implementations are called. Similarly, the second task is carried out to call the active implementations.
BUSSINESS ADD-INS: FLOW OF A PROGRAM EXIT
This slide illustrates the process flow of a program that calls a BAdI. When a Business Add-In is defined, the system automatically generates a BAdI class that implements the interface. Then the interface method of the BAdI class is called. The BAdI class searches for all of the active implementations of the Business Add-In and calls the implemented methods.
BUSSINESS ADD-INS: CALL SYNTAX IN SAP PROGRAM
You need to define a reference variable that refers to the BAdI interface to call a Business Add-In. An object reference is created using the CALL METHOD statement which creates an instance of the generated BAdI class. By using this object reference, you can call the required methods.
FINDING A BUSSINESS ADD-IN
You can also define Business Add-In by forward navigation. The definition contains documentation and a guide for Business Add-In implementation. You can use the Repository Information System to search for a BAdI.
IMPLEMENTING BUSSINESS ADD-INS: INTRODUCTION
IMPLEMENTING BUSSINESS ADD-INS: METHODS
In order to implement Business Add-Ins, you need to specify the name of the implementing class. However, the class name should follow proper naming conventions. Then, you can double-click the method name to define its implementation part in the class builder. Similarly, you need to click the signature button to display the methods interface.
IMPLEMENTING BUSSINESS ADD-INS: PRIVATE METHODS
You can use the CALL METHOD statement to create private methods in the interface class. The private method can be called from the interface method.
IMPLEMENTING BADIs: ACTIVITING IMPLEMENTATIONS
You can click the Activate icon to activate the implementations of a Business Add-In. Whenever the BAdIs are called; the methods in the implementation are executed. However, if the user deactivates the implementation, the methods will no longer be called.
BUSSINESS ADD-INS: MENU EXITS (OVERVIEW)
Menu enhancements can be created using Business Add-Ins. As a user, you can add Customer Fcn function in the menu options. However, the menu enhancements must be pre-planned and should be implemented inside the BAdI implementation.
BUSSINESS ADD-INS: MENU EXITS (SAP PREPARATION)
As shown here, function codes of menu enhancements begin with a plus sign ’+’. The added menu item is displayed only if the implementation is active.
BUSSINESS ADD-INS: MENU EXITS (FUNCTION CODE PROCESSING)
The corresponding code for the menu option is declared inside the CASE statement. However, the function code should begin with the plus sign ‘+’.
BUSSINESS ADD-INS: MENU EXITS (RESTRICTIONS)
The function codes specified in a menu exit for a BAdI are available for single use. You can avoid conflicts between different BAdI implementations by ensuring they are neither filter-dependent nor reusable.
EXTENDIBLE FILTER TYPES: PREREQUISITES
The filter type property of a BAdI has an extendible attribute. This attribute can be utilized if the domain of extendible filter type has these properties:
The domain must be linked to a cross-client value table. The value table should have exactly one key field, which has the data element of the filter type as its field type.
The domain must have a text table with two key fields. One key field has the filter type as its field type, and the second key field has language as its field type.
The delivery class of both tables must be E or S.
If an active implementation is present, it is executed. However, if an active implementation is unavailable a default implementation is executed. The default implementation is created by the enhancement provider.
COMPARISON WITH OTHER ENHANCEMENT TECHNIQUES
Business Add-Ins are an extension of conventional enhancement techniques. BAdIs are both filter specific and reusable as compared to customer exits. It is possible to append fields on screens with restrictions using BAdIs.
NAMING CONVENTIONS (BADI DEFINITION)
As a user, you must comply with these naming conventions for BAdI definitions:
The name of a BAdI must begin with <badi> or z<badi>
The name of the BAdI interface must begin with IF or ZIF as shown here.
Any name can be specified for a BAdI method.
The name of a BAdI adapter class must begin with CL or ZCL.
NAMING CONVENTIONS (BADI IMPLEMENTATIONS)
You must comply with these naming conventions for BAdI implementations:
The name of a BAdI implementation must begin with <impl> or z<impl>
The name of the BAdI interface must begin with IF or ZIF as shown.
The method defined in BAdI definition is implemented.
The name of a BAdI implementing class must begin with CL_IM OR ZCL_IM.