打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
BAdI实现全过程实录

最近开发的代码需要实现增强点,所以需要实现一个BAdI来完成这个需求。

BAdI的全称是Business Add-ins,是SAP基于面向对象编程模式提出的另一种customer exits,除了是基于面向对象的方式,BAdI还提供一系列高级的特性,可以实现多次,每种实现方式可以根据过滤条件的不同而采用不同的实现方式。本文将用实例接触如果实现一个BAdI增强点。

定义一个BAdI, 主要分三步:

1. 创建增强点。

2. 创建BAdI定义。

3. 创建BAdI接口。

1. 创建增强点Enhancement Spot

增强点是BAdI定义的封装器(Wrapper),一个增强点具有多个BAdI定义。为了创建一个增强点,执行应用以下步骤:

到事务码SE18,BadI Builder,选择Enhancement Spot按键,提供增强点的名字点击创建,如下图所示。

2. 在创建增强点的界面,提供描述信息,在technology下拉列表选择BAdI定义,在Composite enhancement spot字段可以选择一个composite enhancement spot名称,这个是为了把关联的增强点组合在一起的一个简便方法。这个信息只是个语义方面的概念,相当于包的概念。

3. 点击OK,继续。

然后我们进入增强点修改页面,包含四个标签页:

在ENH. SPOT ELEMENT DEFINITION标签页,如图所示,点击创建BAdI按钮。

然后出现下面的对话框,输入BAdI的名称和描述信息。

如下图是BAdI定义的页面,一旦选择BAdI定义,会有一些属性的设置。

在Usability部分,你可以选择或者取消multiple use复选框,这取决于你的是否有多个BAdI实现代码,如果有多个实现,那么选择这个复选框,那么通过filter来判断哪个实现代码被调用。在Instance creation mode部分,可以选择是新创建一个实例,还是重用实例。如果选择了Context specific实例,那么实例通过context来判断,如果是同一个context,那么会使用同一个BAdI实例。指定的context类需要实现接口:IF_BADI_CONTEXT。

Fallback class选项可以让你实现一个fallback类,如果没有激活状态的BAdI实现,那么会调用这个fallback class,或者选择了multiple use选项,而且filter没有满足任何条件,那么也会调用这个fallback class。

可以在BAdI定义的名字上右键,选择create filter,来创建一个filter,如下图。

创建接口

双击Interface,来定义BAdI的接口,如下图:

弹出窗口填写接口名称

然后会跳转到class builder进行接口方法体的定义。

实现BAdI

使用事务码SE19来实现BAdI,或者在BAdI定义名称右键选择创建BAdI实现,然后会出现一个弹出窗口。

输入信息,然后弹出以下窗口,输入实现类的名称。

如下图双击Implementing Class来看接口的方法,然后双击方法,来实现这个方法。

在SE24实现method,然后激活方法,会看到如下信息。

BAdI创建成功。根据需要可以编写filter和filter的筛选逻辑,还有实现fallback class。

然后就是调用BAdI的实例了,如下是调用的代码:

抛砖引玉,希望你有机会创建自己的BAdI的时候,参考此文。谢谢。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SAP BADI的实现-构建BADI
web.xml之context-param,listener,filter,servlet加载顺序及其周边
Spring
接口引用指向实现类的对象
Flutter 开发的异常 can‘t be used as a mixin because it extends
设计模式之策略模式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服