SAP CO11N/CO15工单报工BADI增强出口(保存前、保存后、数据验证)
  RdEelXhuDp09 2023年11月19日 32 0


1. 增强BADI

  • BADI:WORKORDER_CONFIRM

2. 增强实现

  • 全局变量
  • SAP CO11N/CO15工单报工BADI增强出口(保存前、保存后、数据验证)_ABAP

  • IF_EX_WORKORDER_CONFIRM~AT_CANCEL_CHECK
METHOD if_ex_workorder_confirm~at_cancel_check.
   IF is_confirmation-vornr IS INITIAL.
     CLEAR gv_vornr.       "CO15
   ELSE.
     gv_vornr = 'X'.       "CO11N
   ENDIF.
   gv_aufnr = is_confirmation-aufnr.
 ENDMETHOD.
  • IF_EX_WORKORDER_CONFIRM~BEFORE_UPDATE
METHOD if_ex_workorder_confirm~before_update.
    DATA: wa_afrub TYPE afrub.
    DATA: wa_ztwms_t008 TYPE ztwms_t008,
          lt_ztwms_t008 TYPE TABLE OF ztwms_t008.
    DATA: lv_vornr      TYPE afvc-vornr.

    CASE sy-tcode.
      WHEN 'CO11N'.                                       "工序报工
        READ TABLE it_confirmation INTO wa_afrub INDEX 1.
        IF sy-subrc = '0'.
          "取最大工序号码
          SELECT MAX( b~vornr )
            FROM afko AS a
            LEFT JOIN afvc AS b
              ON a~aufpl = b~aufpl
            WHERE aufnr = @wa_afrub-aufnr
            INTO @lv_vornr.
          "是否有最后一道工序报工数据
          READ TABLE it_confirmation INTO wa_afrub WITH KEY vornr = lv_vornr.
          IF sy-subrc = '0'.
            SELECT SINGLE
                a~aufnr,a~matnr,b~maktx,
                a~charg,a~kdauf,a~kdpos,a~meins,
                '生产入库' AS zdjlx,
                '合格' AS zstatus,
                'X' AS zflag
                FROM afpo AS a
                LEFT JOIN makt AS b
                  ON a~matnr = b~matnr
                  AND b~spras = @sy-langu
              WHERE a~aufnr = @wa_afrub-aufnr
              AND a~dauat NOT IN  ('ZP02','ZP04')
                INTO CORRESPONDING FIELDS OF @wa_ztwms_t008.

            IF wa_ztwms_t008 IS NOT INITIAL.            "查询到符合条件的数据,保存到中间表
              CALL FUNCTION 'ZFM_MOVE_CORRESPONDING'
                EXPORTING
                  is_input     = wa_afrub
                  iv_structure = 'AFRUB'
                  cv_structure = 'ZTWMS_T008'
                CHANGING
                  cs_input     = wa_ztwms_t008.
              APPEND wa_ztwms_t008 TO  lt_ztwms_t008.
            ENDIF.
          ENDIF.
        ENDIF.

      WHEN 'CO13'.
        IF gv_vornr = abap_true.                "判断是否工序报工
          "取最大工序号码
          SELECT MAX( b~vornr )
            FROM afko AS a
            LEFT JOIN afvc AS b
              ON a~aufpl = b~aufpl
            WHERE aufnr = @gv_aufnr
            INTO @lv_vornr.
          "读是否有最后一道工序报工数据(最后一道工序报工才同步)
          READ TABLE it_confirmation INTO wa_afrub WITH KEY vornr = lv_vornr.
          IF sy-subrc = '0'.
            SELECT SINGLE
                a~aufnr,a~matnr,b~maktx,
                a~charg,a~kdauf,a~kdpos,a~meins,
                '生产入库' AS zdjlx,
                '合格' AS zstatus,
                'X' AS zflag
                FROM afpo AS a
                LEFT JOIN makt AS b
                  ON a~matnr = b~matnr
                  AND b~spras = @sy-langu
              WHERE a~aufnr = @wa_afrub-aufnr
              AND a~dauat NOT IN  ('ZP02','ZP04')
                INTO CORRESPONDING FIELDS OF @wa_ztwms_t008.

            IF wa_ztwms_t008 IS NOT INITIAL.            "查询到符合条件的数据,保存到中间表
              CALL FUNCTION 'ZFM_MOVE_CORRESPONDING'
                EXPORTING
                  is_input     = wa_afrub
                  iv_structure = 'AFRUB'
                  cv_structure = 'ZTWMS_T008'
                CHANGING
                  cs_input     = wa_ztwms_t008.
              APPEND wa_ztwms_t008 TO  lt_ztwms_t008.
            ENDIF.
          ENDIF.
        ELSE.                                    "非工序报工
          READ TABLE it_confirmation INTO wa_afrub WITH KEY stokz = 'X'.
          IF sy-subrc = '0'.
            SELECT SINGLE
              a~aufnr,a~matnr,b~maktx,
              a~charg,a~kdauf,a~kdpos,a~meins,
              '生产入库' AS zdjlx,
              '合格' AS zstatus,
              'X' AS zflag
              FROM afpo AS a
              LEFT JOIN makt AS b
                ON a~matnr = b~matnr
                AND b~spras = @sy-langu
              WHERE a~aufnr = @wa_afrub-aufnr
              AND a~dauat NOT IN  ('ZP02','ZP04')
              INTO CORRESPONDING FIELDS OF @wa_ztwms_t008.

            IF wa_ztwms_t008 IS NOT INITIAL.            "查询到符合条件的数据,保存到中间表
              CALL FUNCTION 'ZFM_MOVE_CORRESPONDING'
                EXPORTING
                  is_input     = wa_afrub
                  iv_structure = 'AFRUB'
                  cv_structure = 'ZTWMS_T008'
                CHANGING
                  cs_input     = wa_ztwms_t008.
              APPEND wa_ztwms_t008 TO  lt_ztwms_t008.
            ENDIF.
          ENDIF.
        ENDIF.
      WHEN 'CO15'.                                    "整体报工
        READ TABLE it_confirmation INTO wa_afrub INDEX 1.
        IF sy-subrc = '0'.
          SELECT SINGLE
            a~aufnr,a~matnr,b~maktx,
            a~charg,a~kdauf,a~kdpos,a~meins,
            '生产入库' AS zdjlx,
            '合格' AS zstatus,
            'X' AS zflag
            FROM afpo AS a
            LEFT JOIN makt AS b
              ON a~matnr = b~matnr
              AND b~spras = @sy-langu
            WHERE a~aufnr = @wa_afrub-aufnr
            AND a~dauat NOT IN  ('ZP02','ZP04')
            INTO CORRESPONDING FIELDS OF @wa_ztwms_t008.

          IF wa_ztwms_t008 IS NOT INITIAL.            "查询到符合条件的数据,保存到中间表
            CALL FUNCTION 'ZFM_MOVE_CORRESPONDING'
              EXPORTING
                is_input     = wa_afrub
                iv_structure = 'AFRUB'
                cv_structure = 'ZTWMS_T008'
              CHANGING
                cs_input     = wa_ztwms_t008.
            APPEND wa_ztwms_t008 TO  lt_ztwms_t008.
          ENDIF.
        ENDIF.
      WHEN OTHERS.
    ENDCASE.
    IF lt_ztwms_t008 IS NOT INITIAL.
      MODIFY ztwms_t008 FROM TABLE lt_ztwms_t008.
    ENDIF.

    CLEAR: wa_ztwms_t008,lt_ztwms_t008,lv_vornr,wa_afrub.
  ENDMETHOD.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
RdEelXhuDp09