ABAP-BP创建供应商增强

需求:供应商和客户加"名称+税号"强校验,防止同一客商重复录入

供应商名称重复校验:SE18->BADI->BUPA_ADDR_CHECK(地址及一般信息检查)

复制代码
  METHOD if_ex_bupa_addr_check~check.
    DATA:ev_ok_code TYPE  bu_fcode.

    CALL FUNCTION 'BUS_LOCATOR_OKCODE'
      IMPORTING
        ev_ok_code = ev_ok_code.

    IF ( ev_ok_code = 'BUS_MAIN_SAVE' OR ( ev_ok_code = 'BUS_MAIN_BACK' AND sy-ucomm =  'YES' ) ) AND
        sy-tcode =  'BP' AND
        ( sy-mandt EQ '140' OR sy-mandt EQ '400' OR sy-mandt EQ '900' ) AND
        iv_activity EQ '01' AND
        is_but000-bu_group = 'S001'.

      FIELD-SYMBOLS:<fs_role> TYPE any.
      ASSIGN ('(SAPLBUPA_DIALOG_JOEL)BUS_JOEL_MAIN-PARTNER_ROLE') TO <fs_role>.

      IF <fs_role> EQ 'ZKD001X'.

        "查询
        SELECT COUNT(*)
          FROM lfa1
         WHERE name1 EQ is_but000-name_org1.

        IF sy-subrc EQ 0.
          MESSAGE '存在相同名称的供应商,请确认' TYPE 'A'.
        ENDIF.
      ENDIF.
    ENDIF.

  ENDMETHOD.
复制代码

税号校验:SE38->LBUPA_BUTX_DIALOGF01->FORM gt_bptaxnum_modify(隐式增强).

复制代码
ENHANCEMENT 1  ZBP_CHECK_TAXNUM.    "active version
  IF sy-tcode EQ 'BP' AND
     ( sy-mandt EQ '140' OR sy-mandt EQ '400' OR sy-mandt EQ '900' ).
      FIELD-SYMBOLS <fs_group> TYPE any.
      FIELD-SYMBOLS <fs_role> TYPE any.

      DATA:ev_ok_code TYPE  bu_fcode.

      CALL FUNCTION 'BUS_LOCATOR_OKCODE'
        IMPORTING
          ev_ok_code = ev_ok_code.

      IF ( ev_ok_code = 'BUS_MAIN_SAVE' OR ( ev_ok_code = 'BUS_MAIN_BACK' AND sy-ucomm =  'YES' ) ).
        ASSIGN ('(SAPLBUPA_DIALOG_JOEL)BUS_JOEL_MAIN-CREATION_GROUP') TO <fs_group>.
        ASSIGN ('(SAPLBUPA_DIALOG_JOEL)BUS_JOEL_MAIN-PARTNER_ROLE') TO <fs_role>.

        IF <fs_group> IS ASSIGNED AND <fs_role> IS ASSIGNED.

          IF <fs_group> EQ 'S001' AND <fs_role> EQ 'ZKD001X'.
            SELECT COUNT(*)
              FROM lfa1
             WHERE lifnr EQ dfkkbptaxnum-partner.

            "新建
            IF sy-subrc NE 0 AND dfkkbptaxnum-taxnumxl IS NOT INITIAL.
               "查询是否有相同税号的供应商
              SELECT COUNT(*)
                FROM lfa1
               WHERE stcd5 EQ dfkkbptaxnum-taxnumxl.

              IF sy-subrc EQ 0.
                MESSAGE '已存在相同税号的供应商,请确认' TYPE 'A'.
              ENDIF.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.

  ENDIF.
ENDENHANCEMENT.
复制代码
posted @   阿胖的阿多  阅读(722)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示