Views 177
Visitors 109

DATA_CHECK

Home 
| Top Page | Threads |
Previous  Next

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.

User Threads | New Thread ( Only for Donators )

Threads Last Post Replies Views