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