ZIF_WM010_UPDATING_FINAL_ISSUE

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

ZIF_WM010_UPDATING_FINAL_ISSUE

 
REPORT  ZIF_WM010_UPDATING_FINAL_ISSUE          .
TYPES: BEGIN OF GT_ZTA_WM_JOB_POST.
      INCLUDE STRUCTURE ZTA_WM_JOB_POST.
TYPES:
       TXTMD LIKE T001W_BIW-TXTMD,
       CH_TYPE,
      END OF GT_ZTA_WM_JOB_POST.
 
DATA: GI_ZTA_WM_JOB_POST TYPE TABLE OF GT_ZTA_WM_JOB_POST WITH HEADER LINE,
     GI_T001W_BIW LIKE STANDARD TABLE OF T001W_BIW WITH HEADER LINE,
     TI_RESB_NEW        LIKE STANDARD TABLE OF RESB WITH HEADER LINE,
     TI_RESB_OLD        LIKE STANDARD TABLE OF RESB WITH HEADER LINE.
 
TYPES: BEGIN OF GT_RSNUM,
       RSNUM LIKE RESB-RSNUM,
       RSPOS LIKE RESB-RSPOS,
       ERFMG LIKE RESB-ERFMG,
       ERFME LIKE RESB-ERFME,
       XLOEK LIKE RESB-XLOEK,
       MATNR LIKE RESB-MATNR,
 
      END OF GT_RSNUM.
DATA: GI_RSNUM1 TYPE TABLE OF GT_RSNUM WITH HEADER LINE,
     GI_RSNUM2 TYPE TABLE OF GT_RSNUM WITH HEADER LINE,
     GI_RSNUM3 TYPE TABLE OF GT_RSNUM WITH HEADER LINE.
 
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.
 
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 3(23) CM_GJAHR.
PARAMETERS: PA_TCODE TYPE SY-TCODE NO-DISPLAY.
PARAMETERS: PA_KOSTL TYPE RKPF-KOSTL NO-DISPLAY.
SELECTION-SCREEN END OF LINE.
 
START-OF-SELECTION.
DATA: LV_COUNT1 TYPE I,
       LV_COUNT2 TYPE I,
       LV_COUNT3 TYPE I,
       LV_DELETE TYPE I.
 
IMPORT OBJ_RSNUM FROM MEMORY ID 'M_ZXMBCU08'.
IMPORT TI_RESB_NEW FROM MEMORY ID 'M_ZXMBCU08_TI_RESB_NEW'.
IMPORT TI_RESB_OLD FROM MEMORY ID 'M_ZXMBCU08_TI_RESB_OLD'.
 
IF PA_TCODE = 'MB21' OR PA_TCODE = 'ZMB21'.
  PERFORM FM_RUN_BDC.
ENDIF.
IF PA_TCODE = 'MB22'.
  PERFORM FM_CEK_DATA_CHANGED.
   LV_COUNT1 = LINES( GI_RSNUM1 ).
   LV_COUNT2 = LINES( GI_RSNUM2 ).
   LV_COUNT3 = LINES( GI_RSNUM3 ).
  IF LV_COUNT1 > 0 OR LV_COUNT2 > 0 OR LV_COUNT3 > 0.
    PERFORM FM_WRITE_EMAIL2.
  ENDIF.
 
  PERFORM FM_CEK_DATA_DELETE USING LV_DELETE.
  IF LV_DELETE = 0.
    IF LV_COUNT2 > 0.
      PERFORM FM_WRITE_EMAIL3 USING TI_RESB_OLD-RSNUM.
 
    ENDIF.
  ENDIF.
ENDIF.
 
END-OF-SELECTION.
 
INCLUDE ZIN_BDC.
 
*&---------------------------------------------------------------------*
*&      Form  FM_RUN_BDC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM FM_RUN_BDC.
DATA: LV_RSNUM TYPE RESB-RSNUM,
       LV_POS(2) TYPE N,
       LV_XWAOK,
       LV_KZEAR,
       LV_XWAOK_TEXT TYPE STRING,
       LV_KZEAR_TEXT TYPE STRING,
       LV_COUNTER TYPE I.
 
