DATA_CHECK

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

DATA_CHECK

METHOD IF_EX_MB_RESERVATION_BADI~DATA_CHECK .
 
DATA: LV_WERKS TYPE RESB-WERKS,
       LV_LGORT TYPE RESB-LGORT,
       LV_COUNT TYPE I VALUE 0,
       LV_RSPOS TYPE RESB-RSPOS.
 
*->Prevent addition of new item after goods movement posted for any item.
DATA: LV_MVTPOSTED TYPE C.
DATA: IT_RESB TYPE RESB.
 
DATA : LV_ISADD(1). "ini untuk menandakan apakah item baru ditambah
 
*    Cek Reservation apakah sudah Expired ato blm dari Table ZTA_WM_DEL_RSNUM
DATA: LV_RSNUM LIKE IS_RESB-RSNUM.
SELECT SINGLE RSNUM INTO LV_RSNUM
  FROM ZTA_WM_DEL_RSNUM
WHERE
   RSNUM EQ IS_RESB-RSNUM
  AND EDATE <= SY-DATUM
   .
*****************************************************************
 
IF SY-TCODE = 'MB22'.
 
  SELECT * FROM RESB INTO CORRESPONDING FIELDS OF IT_RESB
          WHERE RSNUM = IS_RKPF-RSNUM AND RSPOS = IS_RESB-RSPOS.
  ENDSELECT.
 
  IF SY-SUBRC <> 0.
     LV_ISADD = 'X'.
  ELSE.
     LV_ISADD = ''.
    DATA : LW_RESB TYPE RESB.
*jika item bukan item baru, cek apakah reservasi tersebut sudah pernah diposting sebelumnya
    SELECT SINGLE *
    FROM RESB
    INTO CORRESPONDING FIELDS OF LW_RESB
    WHERE RSNUM = IS_RKPF-RSNUM AND ENMNG > 0.
 
    IF SY-SUBRC = 0.
       LV_MVTPOSTED = 'X'.
    ELSE.
      CLEAR LV_MVTPOSTED.
    ENDIF.
 
  ENDIF.
 
 
*    Cek Reservation apakah sudah Expired ato blm dari Table ZTA_WM_DEL_RSNUM
  IF LV_MVTPOSTED = 'X' AND I_NEW_ITEM = 'X' AND LV_RSNUM NE IS_RESB-RSNUM.
    MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH IS_RESB-RSNUM .
  ENDIF.
**   Original
*    IF lv_mvtposted = 'X' AND i_new_item = 'X' and lv_rsnum ne is_resb-rsnum.
*      MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH is_resb-rsnum .
*    ENDIF.
 
*--------------------------------------------------------------------*
 
*    Ketika buat Item Reservasi baru, cek apakah sudah pernah digunakan di MSEG
*    Jika sudah digunakan maka keluar pesan 901
  IF I_NEW_ITEM = 'X'.
    DATA: LV_COUNTER2 TYPE I.
    SELECT COUNT(*) INTO LV_COUNTER2
    FROM MSEG
    WHERE
       RSNUM = IS_RKPF-RSNUM.
    IF LV_COUNTER2 > 0.
      MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH IS_RESB-RSNUM .
    ENDIF.
 
  ENDIF.
*--------------------------------------------------------------------*
 
 
 
ENDIF.
 
 
IF SY-TCODE = 'MB22'.
 
*    IF is_resb-enmng > 0 AND lv_rsnum NE is_resb-rsnum.
*      MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH is_resb-rsnum .
*    ENDIF.
 
  IF IS_RESB-ENMNG > 0 AND LV_RSNUM NE IS_RESB-RSNUM.
    IF IS_RESB-ERFMG <> IT_RESB-ERFMG.
      MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH IS_RESB-RSNUM .
    ENDIF.
  ELSEIF LV_MVTPOSTED = 'X' AND IS_RESB-ERFMG <> IT_RESB-ERFMG.
    MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH IS_RESB-RSNUM .
  ELSEIF LV_MVTPOSTED = 'X' AND LV_ISADD = 'X'.
    MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH IS_RESB-RSNUM .
  ELSEIF LV_MVTPOSTED = 'X' AND IS_RESB-LGORT <> IT_RESB-LGORT.
    MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH IS_RESB-RSNUM .
  ENDIF.
*****************************************************************
 
*   Original
*    IF is_resb-enmng > 0 .
*      MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH is_resb-rsnum .
*    ENDIF.
ENDIF.
 
