ZXMBCU08

<< Click to Display Table of Contents >>

Navigation:  All About ABAP Technique > English > ABAP Tutorial > ABAP Workbench Tools > Enhancement > Customer Exits > Customer Exits Examples > Project ZWMWS001 > Funtions Exits  > EXIT_SAPMM07R_001 >

ZXMBCU08

*&---------------------------------------------------------------------*
*&  Include           ZXMBCU08                                         *
*&---------------------------------------------------------------------*
 
*"  TABLES
*"      TI_RKPF STRUCTURE  RKPF
*"      TI_RESB_NEW STRUCTURE  RESB
*"      TI_RESB_OLD STRUCTURE  RESB
*"      TI_DM07R STRUCTURE  DM07R
*"      TI_RESB_ADDED STRUCTURE  RESBN OPTIONAL
*"----------------------------------------------------------------------
 
** Purpose: Not allowed to change reservation document if it has been
**          fulfilled
DATA: LV_MODIFIED(3).
**  Add by Victwija
**  Clear memory yang dipake unk validasi werks & lgort
DELETE FROM MEMORY ID 'WRK'.
DELETE FROM MEMORY ID 'LGA'.
**  End Add by Victwija
 
IF SY-TCODE = 'MB22'.
** Jika sudah ada goods movement, tidak bisa change beberapa fields
LOOP AT TI_RESB_OLD WHERE ENMNG NE 0.
ENDLOOP.
IF SY-SUBRC = 0.
   LV_MODIFIED = 'YES'.
ELSE.
   LV_MODIFIED = 'NO'.
ENDIF.
 
IF LV_MODIFIED = 'YES'.
  LOOP AT TI_RESB_NEW.
    LOOP AT TI_RESB_OLD WHERE RSNUM = TI_RESB_NEW-RSNUM
                        AND   RSPOS = TI_RESB_NEW-RSPOS.
 
      IF TI_RESB_OLD-ERFMG NE TI_RESB_NEW-ERFMG.
         TI_RESB_NEW-ERFMG = TI_RESB_OLD-ERFMG.
        MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH TI_RESB_NEW-RSNUM .
        EXIT.
      ENDIF.
 
      IF TI_RESB_OLD-BDMNG NE TI_RESB_NEW-BDMNG.
         TI_RESB_NEW-BDMNG = TI_RESB_OLD-BDMNG.
        MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH TI_RESB_NEW-RSNUM .
        EXIT.
      ENDIF.
 
      IF TI_RESB_OLD-LGORT NE TI_RESB_NEW-LGORT.
         TI_RESB_NEW-LGORT = TI_RESB_OLD-LGORT.
        MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH TI_RESB_NEW-RSNUM .
      ENDIF.
 
      IF TI_RESB_OLD-XWAOK NE TI_RESB_NEW-XWAOK.
        MOVE TI_RESB_OLD-XWAOK TO TI_RESB_NEW-XWAOK.
        MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH TI_RESB_NEW-RSNUM .
      ENDIF.
 
*        IF TI_RESB_OLD-KZEAR = 'X'.
*          IF TI_RESB_OLD-KZEAR NE TI_RESB_NEW-KZEAR.
*            MOVE TI_RESB_OLD-KZEAR TO TI_RESB_NEW-KZEAR.
*MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH TI_RESB_NEW-RSNUM .
*          ENDIF.
*        ENDIF.
 
*Cek Reservation apakah sudah Expired ato blm dari Table
*ZTA_WM_DEL_RSNUM
      DATA: LV_RSNUM LIKE TI_RESB_NEW-RSNUM.
      SELECT SINGLE RSNUM INTO LV_RSNUM
        FROM ZTA_WM_DEL_RSNUM
      WHERE
         RSNUM EQ TI_RESB_NEW-RSNUM
        AND EDATE <= SY-DATUM
         .
*****************************************************************
      IF TI_RESB_OLD-XLOEK NE TI_RESB_NEW-XLOEK AND LV_RSNUM NE
       TI_RESB_NEW-RSNUM.
        MOVE TI_RESB_OLD-XLOEK TO TI_RESB_NEW-XLOEK.
        MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH TI_RESB_NEW-RSNUM .
      ENDIF.
 
*   Original
*        IF ti_resb_old-xloek NE ti_resb_new-xloek.
*          MOVE ti_resb_old-xloek TO ti_resb_new-xloek.
*MESSAGE ID 'M7' TYPE 'E' NUMBER '901' WITH ti_resb_new-rsnum .
*        ENDIF.
 
 
    ENDLOOP.
  ENDLOOP.
ENDIF.
 
 
 
ENDIF.
 
*Jalankan Program utk mengupdate Final Issue berdasarkan table
*ZTA_WM_JOB_POST
IF SY-TCODE = 'MB21' OR SY-TCODE = 'MB22'.
 
