BADI增强学习使用

1.如何查找BADI

*&---------------------------------------------------------------------*
*& Report Z_BADI_FIND
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_BADI_FIND

*REPORT Z_FIND_ENHANCEMENT
        NO STANDARD PAGE HEADING
        MESSAGE-ID zhuxy
        LINE-COUNT 65
        LINE-SIZE 120.

*** Global Date declear
TABLES:tstc,tadir,modsapt,modact,trdir,tfdir,enlfdir,sxs_attrt,tstct.
DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass.
DATA : wa_tadir TYPE tadir.
PARAMETERS : p_tcode LIKE tstc-tcode,
             p_pgmna LIKE tstc-pgmna .

*======================================================================*
*  Selection Screen Events
*======================================================================*
***  maintain selection screen output
AT SELECTION-SCREEN OUTPUT.
*** F4 value help
*AT SELECTION-SCREEN ON VALUE-REQUEST for <para/sel-opt>.
*** check input data
AT SELECTION-SCREEN.
*AT SELECTION-SCREEN ON <f>.
*AT SELECTION-SCREEN ON BLOCK <>.
****CHECK ON SELECT SCREEN INPUT

*======================================================================*
*  Report Events
*======================================================================*
*** initial data
INITIALIZATION.

*** prepare report data
START-OF-SELECTION.
*########
  PERFORM get_data.
**#ò######
*  PERFORM write_data.
*** output report

END-OF-SELECTION.

*======================================================================*
*  List Events
*======================================================================*
*** page header
TOP-OF-PAGE.

*** page header after first list
TOP-OF-PAGE DURING LINE-SELECTION.

*** page footer
END-OF-PAGE.

*** when double click
AT LINE-SELECTION.
  PERFORM line_sel.

*** when click some icon (function code)
*at user-command.

*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       ########
*----------------------------------------------------------------------*
FORM get_data .
  IF NOT p_tcode IS INITIAL.
    SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode.
  ELSEIF NOT p_pgmna IS INITIAL.
    tstc-pgmna = p_pgmna.
  ENDIF.
  IF sy-subrc EQ 0.
    SELECT SINGLE * FROM tadir
    WHERE pgmid = 'R3TR'
     AND object = 'PROG'
     AND obj_name = tstc-pgmna.
    MOVE : tadir-devclass TO v_devclass.
    IF sy-subrc NE 0.
      SELECT SINGLE * FROM trdir
       WHERE name = tstc-pgmna.
      IF trdir-subc EQ 'F'.
        SELECT SINGLE * FROM tfdir
         WHERE pname = tstc-pgmna.
        SELECT SINGLE * FROM enlfdir
         WHERE funcname = tfdir-funcname.
        SELECT SINGLE * FROM tadir
         WHERE pgmid = 'R3TR'
         AND object = 'FUGR'
         AND obj_name EQ enlfdir-area.
        MOVE : tadir-devclass TO v_devclass.
      ENDIF.
    ENDIF.
    SELECT * FROM tadir INTO TABLE jtab WHERE pgmid = 'R3TR' AND
     object IN ('SMOD', 'SXSD') AND
     devclass = v_devclass.
    SELECT SINGLE * FROM tstct WHERE sprsl EQ sy-langu AND
     tcode EQ p_tcode.
    FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
    WRITE:/(19) 'Transaction Code - ',
    20(20) p_tcode,
    45(50) tstct-ttext.
    SKIP.
    IF NOT jtab[] IS INITIAL.
      WRITE:/(105) sy-uline.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.
      SORT jtab BY object.
      DATA : wf_txt(60) TYPE c,
          wf_smod TYPE i ,
          wf_badi TYPE i ,
          wf_object2(30) TYPE c.
      CLEAR : wf_smod, wf_badi , wf_object2.
      LOOP AT jtab INTO wa_tadir.
        AT FIRST.
          FORMAT COLOR COL_HEADING INTENSIFIED ON.
          WRITE:/1 sy-vline,
            2 'Enhancement/ Business Add-in',
            41 sy-vline ,
            42 'Description',
            105 sy-vline.
          WRITE:/(105) sy-uline.
        ENDAT.
        CLEAR wf_txt.
        AT NEW object.
          IF wa_tadir-object = 'SMOD'.
            wf_object2 = 'Enhancement' .
          ELSEIF wa_tadir-object = 'SXSD'.
            wf_object2 = ' Business Add-in'.
          ENDIF.
          FORMAT COLOR COL_GROUP INTENSIFIED ON.
          WRITE:/1 sy-vline,
             2 wf_object2,
             105 sy-vline.
        ENDAT.
        CASE wa_tadir-object.
          WHEN 'SMOD'.
            wf_smod = wf_smod + 1.
            SELECT SINGLE modtext INTO wf_txt
             FROM modsapt
             WHERE sprsl = sy-langu
              AND name = wa_tadir-obj_name.
            FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
          WHEN 'SXSD'.
