SAP BADI应用 好东西就应该分享

SAP BADI应用 好东西就应该分享 图0

1.定义BADI

1)T-Code:SE18BusinessAdd-InDefine.

2)输入要创建的BADI的名字,点击”Create”。

3)输入BADI的描述性文本,在”Interface”选项卡上输入接口的名字,也可以采用SAP建议的接口的名字。同时,BADI类也会被创建。

例如:对于BADI”ZTEST”,SAP会建议”ZIF_EX_TEST”作为接口的名字,”ZCL_EX_TEST”作为类的名字。

4)保存BADI。

5)双击接口的名字,会跳转到ClassBuilder界面,在这里你可以定义接口的方法。

6)保存并激活接口。

SAP BADI应用 好东西就应该分享 图1

2.实现BADI

1)T-Code:SE19BusinessAdd-InImplementation

2)输入BADI实现的名字,点击”Create”。

3)输入BADI定义的名字。

4)输入实现的描述性文本,在”Interface”选项卡上输入实现类的名字。可以采用SAP建议的名字。

例如:”ZIMPTEST”,SAP会建议”ZCL_IM_IMPTEST”。

5)保存实现。

6)双击某一方法名会跳转到ClassBuilder界面,在这里你可以添加代码来重定义接口方法。

7)激活实现。

SAP BADI应用 好东西就应该分享 图2

SAP BADI应用 好东西就应该分享 图3

3.程序中调用BADI

1).先用类型参照引用出要调用的BADI

2).实例化BADI

3).实例化后就可以任意调用BADI中的方法了。

REPORTZZW_BAPI_01.

dataexittypereftoZIF_EX_ZW_BD_TEST.

callmethodcl_exithandler=>get_instance

changing

instance=exit.

callmethodexit->Z_ZW_01.

==》

badi小记

BADI作为SAP的第三代用户出口,他的应用也越来越广泛,但如何找到合适的badi是许多abap程序员的困惑。我这里就介绍一下我个人的应用的经验,供大家参考。

1、badi对象的信息存储在SXS_INTER,SXC_EXIT,SXC_CLASS和SXC_ATTR这四个表中(参见SECE包);

2、sap程序都会调用cl_exithandler=>get_instance来判断对象是否存在,并返回实例;其实get_instance就是对上述几个表和他们的视图(V_EXT_IMP和V_EXT_ACT)进行查询和搜索。

3、基于这个机理,我查用ST05来监控一个TCODE来跟踪,然后选择查找有关上述几个表和视图的操作,就可获得相关BADI。

4、se18查找接口,se19实现接口就可以实现用户增强。

示例:用LE_SHP_DELIVERY_PROC控制跨月Cancel

METHODIF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_HEADER.

data:thismonth(2)typec.

data:wa_likptypelineofSHP_LIKP_T.

data:wa_logtypelineofSHP_BADI_ERROR_LOG_T.

clearct_log[],thismonth.

thismonth=sy-datum+4(2).”—–>这一个月的月份

loopatit_xlikpintowa_likp.

checkIS_V50AGL-WARENAUSG_STORNO=’X’.”—>代表作GIcancel

ifwa_likp-WADAT_IST+4(2)<thismonth.

wa_log-VBELN=cs_likp-vbeln.

wa_log-MSGTY=’E’.”错误信息

wa_log-MSGID=’ZDN_ERROR’.”这一个class要自己建

wa_log-MSGNO=’001′.

appendwa_logtoct_log.”Errorlog写入

endif.

endloop.

ENDMETHOD.

相关文章

联系我们

联系我们

130-0752-1773

在线咨询:点击这里给我发消息

邮件:info@sapzx.com

工作时间:周一至周五9:00-18:00,节假日正常休息

关注微信
关注微信
分享本页
返回顶部