理论教育 使用BADIRSU5_SAPI

使用BADIRSU5_SAPI

时间:2023-05-30 理论教育 版权反馈
【摘要】:BADI RSU5_SAPI_BADI和用户出口RSAP0001同时存在于ERP系统中,按照ABAP语言的发展方向来看,该BADI的主要作用是SAP准备用来替换用户出口RSAP0001的,但是目前所有SAP官方的材料中并没有提及这一点,也就是说用户既可以使用该BADI,也能使用原先的用户出口RSAP0001。

使用BADIRSU5_SAPI_BADI的技巧和方法

BADI RSU5_SAPI_BADI和用户出口RSAP0001同时存在于ERP系统中,按照ABAP语言的发展方向来看,该BADI的主要作用是SAP准备用来替换用户出口RSAP0001的,但是目前所有SAP官方的材料中并没有提及这一点,也就是说用户既可以使用该BADI,也能使用原先的用户出口RSAP0001。

1.对象方法

与用户出口RSAP0001包含4个功能函数对应到4种不同数据源做法不一样的是,BADI RSU5_SAPI_BADI本身只包含了两个方法:第一个方法是DATA_TRANSFORM,主要为交易数据、主数据属性和主数据文本数据源服务;第二个方法是HIER_TRANSFORM,主要为层次结构数据源服务。但是和用户出口比起来,BADI又没有太大的变化,如果需要切换,则可以不进行任何代码的调整。

相对于用户出口,DATA_TRANSFORM方法去掉了两个参数:I_ISOURCE和I_CHA-BASNM,因为这些对象能够从数据源的名称中派生出来,其他的参数见表4-1。

表4-1 DATA_TRANSFORM接口参数

978-7-111-50218-0-Chapter04-64.jpg

但是相对于用户出口,HIER_TRANSFORM的变化就大得多。去掉了I_S_HIEBAS,因为信息对象能够从数据源的名称中派生出来;同时灵活的层次结构中的I_S_HEADER3、C_T_HIENODE3、C_T_HIEINTV3被取消了,因为BADI被设计为不支持灵活的层次结构加载,只能在BW系统中对信息对象进行直接更新,其他的参数见表4-2。

表4-2 HIER_TRANSFORM接口参数

978-7-111-50218-0-Chapter04-65.jpg

2.优缺点比较

在以往的项目上,用的更多的是用户出口,但是笔者建议在后续如果还需要对数据源进行增强,则更多地使用BADI的方式。

BADI的优势在于,能够为每一个数据源创建单独的实施,特别是在大的项目团队一起工作时,这点在2.2.3节中已经探讨过。另外一个优势在于,BADI是使用面向对象的ABAP OO方式进行编写的,符合未来的发展趋势。

3.实施步骤详解

假设有如下需求,需要对ERP系统中所有工厂的配置进行检查,查看是否允许负库存,同时需要通过工厂得到对应分配的公司代码。因此,需要在数据源0PLANT_ATTR的提取结构BIW_T001WS上增强字段XBKNG和BUKRS,如图4-41所示。

978-7-111-50218-0-Chapter04-66.jpg

图4-41 数据源抽取结构增强

在添加附加字段后,按照3.3.3节中介绍的方法修改提取结构中的隐藏字段,本处不再赘述。

完成上述工作后,实施客户化的BADI代码,步骤如下。

第1步:输入事务码SE19,进入增强实施界面,在屏幕的下半部分可以看到如图4-42所示的界面。

978-7-111-50218-0-Chapter04-67.jpg(www.daowen.com)

图4-42 BAdI增强实施界面1

第2步:在BAdI Name中,输入系统自带技术名称RSU5_SAPI_BADI,单击“Create Impl.”按钮创建一个新的实施,如ZRSU5_SAPI_BADI,如图4-43所示。

978-7-111-50218-0-Chapter04-68.jpg

图4-43 BAdI增强实施界面2

第3步:确定后,进入实施代码的详细页面,在该页面需要输入实施的简短描述,如这里输入“对数据源进行增强”,如图4-44所示。

978-7-111-50218-0-Chapter04-69.jpg

图4-44 BAdI属性维护界面

第4步:单击“Interface”标签页,可以看到在新建的实施中,系统自动包含了两个方法类,第一个适用于主数据属性、文本以及交易数据,第二个适用于主数据层次结构的增强,如图4-45所示。

978-7-111-50218-0-Chapter04-70.jpg

图4-45 BAdI增强接口界面

第5步:由于本例是主数据属性,因此需要双击“DATA_TRANSFORM”进入代码编辑界面,如图4-46所示。

978-7-111-50218-0-Chapter04-71.jpg

图4-46 DATA_TRANSFORM代码编辑界面

由于本方法的输入和输出同RSAP0001中的函数没有明显的变化,因此代码本身和退出函数相比也无太大变化,以下是示例代码。

978-7-111-50218-0-Chapter04-72.jpg

978-7-111-50218-0-Chapter04-73.jpg

执行上述代码后,使用RSA3数据源抽取测试工具查看到数据源0PLANT_ATTR抽取到的数据,如图4-47所示,其中最后两列是我们添加并且通过BAdI代码进行内容填充的字段。

978-7-111-50218-0-Chapter04-74.jpg

图4-47 数据源抽取测试结果界面

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