
Software written in ABAP is delivered as source code and customers are free to modify and enhance this source code to meet their requirements. The flexibility to modify source code, however, creates the problem of merging the modified code with new code when the system is upgraded to a new release. This usually a lengthy and error-prone procedure. The SAP enhancement concept solves this by giving customers the option of adapting source code to their specific needs without encountering problems in subsequent upgrades.
The SAP enhancement concept distinguishes between enhancement points and enhancement implementations. The first represents a simple enhancement option (for example, in a specific position in an ABAP program) and the latter for the enhancement itself (for example, a fragment of source code inserted in the position in question). In general, enhancement points are positions in repository objects where enhancements can be made. These points are either defined explicitly (they are included by the developer) or they are implicit. Explicit points are suitable places for making modifications or inserting enhancements. Implicit points, on the other hand, exist in all places in ABAP programs that can be specified uniquely. These include:
The end of a section in a class
The end of a method
The start of a method
In this way, customers can execute their own ABAP code without modifying the original code, either before a method is executed (known as pre-methods) or after (known as post-methods). Similarly, new attributes can be added to classes or additional optional parameters added to methods.
Enhancement points can be structured by being organized in a hierarchy. Any number of enhancement points can be saved in an enhancement spot, which itself can be structured in composite hierarchies of spots. This makes it possible to assign a semantic view to enhancement points independently of their technical properties.
Enhancement spots are implement by enhancement implementations. This assignment creates a direct navigable connection between enhancement points and their implementations. As with enhancement spots, enhancement implementations can also be structured in composite hierarchies.
There are currently two types of enhancement point: Source code plug-ins and object plug-ins.