如何定义(Definition)并应用(Implementation)SAP BADI(转)

1, T-CODE:SE18,进入如下界面,选中 ’ Enhancement Spot’ 并输入所决定的名称.

clip_image002

2, 点击上图中的 ’Create’ 按钮进入下一屏.在下面这个屏幕中输入Short Text,然后选择绿勾按钮.

clip_image004

3,在上一屏,选择绿勾按钮后,出现下面这个屏幕,输入合适的package,可以使用本地对象这个package,然后点左下角的保存按钮.

clip_image006

4,在上一屏保存之后出现下面的界面.选择 ‘Enh. Spot Element Definitions’ 这个页签(这个是进入后的默认页签),点击该页签左上角的 ‘Create BAdI’ 按钮,进入下一屏.

clip_image008

5,在如下屏幕中输入 BAdI Definition的name和Short Description. 然后选择绿勾按钮

clip_image010

6,在上一屏选择绿勾后,在界面左边部分,找到Z_BADI_SAY字样,然后点开,双击Interface,然后在屏幕右边部分找到Interface字段,并填上自己决定的名称.最后点击保存.

clip_image012

7, 在上一屏中点击保存后出现如下对话框,选择Yes创建object.

clip_image014

8,创建object时,同样需要选择合适的package,这里仍然选择本地package.如下图所示.

clip_image016

9,在上一屏选择保存按钮之后,出现下面这个对话框,选择yes按钮表示保存.

clip_image018

10,在上一屏选择yes按钮保存之后,系统会跳到如下界面,要求我们给这个BADI定义method方法.这里定义了一个方法,名为say, level选择Instance Method, 然后在后面的description里面填写上你所需要的描述.根据实际情况,决定是否需要参数. 这里需要一个输入参数,以便测试.所以点击下面这个屏幕的左上中部分的那个Parameters按钮.进入下一屏.

clip_image020

11,在面的参数定义table control中,输入一个参数,名为forsay, 类型type为:importing.选中Pass Value,在Associated type中输入C,表示字符型. 点屏幕左上中部分的Methods按钮返回到方法设置界面.点击屏幕最上方的保存按钮,然后点击激活按钮.

clip_image022

12,在上一屏点击激活按钮后,出现下面的对话框,本次需要激活的对象都已默认选择,直接选择左下角的绿勾按钮确认.

clip_image024

13,到此为止,一个BADI的definition部分就算做完了.直接在上面一步绿勾激活后停留的界面上,在命令区域输入/NSE18, 或者/OSE18打开一个新的对话进程.我们将implementing这个BADI, 维护BADI Implementation.

在如下界面中,选择菜单->Enhancement Implementation->Create.

clip_image026

14, 在上一步选择create之后,出现下面这个对话框,填写上面两个必输field之后,选择绿勾按钮确认.

clip_image028

15,在上一步选择绿勾按钮确认后,出现下面的对话框,选择合适的package以便保存.

clip_image030

16, 在上一步选择保存之后,出现如下对话框, 需要在BAdI Implementation这个列中,填写上我们第14中填写的Enhancement Implementation中值,即z_badi_say_impl. 填写完成后,选择左下角的绿勾按钮确认.

clip_image032

17,在上一步如果正确填写了BAdI Implementation列值后,将会进入如下界面.在这个界面中,选择Enh. Implementation Elements页签,在该页签的左边部分找到并点开Z_BADI_SAY_IMPL,然后双击出现的Implementing Class,直到该页签右边部分出现需要填写的Implementing Class字段,在该字段上填写上名称.

clip_image034

18, 在上一步操作完成后,点击上一屏上的保存按钮,出现下面对话框,选择Y确认创建该object.

clip_image036

19, 在创建时又会出现选择package的对话框,请选择合适的package.这里可以选择本地package.

clip_image038

20, 在上一步进行保存之后,如果一切都正确,则会出现下面的界面.将会出现我们在BADI Definition部分创建的method,在此即z_badi_say_interface~say. 双击该method.

clip_image040

21, 双击方法method时,出现下面这个确认对话框,选择Yes进行创建create.

clip_image042

22,在上一步选择Yes进行创建后,将会进入下面这个屏幕.如果不是在编辑状况,请点击左上角的Display<->Change按钮,切换到编辑状态.

clip_image044

23, 在编辑状态下,输入需要的codes.这里很简单,只是将在BADI Definition中定义的形参forsay给popup出来.

clip_image046

24, 上一步中输入的简单代码如下:

CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
      textline1          = forsay.

25,校验代码没有问题后,保存并激活.在点激活时出现如下界面,将所有项都选择后,点绿勾确认按钮.

clip_image048

26,以上完成了BADI的definition和implementation.下面创建一个非常简单的report进行测试.

REPORT  Z_TEMP.
DATA: EXIT_SAY TYPE REF TO Z_BADI_SAY_IMPL_CLS,
      EXIT_SAY_INS TYPE REF TO Z_BADI_SAY_INTERFACE.
WRITE: 'CLICK ME' HOTSPOT.
AT LINE-SELECTION.
CREATE OBJECT EXIT_SAY.
  EXIT_SAY_INS = EXIT_SAY.
CALL METHOD EXIT_SAY_INS->SAY
EXPORTING
        FORSAY = 'Hi you'.

27,总结.以后,在不改动上面这个简单的report的情况下,我们通过更改这个report所对应的BADI的say方法,就可以让这个report作出不同的效果.就比如SAP标准程序中有Call method的地方,并且对应BADI的话,我们可以不改动程序,通过应用BADI,实现程序的额外功能.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值