MB21、MB22预留单检查增强

实施BADI增强:MB_RESERVATION_BADI

image

 代码:

  METHOD if_ex_mb_reservation_badi~data_check.

    TYPES: BEGIN OF ty_rseg.
             INCLUDE TYPE resb.
    TYPES:   xselk TYPE rm07m-xselk,
             xselz TYPE rm07m-xselk,
             oldbd TYPE resb-bdter,
             xneup TYPE char1.
    TYPES: END OF ty_rseg.

    DATA: lt_rseg TYPE TABLE OF ty_rseg.

    FIELD-SYMBOLS: <lt_resg> TYPE any.

    CHECK is_rkpf-bwart = '311'.

    ASSIGN ('(SAPMM07R)YRSEG[]') TO <lt_resg>.

    lt_rseg = <lt_resg>.

    SORT lt_rseg BY matnr werks lgort.

    IF i_new_item = 'X'.
      READ TABLE lt_rseg TRANSPORTING NO FIELDS WITH KEY
           matnr = is_resb-matnr
           werks = is_resb-werks
           lgort = is_resb-lgort
           BINARY SEARCH.
      IF sy-subrc = 0.
        MESSAGE |物料{ is_resb-matnr }工厂{ is_resb-werks }仓库{ is_resb-lgort }有重复项!| TYPE 'E'.
      ENDIF.
    ELSE.

      SELECT COUNT( * ) FROM @lt_rseg AS it
             WHERE matnr = @is_resb-matnr
               AND werks = @is_resb-werks
               AND lgort = @is_resb-lgort
               AND rspos NE @is_resb-rspos
      INTO @DATA(lv_count).
      IF lv_count >= 1.
        MESSAGE |物料{ is_resb-matnr }工厂{ is_resb-werks }仓库{ is_resb-lgort }有重复项!| TYPE 'E'.
      ENDIF.

    ENDIF.

  ENDMETHOD.

 

posted @ 2026-01-11 17:02  鲸与海  阅读(3)  评论(0)    收藏  举报