READ TABLE OBJ_RSNUM INDEX 1.
IF OBJ_RSNUM IS NOT INITIAL.
   LV_RSNUM = OBJ_RSNUM-RSNUM.
  PERFORM F_BDC_DATA TABLES T_BDCDATA USING:
    'X'         'SAPMM07R'           '0560',
    ' '         'BDC_CURSOR'         'RM07M-RSNUM',
    ' '         'BDC_OKCODE'         '=KL',
    ' '         'RM07M-RSNUM'         LV_RSNUM,
 
    'X'         'SAPMM07R'           '0521',
    ' '         'BDC_CURSOR'         'RESB-KZEAR(01)',
    ' '         'BDC_OKCODE'         '=BU'.
 
  LOOP AT OBJ_RSNUM.
    PERFORM FM_CEK_JOB_POS USING LV_COUNTER SY-UNAME OBJ_RSNUM-WERKS OBJ_RSNUM-LGORT '0'.
    IF LV_COUNTER > 0.
       LV_XWAOK = ' '.
       LV_KZEAR = 'X'.
       LV_POS = OBJ_RSNUM-RSPOS.
 
      CONCATENATE 'RESB-XWAOK(' LV_POS ')' INTO LV_XWAOK_TEXT.
      CONCATENATE 'RESB-KZEAR(' LV_POS ')' INTO LV_KZEAR_TEXT.
      PERFORM F_BDC_DATA TABLES T_BDCDATA USING:
          ' '          LV_XWAOK_TEXT        LV_XWAOK,
          ' '          LV_KZEAR_TEXT        LV_KZEAR.
    ENDIF.
  ENDLOOP.
 
  PERFORM F_BDC_DATA TABLES T_BDCDATA USING:
      ' '         'BDC_SUBSCR'         'SAPLKACB                                0001BLOCK'.
 
  LOOP AT OBJ_RSNUM.
    PERFORM FM_CEK_JOB_POS USING LV_COUNTER SY-UNAME OBJ_RSNUM-WERKS OBJ_RSNUM-LGORT '0'.
    IF LV_COUNTER > 0.
      PERFORM F_BDC_DATA TABLES T_BDCDATA USING:
          'X'         'SAPLKACB'           '0002',
          ' '         'BDC_OKCODE'         '=ENTE',
          ' '         'BDC_SUBSCR'         'SAPLKACB                                0003BLOCK1',
 
          'X'         'SAPMM07R'           '0510',
          ' '         'BDC_CURSOR'         'RESB-ERFMG',
          ' '         'BDC_OKCODE'         '=BU',
          ' '         'BDC_SUBSCR'         'SAPLKACB                                0001BLOCK'.
 
    ENDIF.
  ENDLOOP.
 
  PERFORM F_BDC_DATA TABLES T_BDCDATA USING:
 
    'X'         'SAPLKACB'           '0002',
    ' '         'BDC_OKCODE'         '=ENTE',
    ' '         'BDC_SUBSCR'         'SAPLKACB                                0003BLOCK1'.
 
 
  PERFORM F_BDC_CALL_TCODE TABLES T_BDCDATA
                             T_BDCMSG
                USING 'MB22' 'N' 'Progress'.
  CLEAR T_BDCMSG.
*    READ TABLE T_BDCMSG WITH KEY MSGTYP = 'E'.
*    IF SY-SUBRC NE 0.
  PERFORM FM_WRITE_EMAIL USING OBJ_RSNUM-RSNUM.
*    ENDIF.
 
ENDIF.
 
 
ENDFORM.                   "FM_RUN_BDC
 
*&---------------------------------------------------------------------*
*&      Form  fm_cek_job_pos
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PV_XWAOK   text
*      -->PV_KZEAR   text
*----------------------------------------------------------------------*
FORM FM_CEK_JOB_POS USING PV_COUNTER PV_UNAME PV_WERKS PV_LGORT PV_TYPE.
DATA: LI_ZTA_WM_JOB_POST LIKE STANDARD TABLE OF GI_ZTA_WM_JOB_POST WITH HEADER LINE.
SELECT *
  INTO CORRESPONDING FIELDS OF TABLE LI_ZTA_WM_JOB_POST
