CHECK_LINE

<< 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.