本文主要是介绍第三代增强BADI-增强点(新Badi)多个实施,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 第三代增强BADI-增强点(新Badi)多个实施
- 创建增强点
- BADI的实现
- 多个BADI/ Enhancement实现时究竟调谁
- 过滤器
- 回调类
- 测试程序
第三代增强BADI-增强点(新Badi)多个实施
创建增强点
BADI的实现
由于一个BADI的实现可以有多个类,这些多个实现类需要组织(打包、捆绑)在一起(与多个BADI放在一个Enhancement Spot容器中是一个概念),所以需要创建一个新的BADI增强实现容器ZIM_BADI_DEM001:
多个BADI/ Enhancement实现时究竟调谁
在同一Enhancement Implementation中(如下图中的ZIM_BADI_DEM001),不同的BADI Implementations(ZIM_BADI_DEM001、ZIM_BADI_DEM002)之间究竟选谁的问题,是由 缺省实施(Default Implementation)、活动实施(Implementation is active)选项共同来决定的,且在同一时间内只能有一个BADI Implementations能被激活调用,所以要通过这两个选项来控制究竟谁被用来当作当前实现被使用,是否被使用也可通过图中的 “运行时行为”说明文字来查看:
过滤器
回调类
如果某个BADI没有实现时,则在调用时会Dump,为了在没有实现时,需实现一个默认的回调类。如SAP系统提示的标准BADI都会有默认实现,同时也是simple例子。
METHOD zif_badi_demo01~write.MESSAGE 'FALLBACK' TYPE 'I'.
ENDMETHOD.
测试程序
使用SE38创建程序,点击“创建”按钮:
REPORT zbadi_test.START-OF-SELECTION.DATA lo TYPE REF TO zbadi_demo01. "定义BADIGET BADI loFILTERSfilter1 = 'A'. "通过GET BADI得到我的实现类,如果过滤条件不成立的话将什么都不执行;CALL BADI lo->write. "调用BADI
这篇关于第三代增强BADI-增强点(新Badi)多个实施的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!