FROM ZTA_WM_JOB_POST
WHERE
   STAFF EQ PV_UNAME AND
   WERKS EQ PV_WERKS AND
   LGORT EQ PV_LGORT.
 
 PV_COUNTER = LINES( LI_ZTA_WM_JOB_POST ).
SELECT *
  INTO CORRESPONDING FIELDS OF TABLE GI_T001W_BIW
FROM
   T001W_BIW
  FOR ALL ENTRIES IN LI_ZTA_WM_JOB_POST
WHERE
   WERKS = LI_ZTA_WM_JOB_POST-WERKS AND
   SPRAS = 'E'.
 
LOOP AT GI_ZTA_WM_JOB_POST.
  READ TABLE GI_T001W_BIW WITH KEY WERKS = LI_ZTA_WM_JOB_POST-WERKS.
  IF SY-SUBRC = 0.
     LI_ZTA_WM_JOB_POST-TXTMD = GI_T001W_BIW-TXTMD.
    MODIFY LI_ZTA_WM_JOB_POST.
  ENDIF.
ENDLOOP.
 
LOOP AT LI_ZTA_WM_JOB_POST.
  MOVE-CORRESPONDING LI_ZTA_WM_JOB_POST TO GI_ZTA_WM_JOB_POST.
   GI_ZTA_WM_JOB_POST-CH_TYPE = PV_TYPE.
  APPEND GI_ZTA_WM_JOB_POST.
ENDLOOP.
ENDFORM.                   "fm_cek_job_pos
 
*&---------------------------------------------------------------------*
*&      Form  fm_write_email
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM FM_WRITE_EMAIL USING PV_RSNUM.
DATA: LV_SUBJECT LIKE SODOCCHGI1-OBJ_DESCR.
DATA: LI_RECEIVER LIKE STANDARD TABLE OF SOMLRECI1 WITH HEADER LINE,
       LI_MESSAGE LIKE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,
       LV_KTEXT LIKE CSKT-KTEXT,
       LV_EMAIL_ADDRESS LIKE SZA5_D0700-SMTP_ADDR.
 
*  Cari Informasi utk Cost Center
SELECT SINGLE KTEXT INTO LV_KTEXT
FROM CSKT
WHERE
   KOSTL = PA_KOSTL.
*  Tulis Subject
CONCATENATE 'Permintaan Barang dari' LV_KTEXT INTO LV_SUBJECT SEPARATED BY SPACE.
 
*  Tulis Penerima Message
SORT GI_ZTA_WM_JOB_POST BY WERKS LGORT SUPERVISOR STAFF CH_TYPE.
DELETE ADJACENT DUPLICATES FROM GI_ZTA_WM_JOB_POST
COMPARING WERKS LGORT SUPERVISOR STAFF CH_TYPE.
LOOP AT GI_ZTA_WM_JOB_POST WHERE CH_TYPE = '0'.
  FREE LV_EMAIL_ADDRESS.
  PERFORM FM_GET_EMAIL_BY_USERID USING GI_ZTA_WM_JOB_POST-SUPERVISOR LV_EMAIL_ADDRESS.
   LI_RECEIVER-RECEIVER = LV_EMAIL_ADDRESS.
   LI_RECEIVER-REC_TYPE = 'U'.
   LI_RECEIVER-EXPRESS = 'X'.
   LI_RECEIVER-COM_TYPE = 'INT'.
   LI_RECEIVER-NOTIF_DEL = 'X'.
   LI_RECEIVER-NOTIF_NDEL = 'X'.
  APPEND LI_RECEIVER.
*    LI_RECEIVER-RECEIVER = GI_ZTA_WM_JOB_POST-SUPERVISOR.
*    LI_RECEIVER-REC_TYPE = 'B'.
*    LI_RECEIVER-EXPRESS = 'X'.
*    APPEND LI_RECEIVER.
ENDLOOP.
 LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
 
*  Tulis Message
 LI_MESSAGE-LINE = 'Kepada Yth'.
APPEND LI_MESSAGE.
 LI_MESSAGE-LINE = 'Bapak/Ibu'.
APPEND LI_MESSAGE.
 LI_MESSAGE-LINE = 'di tempat'.
APPEND LI_MESSAGE.
 
 LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
 
