|
<< Click to Display Table of Contents >> Navigation: All About ABAP Technique > English > ABAP Tutorial > ABAP Workbench Tools > Enhancement > Business Add-Ins (BADI) > Business Add-Ins (BADI) Examples > ZMB_CHECK_LINE_BADI > CHECK_LINE |
method IF_EX_MB_CHECK_LINE_BADI~CHECK_LINE .
******************************************************
**SET WARNING IF PRODUCTION ORDER ALREADY DELIV COMPLETE
**AND USER STILL WANTS TO DO GOODS RECEIPT
**BA060602
**
**REQUEST FROM WM TEAM FOR GOODS ISSUE TO RESERVATION ONLY
**ALLOW EXCEED RESERVED QTY IF MVT 261
**BA060602
**
**ADD AUTHORIZATION CHECK DURING MB31
**CHECK INSP LOT UD STATUS FOR QM IN PRODUCTION
**BA060602
******************************************************
DATA: ZIDAT2 TYPE AUFK-IDAT2.
DATA: ZMENGE TYPE MSEG-MENGE,
ZMENGE_D TYPE MSEG-MENGE,
ZFEVOR TYPE AFKO-FEVOR,
s_message_text(20) type c,
ZMSG(22) TYPE C,
ZPRUEFLOS TYPE AFKO-PRUEFLOS, "insp lot
ZVCODE TYPE QAVE-VCODE, "UD code
ZINSPTYPE(2) TYPE C.
CLEAR: ZFEVOR, ZPRUEFLOS, ZVCODE.
*only when goods movement for production
IF IS_VM07M-XBFAU = 'X'.
*only goods receipt and delivery complete
IF IS_MSEG-bwart = '101' AND
IS_VM07M-ELIKZ_OLD = 'X'.
MESSAGE W244(M7).
ENDIF.
break sol_bintang.
*auth check prod scheduler
SELECT SINGLE FEVOR PRUEFLOS INTO (ZFEVOR, ZPRUEFLOS) FROM AFKO
WHERE AUFNR = IS_MSEG-AUFNR.
ZINSPTYPE = ZPRUEFLOS.
AUTHORITY-CHECK OBJECT 'Z_AFKO_FEV'
ID 'ACTVT' FIELD '01'
ID 'ZFEVOR' FIELD ZFEVOR
ID 'WERKS' FIELD IS_MSEG-WERKS.
if not sy-subrc is initial.
concatenate IS_MSEG-WERKS 'Scheduler' ZFEVOR
into s_message_text separated by space.
message e004(CO) with s_message_text.
endif.
.
*-> For liquid mixing production GR depends on UD status
*-> Prod Sched !
IF ZINSPTYPE = '03'.
IF IS_MSEG-bwart = '101' AND ZFEVOR = '251'.
IF ZPRUEFLOS EQ SPACE.
MESSAGE E001(00) WITH 'ORDER_' IS_MSEG-AUFNR
' INSP LOT MISSING. CONTACT QC !'.
ELSE.
SELECT SINGLE VCODE INTO ZVCODE FROM QAVE WHERE
PRUEFLOS = ZPRUEFLOS AND
KZART = 'L'.
IF SY-SUBRC = 0.
**If UD not accept, force user to GR into block stock
IF ZVCODE <> 'A' AND
( IS_MSEG-INSMK <> '3' AND
IS_MSEG-INSMK <> 'S' ).
MESSAGE E001(00) WITH 'MENURUT QC, ORDER_' IS_MSEG-AUFNR
' GR HARUS MASUK BLOCKED STOCK!'.
ENDIF.
ELSE.
*If no UD, don't allow GR
MESSAGE E001(00) WITH 'ORDER_' IS_MSEG-AUFNR
' INSP LOT BELUM UD. CONTACT QC !'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
**auth check for confirmation / backflush and reversals.
* IF IS_MSEG-LGORT NE SPACE.
* IF SY-TCODE = 'CO11N' OR
* SY-TCODE = 'CO13' OR
* SY-TCODE = 'MB31'.
* AUTHORITY-CHECK OBJECT 'M_MSEG_LGO'
* ID 'ACTVT' FIELD '01'
* ID 'WERKS' FIELD IS_MSEG-WERKS
* ID 'LGORT' FIELD IS_MSEG-LGORT
* ID 'BWART' FIELD IS_MSEG-BWART.
* if not sy-subrc is initial.
* clear s_message_text.
* concatenate IS_MSEG-WERKS 'Sloc' IS_MSEG-LGORT
* 'Mvt' IS_MSEG-BWART
* into s_message_text separated by space.
* message e004(CO) with s_message_text.
* endif.
*
* ELSEIF SY-TCODE = 'MFBF' OR
* SY-TCODE = 'MF12' OR
* SY-TCODE = 'MF41'.
*
* AUTHORITY-CHECK OBJECT 'Z_BACKFL'
* ID 'WERKS' FIELD IS_MSEG-WERKS
* ID 'LGORT' FIELD IS_MSEG-LGORT.
* if not sy-subrc is initial.
* clear s_message_text.
* concatenate IS_MSEG-WERKS 'Sloc' IS_MSEG-LGORT
* into s_message_text separated by space.
* message e004(CO) with s_message_text.
* endif.
*
* ENDIF.
* ENDIF.
IF IS_DM07M-BDMNG > 0 AND IS_MSEG-SHKZG NE 'S'.
*WITHDRAWN QTY + TO BE ISSUED QTY
ZMENGE = IS_DM07M-ENMNG + IS_MSEG-MENGE.
ZMENGE_D = ZMENGE - IS_DM07M-BDMNG.
IF ZMENGE > IS_DM07M-BDMNG AND
IS_MSEG-BWART NE '261' AND
IS_MSEG-BWART NE '262' AND
IS_MSEG-BWART NE '531' AND
IS_MSEG-BWART NE '532'.
CONCATENATE IS_MSEG-MATNR+10(8) IS_MSEG-WERKS INTO ZMSG
SEPARATED BY SPACE.
CONCATENATE ZMSG IS_MSEG-LGORT INTO ZMSG
SEPARATED BY SPACE.
MESSAGE E362(M7) WITH 'RESERVATION' ZMENGE_D IS_MSEG-MEINS ZMSG.
ENDIF.
ENDIF.
endmethod.