MM发货移动收货MB01/MB1A/MB1C/MB21/MIGO/等用到的user-exitMBCF0002

MBCF0002

*&---------------------------------------------------------------------*

*&  包括                ZXMBCU02
*&---------------------------------------------------------------------*


DATA: movetype(20)   VALUE  '261 201',
      movetype1(20)  VALUE  '261 262 201 202',
      ordtype(60)    VALUE  'ZP02 ZP03 ZP04 ZPS2 ZPS3 Z161 Z162 Z163 Z361 Z362 Z363',
      matkl  LIKE mara-matkl,
      l_mseg  TYPE  mseg,
      stprs  LIKE mbew-stprs,
      zkprs  LIKE mbew-zkprs.
.
IF ( sy-datum  GE  '20111230'   AND sy-uzeit  GE  '170000' AND ( sy-datum  LE  '20120101'   AND sy-uzeit  LE  '080000' ).
   IF  i_mseg-lgort+0(1) =  'T'.
     MESSAGE  '应财务和物流要求目前关闭 备品备件库收发存'  TYPE  'E'.
  ENDIF.
ENDIF.

IF ( sy-datum  GE  '20111230'   AND sy-uzeit  GE  '170000' AND ( sy-datum  LE  '20120101'   AND sy-uzeit  LE  '080000' ).
   IF  i_mseg-lgort  EQ  'C001'  OR  i_mseg-lgort  EQ  'X003' .
     MESSAGE  '应财务和物流要求目前关闭 C001 X003 收发存'  TYPE  'E'.
  ENDIF.
ENDIF.

IF  i_mseg-grund  IS INITIAL.
   IF i_mseg-bwart  EQ  '412'  OR i_mseg-bwart  EQ  '414'.
     MESSAGE  '412,414移类型禁止使用。'  TYPE  'E'.
  ENDIF.
   "20110427增强标准价格为0.01的不允许移动
   IF sy-tcode  EQ  'MB01'.
     IF i_mseg-matnr+10(1)  EQ  1.
      CLEAR: stprs,zkprs.
       SELECT  SINGLE stprs zkprs  INTO (stprs , zkprs)  FROM mbew  WHERE matnr = i_mseg-matnr.
       IF stprs  EQ  '0.01'  AND zkprs <=  '0.01'.
         MESSAGE e010(zmmmsg)  WITH i_mseg-matnr.
      ENDIF.
    ENDIF.
  ENDIF.
   "20110427增强标准价格为0.01的不允许移动1
   IF sy-tcode =  'MB31'.
     IF  i_mseg-lgort+0(1) =  'C'  AND i_mseg-lgort  NE  'C002'.
       AUTHORITY-CHECK OBJECT  'ZMMOBJ002'  ID  'ZMB31C'  FIELD  '01'. "20110120增强MB31入成品库半成品权限检查
       IF sy-subrc  NE  0.
         MESSAGE  '您没有成品库权限'  TYPE  'E'.
      ENDIF.
     ELSEIF  i_mseg-lgort  EQ  'C002'.
       AUTHORITY-CHECK OBJECT  'ZMMOBJ004'  ID  'ZMB31C002'  FIELD  '01'.
       IF  sy-subrc  EQ  0.
        CLEAR:matkl.
         SELECT  SINGLE mara~matkl  INTO matkl  FROM mara  WHERE mara~matnr = i_mseg-matnr.
         IF matkl  NE  '039'.
           MESSAGE  '您的权限只能收料物料组为039胶板类产品.'  TYPE  'E'.
        ENDIF.
      ELSE.
         AUTHORITY-CHECK OBJECT  'ZMMOBJ002'  ID  'ZMB31C'  FIELD  '01'.
         IF sy-subrc  NE  0.
           MESSAGE  '您没有成品库权限'  TYPE  'E'.
        ENDIF.
      ENDIF.
    ENDIF.



     IF  i_mseg-lgort+0(1)  =  'B'  AND i_mseg-lgort  NE  'B002'.
       AUTHORITY-CHECK OBJECT  'ZMMOBJ003'  ID  'ZMB31B002'  FIELD  '01'. "20110120增强MB31入成品库半成品权限检查
       IF sy-subrc  NE  0.
         MESSAGE  '您没有半成品库权限'  TYPE  'E'.
      ENDIF.
     ELSEIF  i_mseg-lgort  EQ  'B002'.
       AUTHORITY-CHECK OBJECT  'ZMMOBJ006'  ID  'ZMMID004'  FIELD  '01'. "20110120增强MB31入成品库半成品权限检查
       IF sy-subrc  NE  0.
         MESSAGE  '您没有B002半成品库权限'  TYPE  'E'.
      ENDIF.
    ENDIF.

  ENDIF.

   IF sy-tcode =  'MB1B'.
     IF  i_mseg-lgort+0(1)  =  'B'  AND i_mseg-lgort  NE  'B002'.
       AUTHORITY-CHECK OBJECT  'ZMMOBJ003'  ID  'ZMB31B002'  FIELD  '01'. "20110120增强MB31入成品库半成品权限检查
       IF sy-subrc  NE  0.
         MESSAGE  '您没有半成品库权限'  TYPE  'E'.
      ENDIF.
     ELSEIF  i_mseg-lgort  EQ  'B002'.
       AUTHORITY-CHECK OBJECT  'ZMMOBJ006'  ID  'ZMMID004'  FIELD  '01'. "20110120增强MB31入成品库半成品权限检查
       IF sy-subrc  NE  0.
         MESSAGE  '您没有B002半成品库权限'  TYPE  'E'.
      ENDIF.
    ENDIF.
  ENDIF.


   IF sy-tcode =  'MB1A'  OR sy-tcode =  'MB11'.

     IF  i_mseg-lgort+0(1)  =  'B'  AND i_mseg-lgort  NE  'B002'.
       AUTHORITY-CHECK OBJECT  'ZMMOBJ003'  ID  'ZMB31B002'  FIELD  '01'. "20110120增强MB31入成品库半成品权限检查
       IF sy-subrc  NE  0.
         MESSAGE  '您没有半成品库权限'  TYPE  'E'.
      ENDIF.
     ELSEIF  i_mseg-lgort  EQ  'B002'.
       AUTHORITY-CHECK OBJECT  'ZMMOBJ006'  ID  'ZMMID004'  FIELD  '01'. "20110120增强MB31入成品库半成品权限检查
       IF sy-subrc  NE  0.
         MESSAGE  '您没有B002半成品库权限'  TYPE  'E'.
      ENDIF.
    ENDIF.

     AUTHORITY-CHECK OBJECT  'ZMMOBJ001'  ID  'ZMB1A'  FIELD  'a'. "20110113增强权检查 如果有此权限 即不需 要一定输入订单号或者预留号
     CHECK sy-subrc  NE  0.
     IF i_mseg-rsnum  IS INITIAL.
       IF ( movetype1  CS i_mseg-bwart )  AND i_mseg-grund  IS INITIAL.
         MESSAGE  ID  'ZMMMSG'  TYPE  'E'  NUMBER  007.
      ENDIF.
    ENDIF.
  ENDIF.
ENDIF.
DATA:gt_resb  TYPE  TABLE  OF resb ,
     gs_resb  TYPE  resb,
     gt_marc  TYPE  TABLE  OF marc ,
     gs_marc  TYPE  marc,
     gt_zpp_product_ll  TYPE  TABLE  OF zpp_product_ll ,
     gs_zpp_product_ll  TYPE  zpp_product_ll.
DATA:fqty  TYPE bdmng,
     fqty1  TYPE bdmng.




IF sy-tcode =  'MB1A'  AND movetype  CS i_mseg-bwart.
   SELECT INTO CORRESPONDING  FIELDS  OF  TABLE gt_resb  FROM resb  WHERE  rsnum = i_mseg-rsnum  AND  rspos = i_mseg-rspos..
   SELECT INTO CORRESPONDING  FIELDS  OF  TABLE gt_marc  FROM marc  WHERE   matnr = i_mseg-matnr.
   SELECT INTO CORRESPONDING  FIELDS  OF  TABLE gt_zpp_product_ll
     FROM zpp_product_ll
     FOR  ALL ENTRIES  IN gt_marc
     WHERE dispo = gt_marc-dispo.
   READ  TABLE gt_resb  INTO gs_resb  WITH  KEY rsnum = i_mseg-rsnum rspos = i_mseg-rspos.
   CHECK sy-subrc =  0.
   READ  TABLE gt_marc  INTO gs_marc  WITH  KEY matnr = i_mseg-matnr.

  fqty = gs_resb-bdmng - gs_resb-enmng.
   IF fqty < i_mseg-menge .
*   MESSAGE ID 'ZPPMSG' TYPE 'E' NUMBER 002.
     READ  TABLE gt_zpp_product_ll  INTO gs_zpp_product_ll  WITH  KEY dispo = gs_marc-dispo.
    fqty1 = i_mseg-menge - fqty.
     IF sy-subrc =  .
       MESSAGE w002(zppmsg)  WITH fqty1 gs_resb-meins.
    ELSE.
       MESSAGE e002(zppmsg)  WITH fqty1 gs_resb-meins.
    ENDIF.

  ENDIF.
ENDIF.
CLEAR:gs_resb,gs_marc,gs_zpp_product_ll.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值