CONCATENATE 'Tolong di-approve-kan nomer reservasi' PV_RSNUM 'yang di dalamnya terdapat barang-barang yang kami butuhkan.' INTO LI_MESSAGE-LINE SEPARATED BY SPACE.
APPEND LI_MESSAGE.
 
 LI_MESSAGE-LINE = 'Terima kasih atas kerja samanya'.
APPEND LI_MESSAGE.
 
 LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
 
 LI_MESSAGE-LINE = 'Hormat kami,'.
APPEND LI_MESSAGE.
CONCATENATE 'District/Plant' LV_KTEXT INTO LI_MESSAGE-LINE SEPARATED BY SPACE.
APPEND LI_MESSAGE.
 
 
PERFORM FM_SEND_EMAIL TABLES LI_RECEIVER LI_MESSAGE USING LV_SUBJECT .
 
ENDFORM.                   "fm_write_email
 
*&---------------------------------------------------------------------*
*&      Form  FM_WRITE_EMAIL2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PV_RSNUM   text
*----------------------------------------------------------------------*
FORM FM_WRITE_EMAIL2.
DATA: LV_SUBJECT LIKE SODOCCHGI1-OBJ_DESCR.
DATA: LI_RECEIVER LIKE STANDARD TABLE OF SOMLRECI1 WITH HEADER LINE,
       LI_MESSAGE LIKE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,
       LV_KTEXT LIKE CSKT-KTEXT,
       LV_EMAIL_ADDRESS LIKE SZA5_D0700-SMTP_ADDR.
DATA: LV_RSNUM LIKE RESB-RSNUM,
       LV_ERFME(3),
       LV_ERFMG(16),
       LV_ERFMG_I TYPE I,
       LV_KOSTL TYPE RKPF-KOSTL.
DATA: LI_RESB LIKE STANDARD TABLE OF RESB WITH HEADER LINE,
       LI_MAKT LIKE STANDARD TABLE OF MAKT WITH HEADER LINE,
       LI_RKPF LIKE STANDARD TABLE OF RKPF WITH HEADER LINE.
IF LINES( TI_RESB_OLD ) > 0.
  READ TABLE TI_RESB_OLD INDEX 1.
   LV_RSNUM = TI_RESB_OLD-RSNUM.
*  Cari informasi utk material
  SELECT * INTO CORRESPONDING FIELDS OF TABLE LI_RESB
  FROM RESB
  WHERE
     RSNUM = TI_RESB_OLD-RSNUM.
  SELECT SINGLE KOSTL INTO LV_KOSTL
  FROM RKPF
  WHERE
     RSNUM = TI_RESB_OLD-RSNUM.
*  Cari Informasi utk Cost Center
  SELECT SINGLE KTEXT INTO LV_KTEXT
  FROM CSKT
  WHERE
     KOSTL = LV_KOSTL.
 
ENDIF.
SELECT * INTO CORRESPONDING FIELDS OF TABLE LI_MAKT
FROM MAKT
  FOR ALL ENTRIES IN LI_RESB
WHERE
   MATNR = LI_RESB-MATNR.
*  Tulis Subject
CONCATENATE 'Perubahan Reservasi dari' LV_KTEXT INTO LV_SUBJECT SEPARATED BY SPACE.
 
*  Tulis Penerima Message
SORT GI_ZTA_WM_JOB_POST BY WERKS LGORT SUPERVISOR STAFF CH_TYPE.
DELETE ADJACENT DUPLICATES FROM GI_ZTA_WM_JOB_POST
COMPARING WERKS LGORT SUPERVISOR STAFF CH_TYPE.
LOOP AT GI_ZTA_WM_JOB_POST WHERE CH_TYPE = '1'.
  FREE LV_EMAIL_ADDRESS.
  PERFORM FM_GET_EMAIL_BY_USERID USING GI_ZTA_WM_JOB_POST-SUPERVISOR LV_EMAIL_ADDRESS.
   LI_RECEIVER-RECEIVER = LV_EMAIL_ADDRESS.
   LI_RECEIVER-REC_TYPE = 'U'.
   LI_RECEIVER-EXPRESS = 'X'.
   LI_RECEIVER-COM_TYPE = 'INT'.
   LI_RECEIVER-NOTIF_DEL = 'X'.
   LI_RECEIVER-NOTIF_NDEL = 'X'.
  APPEND LI_RECEIVER.
