Enhancement Spot是SAP最新的增强方式。Enhancement Spot实际上相当于一个容器,里面可以装多个增强。
Enhancement Spot里面可以装的增强根据增强技术主要分为两类:Source Code Plug-In和Object Plug-in。
Object Plug-in
实际上就是BADI,不过SAP称为New BADI,和传统BADI相比其实现的细节有差异(具体参见另一文章),但其最基本的原理还是利用Interface和Class的继承关系,因此实现增强的核心仍然是创建并实现一个继承接口的类。
一个Enhancement Spot里面可以有多个New BADI。
Sorce Code Plug-In
本文重点介绍源代码的增强。这是一种更加容易创建的增强,只需要在源代码预留上可以增强的点即可,而不用像BADI一样创建Interface并进行相关方法调用。
具体预留的增强的点(SAP叫做Enhancement Option是)有两种:Enhancement Point和Enhancement Section。
Enhancement Point
在源代码里预留的ENHANCEMENT-POINT语句,该语句后面即可以创建增强实现。
Enhancement Section
将源代码里的一段代码框起来形成Enhancement Section,在该段代码后可以创建增强实现。并且创建增强实现之后将执行增强实现的代码,而不执行原来被框起来的代码。
隐式增强点
上文介绍的Enhancement Point和Enhancement Section都是属于显示增强点,即必须要源程序中增强了相应的代码才可以进行增强实现。实际上SAP还提供隐式增强点,所谓隐式增强点,即不需要加入专门的代码,所有的程序都默认有的增强点。
隐式增强点出现在:函数、方法、子程序的开始和结尾处;Report程序、INCLUDE程序的结尾处;甚至代码增强实现的首尾都含有隐式增强点。
查看隐式增强点的方法:
点击之后,源代码中会多出一些如下的行,这些行的地方即可以增强:
总结
SAP新的Enhancement Framework极大的提高了代码增强的可能性。使用Enhancement Spot来管理增强,除了BADI之外,主要是增加直接的源代码增强,而隐式增强点又极大的扩大了源代码增强的范围。基本上做到了源代码“处处可增强”的程度。