TYPES: BEGIN OF LN_RSNUM,
          WERKS LIKE RESB-WERKS,
          LGORT LIKE RESB-LGORT,
          RSNUM LIKE RESB-RSNUM,
          RSPOS LIKE RESB-RSPOS,
        END OF LN_RSNUM.
DATA: OBJ_RSNUM TYPE STANDARD TABLE OF LN_RSNUM WITH HEADER LINE.
DATA: LV_COUNT TYPE I,
       LV_COUNT_RSNUM TYPE I.
 
 
*    Cek apakah SY-UNAME terdaftar sbg staf atau bukan.
SELECT COUNT(*) INTO LV_COUNT
FROM ZTA_WM_JOB_POST
WHERE
   STAFF EQ SY-UNAME AND
   WERKS EQ TI_RESB_NEW-WERKS AND
   LGORT EQ TI_RESB_NEW-LGORT.
 
 
*   Jika Staff maka LV_COUNT > 0
IF LV_COUNT > 0.
 
  IF TI_RESB_OLD-XWAOK = 'X' AND SY-TCODE = 'MB22'.
    SELECT COUNT(*) INTO LV_COUNT_RSNUM
    FROM RESB
    WHERE
       RSNUM = TI_RESB_OLD-RSNUM.
    IF LV_COUNT_RSNUM > 0.
      MESSAGE ID 'M7' TYPE 'E' NUMBER '904' WITH TI_RESB_NEW-RSNUM .
      LEAVE TO TRANSACTION 'MB23' AND SKIP FIRST SCREEN.
    ENDIF.
  ELSE.
    FREE MEMORY ID 'M_ZXMBCU08'.
 
    LOOP AT TI_RESB_NEW.
       OBJ_RSNUM-WERKS = TI_RESB_NEW-WERKS.
       OBJ_RSNUM-LGORT = TI_RESB_NEW-LGORT.
       OBJ_RSNUM-RSNUM = TI_RESB_NEW-RSNUM.
       OBJ_RSNUM-RSPOS = TI_RESB_NEW-RSPOS.
      APPEND OBJ_RSNUM.
    ENDLOOP.
*    Memory ini akan digunakan di program ZJB_WM004_UPDATING_FINAL_ISSUE
    EXPORT OBJ_RSNUM TO MEMORY ID 'M_ZXMBCU08'.
     BREAK ABAP08.
    EXPORT TI_RESB_NEW TO MEMORY ID 'M_ZXMBCU08_TI_RESB_NEW'.
    EXPORT TI_RESB_OLD TO MEMORY ID 'M_ZXMBCU08_TI_RESB_OLD'.
 
    SUBMIT ZIF_WM010_UPDATING_FINAL_ISSUE
    WITH PA_TCODE = SY-TCODE
    WITH PA_KOSTL = TI_RKPF-KOSTL
    AND RETURN.
  ENDIF.
ENDIF.
 
*    Cek apakah SY-UNAME terdaftar sbg Supervisor atau bukan.
FREE LV_COUNT.
SELECT COUNT(*) INTO LV_COUNT
FROM ZTA_WM_JOB_POST
WHERE
   SUPERVISOR EQ SY-UNAME AND
   WERKS EQ TI_RESB_NEW-WERKS AND
   LGORT EQ TI_RESB_NEW-LGORT.
*   Jika Supervisor maka LV_COUNT > 0
IF LV_COUNT > 0.
  FREE MEMORY ID 'M_ZXMBCU08'.
 
  LOOP AT TI_RESB_NEW.
     OBJ_RSNUM-WERKS = TI_RESB_NEW-WERKS.
     OBJ_RSNUM-LGORT = TI_RESB_NEW-LGORT.
     OBJ_RSNUM-RSNUM = TI_RESB_NEW-RSNUM.
     OBJ_RSNUM-RSPOS = TI_RESB_NEW-RSPOS.
    APPEND OBJ_RSNUM.
  ENDLOOP.
*    Memory ini akan digunakan di program ZJB_WM004_UPDATING_FINAL_ISSUE
  EXPORT OBJ_RSNUM TO MEMORY ID 'M_ZXMBCU08'.
   BREAK ABAP08.
  EXPORT TI_RESB_NEW TO MEMORY ID 'M_ZXMBCU08_TI_RESB_NEW'.
  EXPORT TI_RESB_OLD TO MEMORY ID 'M_ZXMBCU08_TI_RESB_OLD'.
 
  SUBMIT ZIF_WM010_UPDATING_FINAL_ISSUE
  WITH PA_TCODE = SY-TCODE
  WITH PA_KOSTL = TI_RKPF-KOSTL
  AND RETURN.
ENDIF.
MESSAGE S398(00) WITH 'Document' TI_RESB_NEW-RSNUM 'posted'.
 
ENDIF.
 
*--------------------------------------------------------------------*