ENDLOOP.
 LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
 
*  Tulis Message
 LI_MESSAGE-LINE = 'Kepada Yth'.
APPEND LI_MESSAGE.
 LI_MESSAGE-LINE = 'Bapak/Ibu'.
APPEND LI_MESSAGE.
 LI_MESSAGE-LINE = 'di tempat'.
APPEND LI_MESSAGE.
 
 LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
 
CONCATENATE 'Terdapat perubahan untuk nomor reservasi ' LV_RSNUM 'yang di dalamnya terdapat barang-barang yang kami butuhkan. Tolong di-approve-kan.' INTO LI_MESSAGE-LINE SEPARATED BY SPACE.
APPEND LI_MESSAGE.
 
*  Tulis message jika ada perubahan quantity
IF LINES( GI_RSNUM1 ) > 0.
   LI_MESSAGE-LINE = 'Detail Perubahan Item :'.
  APPEND LI_MESSAGE.
 
  LOOP AT GI_RSNUM1.
     LV_ERFME = GI_RSNUM1-ERFME.
     LV_ERFMG_I = GI_RSNUM1-ERFMG.
     LV_ERFMG = LV_ERFMG_I.
    READ TABLE LI_MAKT WITH KEY MATNR = GI_RSNUM1-MATNR.
    CONCATENATE ' ' GI_RSNUM1-RSPOS '->' LI_MAKT-MAKTX LV_ERFMG LV_ERFME INTO LI_MESSAGE-LINE SEPARATED BY SPACE.
    APPEND LI_MESSAGE.
  ENDLOOP.
ENDIF.
 
 LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
 
*  Tulis message jika ada pembatalan
IF LINES( GI_RSNUM2 ) > 0.
   LI_MESSAGE-LINE = 'Detail Pembatalan Item :'.
  APPEND LI_MESSAGE.
 
  LOOP AT GI_RSNUM2.
    READ TABLE LI_MAKT WITH KEY MATNR = GI_RSNUM2-MATNR.
    CONCATENATE ' ' GI_RSNUM2-RSPOS '->' LI_MAKT-MAKTX ' dibatalkan' INTO LI_MESSAGE-LINE SEPARATED BY SPACE.
    APPEND LI_MESSAGE.
  ENDLOOP.
ENDIF.
 
 LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
 
*  Tulis message jika ada penambahan
IF LINES( GI_RSNUM3 ) > 0.
   LI_MESSAGE-LINE = 'Detail Penambahan Item :'.
  APPEND LI_MESSAGE.
 
  LOOP AT GI_RSNUM3.
     LV_ERFME = GI_RSNUM3-ERFME.
     LV_ERFMG_I = GI_RSNUM3-ERFMG.
     LV_ERFMG = LV_ERFMG_I.
    READ TABLE LI_MAKT WITH KEY MATNR = GI_RSNUM3-MATNR.
    CONCATENATE ' ' GI_RSNUM3-RSPOS '->' LI_MAKT-MAKTX LV_ERFMG LV_ERFME INTO LI_MESSAGE-LINE SEPARATED BY SPACE.
    APPEND LI_MESSAGE.
  ENDLOOP.
ENDIF.
 
 LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
 
 LI_MESSAGE-LINE = 'Terima kasih atas kerja samanya'.
APPEND LI_MESSAGE.
 
 LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
 
 LI_MESSAGE-LINE = 'Hormat kami,'.
APPEND LI_MESSAGE.
CONCATENATE 'District/Plant' LV_KTEXT INTO LI_MESSAGE-LINE SEPARATED BY SPACE.
APPEND LI_MESSAGE.
 
 
PERFORM FM_SEND_EMAIL TABLES LI_RECEIVER LI_MESSAGE USING LV_SUBJECT .
 
ENDFORM.                   "FM_WRITE_EMAIL2
 
