SAP MM01 User exit

这篇博客详细介绍了在SAP MM01事务代码中进行用户退出时的一系列检查,包括不允许设置过去的失效日期、检查库存代码是否存在、物料状态默认设置、制造商验证以及物料类型和回冲检查等。博客通过添加注释展示了不同开发者对于代码增强的贡献。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*&---------------------------------------------------------------------*
*&  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_
STRWMARA-MATNR+13(1).   " Lisa 02/04/2013
    L_
STRWMARA-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_
STRL_MATNR+13(1).       "Lisa 04/03/2013
          L_
STRL_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_STRGE '0' AND L_STRLE '9' OR  L_STRGE '0' AND L_STRLE '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.
**********************************************

 

 

*&---------------------------------------------------------------------*
*&  Include           ZXMG0U04
*&---------------------------------------------------------------------*
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(MMUE1) LIKE  MMUE1 STRUCTURE  MMUE1
*"       CHANGING
*"             VALUE(MATNR) LIKE  MARA-MATNR
*"----------------------------------------------------------------------


Data: int type i.

Int 
strlenmatnr ).

if int < 15.
   
Message 'Material number must be 18 digits long!!' type 'E'.
endif.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值