MBCF0002
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
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 = 0 .
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.