*&---------------------------------------------------------------------*
*&      Form  FM_WRITE_EMAIL3
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PV_RSNUM   text
*----------------------------------------------------------------------*
FORM FM_WRITE_EMAIL3 USING PV_RSNUM.
DATA: LV_SUBJECT LIKE SODOCCHGI1-OBJ_DESCR.
DATA: LI_RECEIVER LIKE STANDARD TABLE OF SOMLRECI1 WITH HEADER LINE,
       LI_MESSAGE LIKE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,
       LV_KTEXT LIKE CSKT-KTEXT,
       LV_EMAIL_ADDRESS LIKE SZA5_D0700-SMTP_ADDR.
 
*  Cari Informasi utk Cost Center
SELECT SINGLE KTEXT INTO LV_KTEXT
FROM CSKT
WHERE
   KOSTL = PA_KOSTL.
*  Tulis Subject
CONCATENATE 'Pembatalan Reservasi dari' LV_KTEXT INTO LV_SUBJECT SEPARATED BY SPACE.
 
*  Tulis Penerima Message
SORT GI_ZTA_WM_JOB_POST BY WERKS LGORT SUPERVISOR STAFF CH_TYPE.
DELETE ADJACENT DUPLICATES FROM GI_ZTA_WM_JOB_POST
COMPARING WERKS LGORT SUPERVISOR STAFF CH_TYPE.
LOOP AT GI_ZTA_WM_JOB_POST WHERE CH_TYPE = '2'.
  FREE LV_EMAIL_ADDRESS.
  PERFORM FM_GET_EMAIL_BY_USERID USING GI_ZTA_WM_JOB_POST-SUPERVISOR LV_EMAIL_ADDRESS.
   LI_RECEIVER-RECEIVER = LV_EMAIL_ADDRESS.
   LI_RECEIVER-REC_TYPE = 'U'.
   LI_RECEIVER-EXPRESS = 'X'.
   LI_RECEIVER-COM_TYPE = 'INT'.
   LI_RECEIVER-NOTIF_DEL = 'X'.
   LI_RECEIVER-NOTIF_NDEL = 'X'.
  APPEND LI_RECEIVER.
ENDLOOP.
 LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
 
*  Tulis Message
 LI_MESSAGE-LINE = 'Kepada Yth'.
APPEND LI_MESSAGE.
 LI_MESSAGE-LINE = 'Bapak/Ibu'.
APPEND LI_MESSAGE.
 LI_MESSAGE-LINE = 'di tempat'.
APPEND LI_MESSAGE.
 
 LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
 
CONCATENATE 'Nomor reservasi ' PV_RSNUM 'telah kami batalkan.' INTO LI_MESSAGE-LINE SEPARATED BY SPACE.
APPEND LI_MESSAGE.
 
*  LI_MESSAGE-LINE = 'Detail Pembatalan Item :'.
*  APPEND LI_MESSAGE.
*
*  LOOP AT GI_RSNUM2.
*    CONCATENATE ' ' GI_RSNUM2-RSPOS '-> dibatalkan'  INTO LI_MESSAGE-LINE SEPARATED BY SPACE.
*    APPEND LI_MESSAGE.
*  ENDLOOP.
 
 LI_MESSAGE-LINE = 'Terima kasih atas kerja samanya'.
APPEND LI_MESSAGE.
 
 LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
 
 LI_MESSAGE-LINE = 'Hormat kami,'.
APPEND LI_MESSAGE.
 
CONCATENATE 'District/Plant' LV_KTEXT INTO LI_MESSAGE-LINE SEPARATED BY SPACE.
APPEND LI_MESSAGE.
 
 
PERFORM FM_SEND_EMAIL TABLES LI_RECEIVER LI_MESSAGE USING LV_SUBJECT .
 
ENDFORM.                   "FM_WRITE_EMAIL3
 
*&---------------------------------------------------------------------*
*&      Form  FM_SEND_EMAIL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PV_SUBJECT   text
*      -->PT_RECEIVER  text
*      -->PT_MESSAGE   text
*----------------------------------------------------------------------*
FORM FM_SEND_EMAIL TABLES PT_RECEIVER PT_MESSAGE USING PV_SUBJECT .
CALL FUNCTION 'ZFN_SEND_EMAIL2'
  EXPORTING
     P_SUBJECT               = PV_SUBJECT
*   P_ATTACH_FORMAT         =
*   P_ATTACH_DESCR          =
*   P_ATTACH_FILENAME       =
  TABLES
     PI_RECEIVER             = PT_RECEIVER
     PI_MESSAGE              = PT_MESSAGE
