Похоже, это как-то связано с пакетами.
https://weblogs.sdn.sap.com/pub/wlg/3056
https://weblogs.sdn.sap.com/pub/wlg/3336
https://weblogs.sdn.sap.com/pub/wlg/3430
https://weblogs.sdn.sap.com/pub/wlg/3506
https://weblogs.sdn.sap.com/pub/wlg/3595
Да нет, я тут поковырял короче в свой программе создать вот именно эти Explicit точки не вопрос, в режиме редактирования стоим на строке кода и правой кнопкой мыши по меню: Расширения - Создать опцию и получаем что-то типа
ENHANCEMENT-SECTION Y_MY_AREA SPOTS Y_MY_SPOT_EX .
IF dynbegin = 'X'.
ENDIF.
END-ENHANCEMENT-SECTION.
Ну и еще по справке вот такая вот строка... т.е. это таки должно быть явное разрешение для вставки модификации, объявленное операторами ENHANCEMENT and ENDENHANCEMENT, т..е. если в программе нет явного разрешения на расширение кода в этом месте, то как бы и точки расширения нет, собственно говоря поэтому оно и называется "явная точка расширения", в отличии от не явной которая типа всегда есть в начале и конце подпрограммы или функционального модуля.
You can assign source code plug-ins, defined between ENHANCEMENT and ENDENHANCEMENT in an ABAP program, to an enhancement option defined using ENHANCEMENT-POINT. These source code plug-ins are inserted into the code unchanged if the switch is in the relevant position.
Так что как бы разница между Explicit и Implicit ну если уж совсем на пальцах, то Implicit - есть всегда и не требует каких либо шагов для ее объявления, а вот Explicit точка должна быть явно определена в коде в требуемом месте, т.е. из моего примера
PERFORM call_1 CHANGING my_structure.
--- вставил точку расширения изменяющую my_structure ---
PERFROM call_2 USING my_structure.
PERFROM call_3.
чтобы вставить точку расширения между
call_1 и
call_2, в тексте должно было бы быть что-то типа так написано:
PERFORM call_1 CHANGING my_structure.
* Явная точка расширения
ENHANCEMENT-POINT XXX_ME_EX SPOTS XXX_MY_SPOT_EX .
PERFROM call_2 USING my_structure.
PERFROM call_3.
только тогда можно было бы вставлять свой код в промежутке вызова.