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按键,提供增强点的名字点击创建,如下图所示。

1ec296b182b3e7f7c0dee850b19496b1.jpeg

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

3. 点击OK,继续。

a4e790e1de2e039ab15e074795df302e.jpeg

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

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

8de6398489bfd1983583f62b43ff74a3.jpeg

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

8f7cdff861c729618b0115069a585982.jpeg

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

e446e30ed640e4cf96ebec9d84e98a7c.jpeg

在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,如下图。

6c00e0c05c96d6fe06b609b73f5b9669.jpeg

创建接口

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

92dc079b6e5b7befd16a5301882395ce.jpeg

弹出窗口填写接口名称

116b32adada689417866263e64eff041.jpeg

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

实现BAdI

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

ba21466be826074e1af2be3469eebc98.jpeg

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

628a36ad0bc1e483e6dfec3b0396bf0f.jpeg

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

3f2b42f28ff28c2f9fa7b05f1c15c7be.jpeg

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

e986ee51dd4481c90685eb52343d3749.png

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

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

1a2295a95c5a6e56e3aca816cffc4e1c.jpeg

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值