第四代增强:Enhancement-Point

 第四代增强:Enhancement-Point

此种不建议使用,只有无法通过 User Exit与BADI都无法实现时,才考虑该增强。第四代其实是第三代上的加强

解释:

Ehancement Spot: 用来组织Enhancement options,it's a container of Enhancement options

Enhancement Implementation:用来组织Enhancement options的实现代码

Enhancement Spot是对Enhancement的一个管理平台,Enhancement-Point技术与BADI是有区别的,首先BADI是SAP预留的类的接口,而Enhancement-Point则是允许用户对现有的SAP代码进行修改,例如插入、替换,只要符合一定的规则即可,不需要SAP预先定义好

 

ENHANCEMENT-POINT是在程序中直接插入代码,其概念与BADI的USER_EXIT类似,标准程序预留了部分已定义好的增强点可以让ABAP做插入代码来实现这个增强(也可以自定义增强点(ENHANCEMENT-POINT),但不能自定义增强选项(ENHANCEMENT-OPTION),增强选项一定是系统预留下来的,如果没有增强选项则该处不可做增强),但是不能做屏幕和菜单增强。

优势:

其最大的优势在于方便,可以直接使用程序中所有已定义的变量,不像BADI和USER EXIT中只能使用方法或函数接口传过来看参数

 

一般增强步骤:

1.         DEBUG标准程序找到需要增强的位置,点EDIT->SHOW IMPLICIT ENHANCEMENT OPTIONS查看是否有预留增强选项。(标准程序不能自己创建enhancement option ,只能使用系统预留的

2.         创建增强点实现

 

1.   为自己程序创建显示增强

第四代增强:Enhancement-Point_第1张图片

进入创建增强选项界面,输入增强点名及增强容器名(以Z开头),确认回车。

第四代增强:Enhancement-Point_第2张图片

注:Enhancement Spot 就是SE18中的Enhancement Spot

随后Editor上会多出一条语句,然后转到增强模式

第四代增强:Enhancement-Point_第3张图片

第四代增强:Enhancement-Point_第4张图片

第四代增强:Enhancement-Point_第5张图片

注:Enhancement Spot相当于一个容器,创建一个增强点的必要条件是要有一个容器。每个增强点(如ZENH_POINT_01)都可以创建到这个容器当中,也可以再创建一个容器。删除这个容器的方法:在本地对象或它的包中删除或在SE18中删除

 

对于ENHANCEMENT-SECTION,定义和实现的方法与ENHANCEMENT-POINT一样。两者的区别是:enhancement-point没有代码,只有一个预留点,允许在这个位置插入新代码(implementation),而nhancement-section和end-enhancement-section.之间有代码,implementation之后,替换旧代码,只执行新代码,原来的代码不再执行

2. 隐式与显示增强

Implicit enhancements comprise(包含)class enhancements, function group enhancements and predefined enhancement points at particular predefined positions such as the end of a report, a function module, an include or a structure and the beginning and the end of a method。隐式增强就是系统内置的Enhancement options

显式增强就是手动加入到程序中的Enhancement options,有两种显式增强:

ENHANCEMENT-POINT,用来插入新的功能代码,没有代码,只有一个预留点

Defines a position in an ABAP program as an enhancement option, at which one or more source code plug-ins can be inserted.

ENHANCEMENT-POINT enh_id SPOTS spot1 spot2 ...
                   [STATIC]
                   [INCLUDE BOUND].

ENHANCEMENT-SECTION,ENHANCEMENT-SECTION 和 END-ENHANCEMENT-SECTION. 之间有代码, implementation 之后,替换旧代码,只执行新代码,原来的代码不再执行

Defines a section of an ABAP program as an enhancement option, which can can be replaced by one or more source code plug-ins.

ENHANCEMENT-SECTION enh_id SPOTS spot1 spot2 ...
                     [STATIC]
                     [INCLUDE BOUND].
   ...
END-ENHANCEMENT-SECTION.

 

隐式增强:在 执行程序,包含程序,函数组,对话模块的结尾;Form例程,函数模块,方法等的开始和结尾;结构的结尾这些地方都会有

显示增强:需要在编辑器中创建,可参考上面

你可能感兴趣的:(ABAP,SAP,Basis)