SAP增强三

第四代增强

隐式增强

隐式增强就是系统内置的Enhancement options,是系统本身就预留的,如在:执行程序,包含程序,函数组,对话模块的结尾;Form例程,函数模块,方法等的开始和结尾;结构的结尾这些地方都会有。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-POINT: 只有一个预留点, 没有代码,用来在程序中直接插入新的功能代码,其概念与BADI的USER_EXIT类似,标准程序预留了部分已定义好的增强点可以让ABAP做插入代码来实现这个增强(也可以自定义增强点,但不能自定义增强选项,增强选项一定是系统预留下来的,如果没有增强选项则该处不可做增强),但是不能做屏幕和菜单增强。

其最大的优势在于方便,可以使用程序中已定义的变量,不像BTE和Customer EXIT中只能使用函数接口传过来的参数。

一般增强步骤:

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

2、创建增强点实现

为自己程序创建显示增强选项Explicit Enhancement options

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

注:Enhancement Spot 就是SE18中的Enhancement Spot

随后Editor上会多出一条语句,然后单击按钮切换增强模式。

光标定位到增强语句上,单击[创建实现]菜单项创建增强点实现。

注:Enhancement Spot相当于一个容器,创建一个增强点的必要条件是要有一个容器。每个增强点都可以创建到这个容器当中,也可以再创建一个容器。

删除这个容器的方法:在本地对象或它的包中删除或在SE18中删除,激活程序,退出后再打开程序。

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

两者的区别是:enhancement-point没有代码,只有一个预留点,允许在这个位置插入新代码(implementation),类似于AOP.而enhancement-section和end-enhancement-section.之间有代码,implementation之后,替换旧代码,只执行新代码,原来的代码不再执行,类似于OO中的方法重写/覆盖。

posted @ 2023-03-31 14:55  kang09  阅读(16)  评论(0编辑  收藏  举报