BAdI Concept
A BAdI within the Enhancement Framework is an enhancement option or an anchor point for an object plug-in. A BAdI is an explicit enhancement option, which means that BAdIs are not provided by the framework and have to be defined explicitly by the developer.
There are two different roles in the process of providing and implementing enhancement options:
● (Enhancement) option provider
The person who builds an enhancement option (functions like a “hook” to which others can attach something). In general, the option provider is identical to the developer of a development object who has to offer an explicit enhancement option (the so-called basic development object). Typically, the developer of the basic development object is someone working in the SAP core who anticipates that a customer or an industry solution might want to add some code at a particular point. In this case, the option provider creates both the development object to be enhanced and defines an enhancement option.
● Implementer
The developer who implements an enhancement option. The implementer is not interested in the details of an enhancement option, he or she just needs to know how to implement it.
The option provider has control on what the implementer does by defining the interface and confining the implementer to the class that implements the BAdI.
The BAdI implementer cannot interfere with the basic program. It is assured that a BAdI implementation can only change the parameters that were handed over to the BAdI. The implementation of a method has a context of its own and the variables of the development object using the BAdI are not even visible from inside the BAdI implementation.
More information:
Function Code and Screen Enhancements
BAdIs Embedded in the Enhancement Framework