*             * for badis
            wf_badi = wf_badi + 1 .
            SELECT SINGLE text INTO wf_txt
             FROM sxs_attrt
             WHERE sprsl = sy-langu
              AND exit_name = wa_tadir-obj_name.
            FORMAT COLOR COL_NORMAL INTENSIFIED ON.
        ENDCASE.
        WRITE:/1 sy-vline,
           2 wa_tadir-obj_name HOTSPOT ON,
           41 sy-vline ,
           42 wf_txt,
           105 sy-vline.
        AT END OF object.
          WRITE : /(105) sy-uline.
        ENDAT.
      ENDLOOP.
      WRITE:/(105) sy-uline.
      SKIP.
      FORMAT COLOR COL_TOTAL INTENSIFIED ON.
      WRITE:/ 'No.of Exits:' , wf_smod.
      WRITE:/ 'No.of BADis:' , wf_badi.
    ELSE.
      FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
      WRITE:/(105) 'No userexits or BADis exist'.
    ENDIF.
  ELSE.
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    WRITE:/(105) 'Transaction does not exist'.
  ENDIF.
ENDFORM. " get_data

*&---------------------------------------------------------------------*
*&      Form  line_sel
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM line_sel .
  DATA : wf_object TYPE tadir-object.
  CLEAR wf_object.
  GET CURSOR FIELD field1.
  CHECK field1(8) EQ 'WA_TADIR'.
  READ TABLE jtab WITH KEY obj_name = sy-lisel+1(20).
  MOVE jtab-object TO wf_object.
  CASE wf_object.
    WHEN 'SMOD'.
      SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
      CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
    WHEN 'SXSD'.
      SET PARAMETER ID 'EXN' FIELD sy-lisel+1(20).
      CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
  ENDCASE.
ENDFORM. " line_sel
*Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2019. Sap Release 731

2.查找到了BADI怎么用

在这里插入图片描述

2.1可以双击跳转

2.2可以复制BADI名称,用SE18打开

在这里插入图片描述

2.3显示后,可以看到

在这里插入图片描述

2.4点击上方的实施

![在这里插入图片描述](https://img-blog.csdnimg.cn/41c5e2e2fe944fd2bf586fad93483ed0.png

2.5点创建,输入实施主体的名称

在这里插入图片描述

2.6填写实施的文本

在这里插入图片描述

2.7双击接口的方法名称

在这里插入图片描述

2.8就可以跳转到接口的实现里面了

在这里插入图片描述

3.0如果已经创建了的增强,如何查看呢?

点击-实施-查询即可
在这里插入图片描述4.0接口的示范案例:
在这里插入图片描述解析:

  METHOD if_ex_me_process_po_cust~check.
    "此增强对采购订单进行校验增强,当如果项目是L,订单类型不是htt2保存报错

    DATA: ls_header TYPE mepoheader,
          ls_item   TYPE mepoitem,
          lt_poitem TYPE purchase_order_items,
          lo_poitem TYPE purchase_order_item.

    ls_header = im_header->get_data( ).

    lt_poitem = im_header->get_items( ).
    LOOP AT lt_poitem INTO lo_poitem.
      ls_item = lo_poitem-item->get_data( ).
      IF ls_item-pstyp EQ '3' AND ls_header-bsart NE 'HTT2'. "L项目订单类型不是htt2保存报错
        MESSAGE e000(oo) WITH ls_item-ebelp  '行的项目类别为L时订单类型必须是HTT2'.
        ch_failed = 'X'.
        EXIT.
      ENDIF.
    ENDLOOP.
  ENDMETHOD.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值