SAP MM01 User Exit

58 篇文章 0 订阅
*&---------------------------------------------------------------------*
*&  Include           ZXMG0U02
*&---------------------------------------------------------------------*
DATA: WA_MARC TYPE MARC,
      L_MATNR TYPE MARA-MATNR,
*      l_str TYPE n LENGTH 2,    "Mark by Lisa wong 02/04/2013
      L_STR1(1TYPE C,           "Add by Lisa wong 02/04/2013
      L_STR2(1TYPE C,           "Add by Lisa wong 02/04/2013
      L_FLAG(1TYPE C,           "Add by Lisa wong 02/04/2013
      L_CNT TYPE N,               "Add by Lisa Wong 02/04/2013
      L_PEINH TYPE MBEW-PEINH,
      CH1 TYPE CHAR01,
      CH2 TYPE CHAR01,
      CH3 TYPE CHAR11,
      CH4 TYPE CHAR11,
      CH5 TYPE CHAR03,
      CH6 TYPE CHAR03,
      L_PSTAT TYPE PSTAT_D.

***********************************************  add by jack   Not allow discontinuation date as past
IF WMARC-KZAUS '1' OR WMARC-KZAUS '2' .
  IF WMARC-AUSDT < SY-DATUM AND WMARC-NFMAT <> SPACE .
    MESSAGE 'Invalid effective out-date' TYPE 'E' .
  ENDIF .
ENDIF .
***********************************************

*********************** add by agateliu check exist in table zhscode_01
IF SY-TCODE 'MM01' OR SY-TCODE 'MM02'.
  DATA: L_ZSTAWN LIKE ZHSCODE_01-ZSTAWN.
  IF WMARC-WERKS IS NOT INITIAL.
    SELECT SINGLE ZSTAWN INTO L_ZSTAWN
        FROM ZHSCODE_01
        WHERE ZSTAWN WMARC-STAWN+0(4)
         AND MTVER WMARC-MTVER.
    IF SY-SUBRC <> 0.
*      message e030(zwf) with wmarc-stawn wmarc-mtver.
    ENDIF.
  ENDIF.
ENDIF.

DATA: EXP_AUSP TYPE TABLE OF AUSP.
DATA: WA_AUSP LIKE LINE OF EXP_AUSP.
DATA: L_CUST TYPE KNA1-KUNNR.
DATA: L_PROJ TYPE CHAR20.
DATA: L_OBJ TYPE  AUSP-OBJEK.
DATA: L_ATINN1 LIKE CABN-ATINN,
      L_ATINN2 LIKE CABN-ATINN.
L_OBJ WMARA-MATNR.
CALL FUNCTION 'CLFM_GET_AUSP_FROM_BUFFER'
  EXPORTING
    OBJECT    L_OBJ
    CLASSYTPE '001'
  TABLES
    EXP_AUSP  EXP_AUSP.
SELECT SINGLE ATINN INTO L_ATINN1
     FROM CABN
     WHERE ATNAM 'ZEND_CUSTOMER'.

SELECT SINGLE ATINN INTO L_ATINN2
   FROM CABN
  WHERE ATNAM 'ZPROJ'.

LOOP AT EXP_AUSP INTO WA_AUSP.

  IF WA_AUSP-ATINN L_ATINN1.    "end_customer
    L_CUST WA_AUSP-ATWRT.
  ENDIF.

  IF WA_AUSP-ATINN L_ATINN2.
    L_PROJ WA_AUSP-ATWRT.        "project
  ENDIF.
ENDLOOP.

*  IF L_CUST IS INITIAL.
*    MESSAGE E023(zwf).
*  ENDIF .
*
*  if l_proj is initial.
*    message e024(zwf).
*  endif.

***BEGIN ADD BY AGATE  物料状态默认为99
*  Add by Lisa Wong 10/13/2012 start  RESERVE ON 10/15/2012
IF WSTAT-AKTYP 'H'.
  "If material was created, then do not trigger workflow again.
  "To avoid copy material to anther plant
  SELECT SINGLE INTO WA_MARC FROM MARC WHERE MATNR WMARA-MATNR.
  IF SY-SUBRC <> 0.
    CMARA-MSTAE '99'.
  ENDIF.

  "Logcal group no AVL
  IF WMARA-MTART 'ZLGP'.
    CMARA-MFRNR ''.
    CMARA-MFRPN ''.
  ENDIF.
ENDIF.

**  Add by Lisa Wong 10/13/2012 End
*** END

***********************************************  add by Ronnie 20120927
*************Request from yuker,need checking the manufact.
IF SY-TCODE 'MM01' OR SY-TCODE 'MM02'.

  IF WMARA-MFRNR <> ''.
    DATA:L_KTOKK LIKE LFA1-KTOKK.
    SELECT SINGLE KTOKK INTO L_KTOKK FROM LFA1
      WHERE LIFNR WMARA-MFRNR
      AND KTOKK 'MNFR'.
    IF SY-SUBRC <> 0.
      MESSAGE 'Please check manufacturer account group in the purchasing view.' TYPE 'E'.
    ENDIF.
  ENDIF.

  SELECT SINGLE PSTAT INTO L_PSTAT FROM T134 WHERE MTART WMARA-MTART.
  IF SY-SUBRC 0.
    IF 'GX' CA L_PSTAT.

      IF WMARC-WERKS '8101' OR WMARC-WERKS '8191'.
        IF WMARC-PRCTR <> '0000800010'.
          MESSAGE 'please check the Profit Center for this plant' TYPE 'E'.
        ENDIF.
      ENDIF.

      IF WMARC-WERKS '8201' OR WMARC-WERKS '8291'.
        IF WMARC-PRCTR <> '0000800020'.
          MESSAGE 'please check the Profit Center for this plant' TYPE 'E'.
        ENDIF.
      ENDIF.

      IF WMARC-WERKS '8301' OR WMARC-WERKS '8391'.
        IF WMARC-PRCTR <> '0000800030'.
          MESSAGE 'please check the Profit Center for this plant' TYPE 'E'.
        ENDIF.
      ENDIF.

    ENDIF.
  ENDIF.

ENDIF.
***********************************************

"----------
*********************************************** Add by Wallace
IF SY-TCODE EQ 'MM01' OR SY-TCODE EQ 'MM02'.
  IF WMARA-MTART EQ'ZRAW' OR
    WMARA-MTART EQ 'ZCCM' OR
    WMARA-MTART EQ 'ZSUB' OR
    WMARA-MTART EQ 'ZPCK' OR
    WMARA-MTART EQ 'ZNON' OR
    WMARA-MTART EQ 'ZINT'.
    L_STR1 WMARA-MATNR+13(1).   " Lisa 02/04/2013
    L_STR2 WMARA-MATNR+14(1).   " Lisa 02/04/2013
    L_FLAG 'X'.                 " Lisa 02/04/2013
    L_CNT 0.                    " Lisa 02/04/2013
    IF L_STR1 >= '0' AND L_STR1 <= '9' AND L_STR2 >= '0' AND L_STR2 <= '9'.    "Lisa 04/03/2013

      SELECT MATNR INTO L_MATNR FROM MARA
        WHERE MFRPN WMARA-MFRPN
          AND MFRNR WMARA-MFRNR
          AND LVORM ''.
        IF L_MATNR NE WMARA-MATNR.
          CH1 L_MATNR+11.
          CH2 WMARA-MATNR+11.
          CH3 L_MATNR.
          CH4 WMARA-MATNR.
          CH5 L_MATNR+12.
          CH6 WMARA-MATNR+12.
          L_STR1 L_MATNR+13(1).       "Lisa 04/03/2013
          L_STR2 L_MATNR+14(1).       "Lisa 04/03/2013
          L_CNT 1.
          L_FLAG 'X'.
          IF CH3 EQ CH4 AND CH5 EQ CH6 AND CH1 NE CH2 OR L_STR1 > '9' AND L_STR2 > '9'.
            L_FLAG ''.
            L_CNT 0.
          ELSE.
            IF L_STR1 GE '0' AND L_STR1 LE '9' OR  L_STR2 GE '0' AND L_STR2 LE '9'.
*            MESSAGE 'There is same Mfr Part Number and Manufact. in database' TYPE 'E'.
              exit.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDSELECT.
      IF L_FLAG 'X' AND L_CNT <> 0.
        MESSAGE 'There is same Mfr Part Number and Manufact. in database' TYPE 'E'.
      ENDIF.
    ENDIF.
  ENDIF.
  CLEAR L_PEINH.
  IF WMBEW-MATNR IS INITIAL.
    SELECT PEINH
      INTO L_PEINH
      FROM MBEW
      WHERE MATNR WMARA-MATNR.
      IF L_PEINH NE 1000.
        MESSAGE 'Price unit should be 1000' TYPE 'E'.
      ENDIF.
    ENDSELECT.
  ELSE.
    IF WMBEW-PEINH NE 1000.
      MESSAGE 'Price unit should be 1000' TYPE 'E'.
    ENDIF.
  ENDIF.
** Add by Lisa wong 01/10/2013  ZVFG/ZOTH/Bukly material not need to check backflush
  IF WMARA-MTART <> 'ZVFG' AND WMARA-ILOOS <> 'X' AND WMARA-MTART <> 'ZOTH'.
    IF WMARC-RGEKZ ''.
      MESSAGE 'Pls input backflush in MRP2' TYPE 'E'.
    ENDIF.
  ENDIF.
ENDIF.
**********************************************
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值