金东 sap blog--无名之家

SAP PP IT

  博客中心 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  89 随笔 :: 4 文章 :: 13 评论 :: 0 Trackbacks
Cached @ 2025/4/29 10:09:28Control ASP.skins_cogitation_controls_blogstats_ascx
<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

News

在线积分免费打电话:校园梦网网络电话,中国最优秀的网络电话

留言簿(7)

随笔分类

随笔档案

文章分类

文章档案

相册

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜

Cached @ 2025/4/29 10:09:28Control ASP.skins_cogitation_controls_singlecolumn_ascx
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

METHOD IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_HEADER .
data : thismonth(2) type c.
data : wa_likp type line of SHP_LIKP_T.
data : wa_log type line of SHP_BADI_ERROR_LOG_T.
clear ct_log[],thismonth.
thismonth = sy-datum+4(2). "----->這一個月的月份
loop at it_xlikp into wa_likp.
check IS_V50AGL-WARENAUSG_STORNO ='X'."--->代表作GI cancel
if wa_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'.
append wa_log to ct_log. "Error log寫入
endif.
endloop.
ENDMETHOD.

 

 

 

BADI的实现步骤。


A.BADI定义

1.SE18。

2.输入要创建的BADI的名字,点击"Create"。

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

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

4.保存BADI。

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

6.保存并激活接口。


B.在应用程序中调用BADI

1.声明一个BADI接口的参考引用变量。

例如:DATA exit_ref TYPE REF TO zif_ex_test.

2.调用类CL_EXITHANDLER的静态方法GET_INSTANCE,将返回一个请求对象的实例。

例如:

CALL METHOD CL_EXITHANDLER=>GET_INSTANCE
CHANGING instance = exit_ref。

3.现在你可以调用BADI的所有方法了


C.BADI实现

1.SE19。

2.输入BADI实现的名字,点击"Create"。

3.输入BADI定义的名字。

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

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

5.保存实现。

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

7.激活实现。
分享按钮发布于: 2008-04-16 09:39 jindong 阅读(676) 评论(0)  编辑 收藏

评论

标题
姓名
主页
内容 
  登录  使用高级评论  Top 订阅回复  取消订阅
[使用Ctrl+Enter键可以直接提交]