*&---------------------------------------------------------------------*
*& 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(1) TYPE C, "Add by Lisa wong 02/04/2013
L_STR2(1) TYPE C, "Add by Lisa wong 02/04/2013
L_FLAG(1) TYPE 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.
**********************************************
*& 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(1) TYPE C, "Add by Lisa wong 02/04/2013
L_STR2(1) TYPE C, "Add by Lisa wong 02/04/2013
L_FLAG(1) TYPE 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.
**********************************************