CASE SY-TCODE.
  WHEN 'MB21'.
    IMPORT RSPOS TO LV_RSPOS FROM MEMORY ID 'RSP'.
    IMPORT WERKS TO LV_WERKS FROM MEMORY ID 'WRK'.
    IMPORT LGORT TO LV_LGORT FROM MEMORY ID 'LGA'.
  WHEN 'MB22'.
 
    SELECT SINGLE WERKS LGORT RSPOS
    INTO (LV_WERKS, LV_LGORT, LV_RSPOS)
    FROM RESB
    WHERE RSNUM EQ IS_RKPF-RSNUM
    AND RSPOS EQ '1'.
 
    IF IS_RESB-RSPOS = '1'.
 
      IF LV_RSPOS IS INITIAL.
        IMPORT RSPOS TO LV_RSPOS FROM MEMORY ID 'RSP'. "
      ENDIF.
 
      IF LV_WERKS IS INITIAL.
        IMPORT WERKS TO LV_WERKS FROM MEMORY ID 'WRK'.
      ENDIF.
 
      IF LV_LGORT IS INITIAL.
        IMPORT LGORT TO LV_LGORT FROM MEMORY ID 'LGA'.
      ENDIF.
 
    ENDIF.
ENDCASE.
**    Cek dalam 1 Reservation Werks harus sama
*    IF IS_RESB-WERKS NE LV_WERKS AND LV_WERKS IS NOT INITIAL.
*      MESSAGE E398(00) WITH 'You Should Fill With Plant'  LV_WERKS.
*    ELSE.
*      EXPORT WERKS FROM IS_RESB-WERKS TO MEMORY ID 'WRK'.
*    ENDIF.
*
**    Cek dalam 1 Reservation Sloc harus sama
*    IF IS_RESB-LGORT NE LV_LGORT AND LV_LGORT IS NOT INITIAL.
*      MESSAGE E398(00) WITH 'You Should Fill With Storage Location'  LV_LGORT.
*    ELSE.
*      EXPORT LGORT FROM IS_RESB-LGORT TO MEMORY ID 'LGA'.
*    ENDIF.
IF IS_RESB-RSPOS > '1'. " Added by Albertus Reinandang 02-10-2006
*    Cek dalam 1 Reservation Werks harus sama
  IF IS_RESB-WERKS NE LV_WERKS AND LV_WERKS IS NOT INITIAL.
    MESSAGE E398(00) WITH 'You Should Fill With Plant'  LV_WERKS.
  ENDIF.
 
*    Cek dalam 1 Reservation Sloc harus sama
  IF IS_RESB-LGORT NE LV_LGORT AND LV_LGORT IS NOT INITIAL.
    MESSAGE E398(00) WITH 'You Should Fill With Storage Location'  LV_LGORT.
  ENDIF.
ELSEIF IS_RESB-RSPOS = '1'.
  EXPORT RSPOS FROM IS_RESB-RSPOS TO MEMORY ID 'RSP'.
  EXPORT WERKS FROM IS_RESB-WERKS TO MEMORY ID 'WRK'.
  EXPORT LGORT FROM IS_RESB-LGORT TO MEMORY ID 'LGA'.
ENDIF.
 
 
*  Sloc Must Be Fill
IF IS_RESB-LGORT IS INITIAL.
  MESSAGE E398(00) WITH 'Storage Location must be filled'.
ENDIF.
 
 
 
****** Periksa Otorisasi berdasarkan SLOC
IF SY-TCODE = 'MB21' OR SY-TCODE = 'MB22' OR SY-TCODE = 'MB23'.
  DATA: GW_ACTVT(2).
 
  IF SY-TCODE = 'MB21'.
     GW_ACTVT = '01'.
  ENDIF.
  IF SY-TCODE = 'MB22'.
     GW_ACTVT = '02'.
  ENDIF.
  IF SY-TCODE = 'MB23'.
     GW_ACTVT = '03'.
  ENDIF.
 
   AUTHORITY-CHECK OBJECT 'Z_LGORT'
          ID 'WERKS' FIELD IS_RESB-WERKS
          ID 'LGORT' FIELD IS_RESB-LGORT
          ID 'ACTVT' FIELD GW_ACTVT.
  IF SY-SUBRC NE 0.
    MESSAGE E398(00) WITH 'You have no authorization for Issuing Sloc' IS_RESB-LGORT.
  ENDIF.
 
  IF IS_RKPF-BWART = '311'.
 
     AUTHORITY-CHECK OBJECT 'Z_UMLGO'
              ID 'ACTVT' FIELD GW_ACTVT
              ID 'UMLGO' FIELD IS_RKPF-UMLGO.
    IF SY-SUBRC NE 0.
      MESSAGE E398(00) WITH 'You have no authorization for Receiving Sloc' IS_RKPF-UMLGO.
    ENDIF.
  ENDIF.
 
ENDIF.
 
ENDMETHOD.