zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    Nginx 前后端分离部署
    SpringBoot 使用外部 Tomcat 容器运行
    SpringBoot 加载 properties
    SpringBoot 启动时加载的自动配置类(SpringFactoriesLoader、SPI)
    微信小程序订阅消息通知
    centos云服务器 部署Gitblit
    centos 安装java
    图片链接控制宽高
    腾讯云部署https
    腾讯云域名绑定
  • 原文地址:https://www.cnblogs.com/byfhd/p/779706.html
Copyright © 2011-2022 走看看