Implicit Enhancement points exist at various places in the ABAP programs. Unlike the Explicit enhancements, these points are not defined in the programs.
Since implicit enhancement options are integrated and by default available makes it very powerful option when you want to enhance any functionality in ABAP Enhancement Framework. To implement the Explicit enhancement, it has to be provided in the program as a POINT or a SECTION. Since Implicit is available at many places, makes it widely useable.
Lets walk through one scenario – You have a subroutine to populate the specific field on the document. This subroutine is providing you a XYZ value. That value is valid for most of the business units. But for one specific unit, you want to have ABC instead of XYZ. To achieve this, you can implement the Implicit Enhancement option available at the end of the subroutine, provided there is no explicit point, or customer exit, or BADI.
To see this flexibility – compare it with the same scenario where you don’t have Implicit options. You register the object (remember, you don’t have any exits in the subroutine), implement the code, make sure that code is there always after a support pack or OSS note or full system upgrade. With the flexibility of implicit options, you don’t need to worry about upgrade. The implementation would be there after any upgrade or support pack.
Implicit enhancement options are available at various place:
- At end of programs, subroutine pools, Function Groups, Few Include programs
- At end of Structure (TYPE) Definition
- At beginning and at end of Subroutine, Method, Function Module
- At beginning and at end of Enhancement Implementation
- At end of list of parameters for FM, Method
- At end of each section (PUBLIC, PROTECTED, PRIVATE) of the class
- At end of Interface definition
E.g. For a Subroutine F_GET_DATA, the implicit enhancements are available just after the FORM F_GET_DATA (at beginning) and just before the ENDFORM (at end).
Read more Implicit Enhancement Options in ABAP Source Codes at SAP help.
Display Available Implicit options
To display the implicit options, Select Menu options Edit > Enhancement Operations > Show Implicit Enhancement Options
Once you use the option “show the implementations”, system would show all the possible places where you can implement the implicit enhancement.
Implement the Implicit option
Once you able to see the Enhancement Options, you can create the implementation for that.
To be able to create implementation, put cursor on the Enhancement Option (line showing with “””””””) and select menu option Edit > Enhancement Operation > Create Implementation. If you don’t see the implicit options, you need to use the Shoe implicit Options function.
Once you reach to this point, the process for creating implementation is similar to creating implementation for the explicit enhancement point.
Declaration vs Code Popup
If you are implementing the enhancement point which is within the Subroutine or FM or Method, system would bring you this popup.
Here is both of the options mean:
- Declaration – When you choose this type, the implementation would be created and treated as Static implementation. Means, it would be always available in all the clients.
- Code– When you choose this option, the implementation would be Dynamic implementation. It would be only called based on switch’s status if the switch is assigned.
In the newer version of SAP, I believe ECC 6 EP 6 onwards, there is this help available on the popup. The help says:
An enhancement implementation for an implicit enhancement option can be bound into the source code by the Enhancement Framework in two ways:
- As an unconditional call, for declarations and definitions: In such “static” enhancements, you can add and replace data declarations, for example. Calling the
enhancements takes place independently of the client. The enhancement is visible in all clients of the
- As a conditional call, for source code: The enhancements implemented here are called “dynamically” – that is, depending on the current
- Definitions of subroutines, methods, and local classes cannot be implemented in “dynamic”
enhancement implementations, but only in “static” ones
- Data declarations should be implemented in “static” enhancement implementations.
- At runtime, “dynamic” calls do not ensure the same performance as “static” calls.
Table of Content – Enhancement Framework
- Enhancement Framework – Introduction
- Enhancement Framework – Explicit Enhancement-POINT Implementation
- Enhancement Framework – Debugging Implementation
- Enhancement Framework – Explicit Enhancement-SECTION Implementation
- Enhancement Framework – Implicit Enhancement Options
- Enhancement Framework – Class Enhancement
- Enhancement Framework – Class Enhancement – How designed
- Enhancement Framework – Function Module Enhancement
- Enhancement Framework – Table Enhancement Category
- Enhancement Framework – Table Enhancement – Append Structure
- Enhancement Framework – Append Search Help
- Enhancement Framework – Extension Index
- Enhancement Framework – Fixed Value Append