Up to the creation of enhancement spots it was a strict rule not to modify original code because changes to the original code can harm the modification. BADIs and customer exits had guaranteed interfaces and one could trust that this interface does not change.
Am I right that enhancement spots and sections do not guarant anything? Where is the difference to a modification if support packages are loaded and we would enhance a often changed application, e.g. SAPMM06E?
Some info on enhancements:
The new enhancement concept of the ABAP Workbench (Enhancement Framework) enables the integration of different concepts for modifying and enhancing development objects. The enhancement concept is supported by the Enhancement Builder tool and ABAP language elements.
In the long-term, the new Enhancement Framework is to replace or incorporate the existing enhancement and modification concepts. These are described under Changing the SAP Standard (BC).
The previous concepts were separated into modifications that is, changes to delivered development objects, and enhancements that is, inserting user developments at points predefined by SAP.
● Modifications were carried out using the Modification Assistant and supported in system upgrades.
● Before Release 4.6, enhancements were only possible via Customer Exits. As of Release 4.6, function module exits (customer exits for source code enhancements) were replaced with Business Add-Ins.
Problematic aspects of the previous concepts are:
● There is no real upgrade support for modifications and enhancements made in different systems of a transport route for example, by SAP, to partner add-ons, or to customer developments.
● It is difficult to trace developments made in different parallel systems back to one system.
● In the case of systems in which large amounts of user developments and modifications were made, retracing and testing these developments after an upgrade is a very time-consuming process.
The aim of the new enhancement concept as of Release 7.0 of the SAP NetWeaver Application Server ABAP (SAP NetWeaver 7.0) is to unify all possible ways of modifying or enhancing SAP products (more precisely, Repository objects of the SAP NetWeaver Application Server ABAP), which go beyond the scope of Customizing. The corresponding tool is the Enhancement Builder, which is integrated in the ABAP Workbench.
In the context of the new enhancement concept, the following can be handled as enhancements:
● Modifying a Repository object
● Replacing a Repository object with an identically-named object
● Enhancing a Repository object at a predefined position
● Using a foreign object
The Enhancement Framework knows all information about an enhancement that is required, for example, for an upgrade or for the ABAP runtime environment.
The enhancements of the enhancement concept can be switched using the Switch Framework. This means that an enhancement takes effect when the package in which the above enhancement components are defined is assigned to a switch of the Switch Framework and this switch is not deactivated.
In constrast to modifications, with enhancements it becomes possible to have enhancements on different development levels, for example:
● core development
● application development
● add-on development
● customer development
This is all true but this is not the question!
The question is: In the classic enhancement technologies the interface of some called customer code does not change. In the new technology as fare as it is not a new BADI the implementation replaces or enhances a conding sequence. I never read anywhere that it is quaranted that this conding sequence exists after a new support package has been imported and that the sequence workes together with its environment without changes which affect the implementation of the enhancement. That means: I see no difference to a modification where I have with transaction SPAU to verify what I have did and what SAP did afterwards and if my implementation in still working.
If I enhance in an environment like my example SAPM006E what is frequently changed by SAP I am afraid to have all the time work to verify and to update my implementation.
That is my problem!
So again: Does anyone know on what I can trust if I implement an enhancement spot what is not a BADI?