*   PI_ATTACH               =
           .
ENDFORM.                   "FM_SEND_EMAIL
 
*&---------------------------------------------------------------------*
*&      Form  FM_CEK_data_CHANGED
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM FM_CEK_DATA_CHANGED.
DATA: LV_COUNTER TYPE I.
DATA: LI_RESB LIKE STANDARD TABLE OF  RESB WITH HEADER LINE.
LOOP AT GI_RSNUM1.
  DELETE GI_RSNUM1.
ENDLOOP.
 
*  Cek jika ada perubahan Quantity atau Flag Delete
LOOP AT TI_RESB_NEW .
  READ TABLE TI_RESB_OLD WITH KEY RSNUM = TI_RESB_NEW-RSNUM
                                   RSPOS = TI_RESB_NEW-RSPOS.
  IF SY-SUBRC = 0.
    IF TI_RESB_NEW-ERFMG NE TI_RESB_OLD-ERFMG.
      MOVE-CORRESPONDING TI_RESB_NEW TO GI_RSNUM1.
      APPEND GI_RSNUM1.
      PERFORM FM_CEK_JOB_POS USING LV_COUNTER SY-UNAME TI_RESB_OLD-WERKS TI_RESB_OLD-LGORT '1'.
    ENDIF.
    IF TI_RESB_NEW-XLOEK = 'X'.
      MOVE-CORRESPONDING TI_RESB_NEW TO GI_RSNUM2.
      APPEND GI_RSNUM2.
      PERFORM FM_CEK_JOB_POS USING LV_COUNTER SY-UNAME TI_RESB_OLD-WERKS TI_RESB_OLD-LGORT '1'.
    ENDIF.
  ENDIF.
ENDLOOP.
 
*  Cek ada penambahan line item
IF LINES( TI_RESB_OLD ) > 0.
  READ TABLE TI_RESB_OLD INDEX 1.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE LI_RESB
  FROM RESB
  WHERE
     RSNUM = TI_RESB_OLD-RSNUM.
 
  LOOP AT LI_RESB .
    READ TABLE TI_RESB_OLD WITH KEY RSNUM = LI_RESB-RSNUM
                                     RSPOS = LI_RESB-RSPOS.
    IF SY-SUBRC <> 0.
      MOVE-CORRESPONDING LI_RESB TO GI_RSNUM3.
      APPEND GI_RSNUM3.
      PERFORM FM_CEK_JOB_POS USING LV_COUNTER SY-UNAME TI_RESB_OLD-WERKS TI_RESB_OLD-LGORT '1'.
    ENDIF.
  ENDLOOP.
 
ENDIF.
ENDFORM.                   "FM_CEK_data_CHANGED
 
*&---------------------------------------------------------------------*
*&      Form  fm_cek_data_delete
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PV_COUNTER text
*----------------------------------------------------------------------*
FORM FM_CEK_DATA_DELETE USING PV_COUNTER.
DATA: LV_COUNTER TYPE I.
IF LINES( TI_RESB_OLD ) > 0.
  READ TABLE TI_RESB_OLD INDEX 1.
  SELECT COUNT(*) INTO PV_COUNTER
  FROM RESB
  WHERE
   RSNUM = TI_RESB_OLD-RSNUM.
  PERFORM FM_CEK_JOB_POS USING LV_COUNTER SY-UNAME TI_RESB_OLD-WERKS TI_RESB_OLD-LGORT '2'.
ENDIF.
ENDFORM.                   "fm_cek_data_delete
 
*&---------------------------------------------------------------------*
*&      Form  fm_get_email_by_userid
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PV_UNAME          text
*      -->PV_EMAIL_ADDRESS  text
*----------------------------------------------------------------------*
FORM FM_GET_EMAIL_BY_USERID USING PV_UNAME PV_EMAIL_ADDRESS.
CALL FUNCTION 'ZFN_GET_EMAIL_ADDRESS'
  EXPORTING
     USER_NAME     = PV_UNAME
  IMPORTING
     EMAIL_ADDRESS = PV_EMAIL_ADDRESS.
 
ENDFORM.                   "fm_get_email_by_userid