壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 922|回复: 0

[入门] 么是BADI,如何从SAP中查找BADI?

[复制链接]
发表于 2013/5/23 17:34:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
什么是BADI,如何从SAP中查找BADI?
Business Add-Ins are a new SAP enhancement technique based on ABAP Objects. They can be inserted into the SAP System to accommodate user requirements too specific to be included in the standard delivery. Since specific industries often require special functions, SAP allows you to predefine these points in your software.
SAP预定义了一些Interface,客户可以自己定义实现Interface的Class进行客户化,在标准程序中会使用调用客户自定义Class的Instance,在获取Instance的过程使用了工厂模式,因此获取过程对用户是未知的。不过BADI也有一些局限性,就是有哪些Interface是固定死的,有的时候会发现需要Mix客户化代码的时候找不到Interface,什么时候SAP的OO里面直接支持AOP就好了。
如何从SAP中查找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
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. "IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_HEADER
TCODE:
SE18
SE19



您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 09:47 , Processed in 0.020638 second(s), 18 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表