Views 229
Visitors 132

ZXMBCU01

Home 
| Top Page | Threads |
Previous  Next

*&---------------------------------------------------------------------*
*&  Include           ZXMBCU01                                         *
*&---------------------------------------------------------------------*
*"       TABLES
*"              XMKPF STRUCTURE  MKPF
*"              XMSEG STRUCTURE  MSEG
*"              XVM07M STRUCTURE  VM07M
*"----------------------------------------------------------------------
 
 
DATA : zgi_message TYPE TABLE OF solisti1 WITH HEADER LINE,
      zgw_mkpf LIKE mkpf,
      zgw_mseg LIKE mseg,
      zgw_mseg2 LIKE mseg,
      zgv_valid(1) TYPE c,
      zgv_no TYPE i,
      zgv_maktx LIKE makt-maktx,
      zgv_subject LIKE sodocchgi1-obj_descr,
      zgv_keycode LIKE zta_x_email_recp-keycode.
 
 
REFRESH zgi_message.
zgv_valid = 'X'.
zgv_no = 0.
zgv_keycode = ''.
 
LOOP AT xmkpf INTO zgw_mkpf.
CONCATENATE 'Terjadi posting dengan material document:'
   zgw_mkpf-mblnr '/' zgw_mkpf-mjahr
   'dengan keterangan sebagai berikut:'
   INTO zgi_message-line SEPARATED BY space.
APPEND zgi_message.
 
LOOP AT xmseg INTO zgw_mseg WHERE parent_id = '0'.
*   Movement Type 261 atau 301 atau 311
   IF ( zgw_mseg-bwart = '261' ) OR
      ( zgw_mseg-bwart = '301' ) OR
      ( zgw_mseg-bwart = '311' ).
*     Harus Ada Reservation Number
     IF zgw_mseg-rsnum IS NOT INITIAL.
       MOVE-CORRESPONDING zgw_mseg TO zgw_mseg2.
       AT FIRST.
         zgi_message-line = '     Tanggal Dokumen : '.
         write zgw_mkpf-bldat to zgi_message-line+23.
         APPEND zgi_message.
 
         zgi_message-line = '     Reservation No. :'.
         write zgw_mseg2-rsnum to zgi_message-line+23.
         APPEND zgi_message.
 
         CONCATENATE        '     Gudang Pengirim :'
           zgw_mseg2-werks '-' zgw_mseg2-lgort INTO zgi_message-line
           SEPARATED BY space.
         APPEND zgi_message.
 
         CONCATENATE        '     Gudang Penerima :'
           zgw_mseg2-umwrk '-' zgw_mseg2-umlgo INTO zgi_message-line
           SEPARATED BY space.
         APPEND zgi_message.
 
         zgi_message-line = ''.
         APPEND zgi_message.
 
         zgi_message-line =
'====================================================================' &
'==========='
         .
         APPEND zgi_message.
         zgi_message-line =
' No. Material-Id  Batch  Material-Description                       ' &
'   Quantity'
         .
         APPEND zgi_message.
         zgi_message-line =
'====================================================================' &
'==========='
         .
         APPEND zgi_message.
 
         CONCATENATE zgw_mseg2-umwrk zgw_mseg2-umlgo
           INTO zgv_keycode.
       ENDAT.
 
       ADD 1 TO zgv_no.
 
       zgi_message-line = ''.
       WRITE zgv_no TO zgi_message-line+0(3).
       WRITE '.' TO zgi_message-line+3(1).
       WRITE zgw_mseg-matnr TO zgi_message-line+5(10).
       WRITE zgw_mseg-charg TO zgi_message-line+18(4).
 
       zgv_maktx = ''.
       SELECT SINGLE maktx
         FROM makt
         INTO zgv_maktx
         WHERE spras = sy-langu AND
               matnr = zgw_mseg-matnr.
 
       WRITE zgv_maktx TO zgi_message-line+25(40).
       IF FLOOR( zgw_mseg-erfmg ) = zgw_mseg-erfmg.
         WRITE zgw_mseg-erfmg TO zgi_message-line+65(9) DECIMALS 0.
       ELSE.
         WRITE zgw_mseg-erfmg TO zgi_message-line+65(9).
       ENDIF.
       WRITE zgw_mseg-erfme TO zgi_message-line+75(3).
       APPEND zgi_message.
     ELSE.
       zgv_valid = ' '.
       EXIT.
     ENDIF.
   ELSE.
     zgv_valid = ' '.
     EXIT.
   ENDIF.
ENDLOOP.
ENDLOOP.
 
IF ( zgv_valid = 'X' ) AND ( zgv_keycode IS NOT INITIAL ).
zgi_message-line =
'====================================================================' &
'==========='
.
APPEND zgi_message.
zgi_message-line = ''.
APPEND zgi_message.
 
CONCATENATE 'Created by:' sy-uname 'at'
   INTO zgi_message-line SEPARATED BY space.
 
zgv_no = strlen( zgi_message-line ) + 1.
write sy-datum to zgi_message-line+zgv_no.
 
zgv_no = strlen( zgi_message-line ).
write '-' to zgi_message-line+zgv_no.
 
zgv_no = strlen( zgi_message-line ).
write sy-uzeit to zgi_message-line+zgv_no.
 
APPEND zgi_message.
 
zgi_message-line = ''.
APPEND zgi_message.
 
CONCATENATE '[SAP] Material Document' zgw_mkpf-mblnr '/'
zgw_mkpf-mjahr 'Created'
   INTO zgv_subject SEPARATED BY space.
 
*  message i398(00) with zgv_keycode.
 
CALL FUNCTION 'ZFN_SEND_EMAIL_RECP_LST'
   EXPORTING
     p_appcode  = 'W0013'
     p_keycode  = zgv_keycode
     p_subject  = zgv_subject
   TABLES
     pi_message = zgi_message.
ENDIF.
 
************************************************************************
************************************************************************
****************************************** End of WM0013
**************************************
************************************************************************
***********************
 
DATA : begin of gw_nopr,
      ebeln like ekpo-ebeln,
      banfn like ekpo-banfn,
      bnfpo like ekpo-bnfpo,
      matnr like ekpo-matnr,
      txz01 like ekpo-txz01,
      estkz like eban-estkz,
      menge like eban-menge,
      meins like eban-meins,
      ernam like eban-ernam,
      erfmg like mseg-erfmg,
      erfme like mseg-erfme,
      mengematdoc like mseg-menge,
      meinsmatdoc like mseg-meins,
      werks like mseg-werks,
      lgort like mseg-lgort,
      mblnr like mseg-mblnr,
      end of gw_nopr.
 
DATA : gi_nopr like gw_nopr occurs 0 with header line.
DATA : gi_tempnopr like gw_nopr occurs 0 with header line.
DATA : gi_nopr_manual like gw_nopr occurs 0 with header line.
*DATA : xmseg like mseg occurs 0 with header line.
DATA : begin of gw_nama,
      ernam like eban-ernam,
      ebeln like ekpo-ebeln,
      banfn like eban-banfn,
      mblnr like mseg-mblnr,
      end of gw_nama.
 
DATA : gi_nama like gw_nama occurs 0 with header line.
DATA : gi_receiver like SOMLRECI1 occurs 0 with header line.
DATA : p_subject like SODOCCHGI1-OBJ_DESCR.
DATA : pi_message like SOLISTI1 occurs 0 with header line.
DATA : gv_erfmg(20),
      gv_menge(20),
      gv_werks(20),
      gv_lgort(20),
      gv_detail type string,
      lv_length type i.
 
DATA : lv_dispo like marc-dispo,
      lv_tabix like sy-tabix,
      lv_usrkey like t024d-usrkey.
 
 
clear : gi_nopr,gi_tempnopr,gi_nopr_manual.
free : gi_nopr,gi_tempnopr,gi_nopr_manual.
 
 
*select *
*into table xmseg
*from mseg
*where mblnr = '5000001183'.
*
*break-point.
**Mendapatkan No PR
loop at xmseg.
clear gi_tempnopr.
free gi_tempnopr.
select b~banfn b~bnfpo b~matnr b~txz01 b~ebeln
        c~estkz c~menge c~meins c~ernam
into corresponding fields of table gi_tempnopr
from ekko as a
inner join ekpo as b on a~ebeln = b~ebeln
inner join eban as c on c~ebeln = b~ebeln and c~ebelp = b~ebelp
where a~bsart in ('NB','ZIM','ZAS')
and a~ebeln = xmseg-ebeln
and b~ebelp = xmseg-ebelp.
 
loop at gi_tempnopr.
   gi_tempnopr-erfmg = xmseg-erfmg.
   gi_tempnopr-erfme = xmseg-erfme.
   gi_tempnopr-mblnr = xmseg-mblnr.
   gi_tempnopr-werks = xmseg-werks.
   gi_tempnopr-lgort = xmseg-lgort.
   gi_tempnopr-mengematdoc = xmseg-menge.
   gi_tempnopr-meinsmatdoc = xmseg-meins.
   append gi_tempnopr to gi_nopr.
endloop.
endloop.
 
loop at gi_nopr.
if gi_nopr-estkz <> 'B'.
   append gi_nopr to gi_nopr_manual.
   delete gi_nopr where ebeln = gi_nopr-ebeln and banfn = gi_nopr-banfn
                    and bnfpo = gi_nopr-bnfpo and matnr = gi_nopr-matnr
                    .
endif.
endloop.
 
****Untuk PR yang dibuat Manual..
clear : gw_nama, gi_nama.
free : gi_nama.
 
loop at gi_nopr_manual.
gw_nama-ernam = gi_nopr-ernam.
gw_nama-ebeln = gi_nopr-ebeln.
gw_nama-banfn = gi_nopr-banfn.
gw_nama-mblnr = gi_nopr-mblnr.
collect gw_nama into gi_nama.
endloop.
 
loop at gi_nama.
clear : gi_receiver,p_subject.
free : gi_receiver,pi_message.
 
select single smtp_addr
into gi_receiver-receiver
from usr21 as a
inner join adr6 as b on a~persnumber = b~persnumber
                     and a~addrnumber = b~addrnumber
where a~bname = gi_nama-ernam.
 
* "Jenis recipient: U-Internet Address. Daftar lengkap lihat di SBWP.
gi_receiver-rec_type  = 'U'.
*"Isi dengan 'X' kalau sebagai CC
gi_receiver-copy = ' '.
* "Isi dengan 'X' kalau sebagai BCC
gi_receiver-blind_copy = ' '.
 
append gi_receiver.
 
**Untuk Judul Email..
concatenate 'Notification GR ( PR:' gi_nama-banfn 'GR:' gi_nama-mblnr
')'
             into p_subject separated by space.
 
**Isi Detail Email
CLEAR pi_message.
CONCATENATE 'PR Number :' gi_nama-banfn
   INTO pi_message-line SEPARATED BY space.
 
APPEND pi_message.
 
CLEAR pi_message.
CONCATENATE 'PO Number :' gi_nama-ebeln
   INTO pi_message-line SEPARATED BY space.
 
APPEND pi_message.
 
CLEAR pi_message.
CONCATENATE 'GR Number :' gi_nama-mblnr
   INTO pi_message-line SEPARATED BY space.
 
APPEND pi_message.
 
**Kosongin 2 baris
CLEAR pi_message.
DO 2 Times.
   APPEND pi_message.
ENDDO.
 
clear pi_message.
pi_message-line = 'Items Receipt : '.
APPEND pi_message.
 
clear pi_message.
pi_message-line =
'Product Code        Plant                 SLoc                               Qty ' &
'Good Receipt        Qty PR'
.
APPEND pi_message.
 
 
loop at gi_nopr_manual where ernam = gi_nama-ernam and ebeln =
gi_nama-ebeln
                          and banfn = gi_nama-banfn and mblnr =
                          gi_nama-mblnr.
 
   clear : pi_message, gv_erfmg, gv_menge, gv_werks, gv_lgort,
   gv_detail.
 
   if gi_nopr_manual-erfmg < 1.
     gv_erfmg = gi_nopr_manual-menge.
     gi_nopr_manual-erfme = gi_nopr_manual-meins.
   else.
     gv_erfmg = gi_nopr_manual-erfmg.
   endif.
 
   gv_menge = gi_nopr_manual-menge.
 
   condense : gv_erfmg, gv_menge.
 
   select single name1
   into gv_werks
   from t001w
   where werks = gi_nopr_manual-werks.
 
   select single lgobe
   into gv_lgort
   from t001l
   where werks = gi_nopr_manual-werks
   and lgort = gi_nopr_manual-lgort.
 
   CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
     EXPORTING
       input         = gi_nopr_manual-matnr
     IMPORTING
       OUTPUT        = gi_nopr_manual-matnr.
 
   lv_length = strlen( gi_nopr_manual-matnr ).
 
   lv_length = 19 - lv_length.
 
   gv_detail = gi_nopr_manual-matnr.
 
   do lv_length times.
    concatenate gv_detail ` ` into gv_detail.
   enddo.
 
   concatenate gv_detail gv_werks into gv_detail separated by space.
 
   lv_length = strlen( gv_werks ).
 
   lv_length = 21 - lv_length.
 
   do lv_length times.
    concatenate gv_detail ` ` into gv_detail.
   enddo.
 
   concatenate gv_detail gv_lgort into gv_detail separated by space.
 
   lv_length = strlen( gv_lgort ).
 
   lv_length = 21 - lv_length.
 
   do lv_length times.
    concatenate gv_detail ` ` into gv_detail.
   enddo.
 
   concatenate gv_detail gv_erfmg gi_nopr_manual-erfme
               into gv_detail separated by space.
 
   lv_length = strlen( gv_erfmg ) + strlen( gi_nopr_manual-erfme ).
 
   if lv_length > 22.
     lv_length = 0.
   else.
     lv_length = 22 - lv_length.
   endif.
 
   do lv_length times.
    concatenate gv_detail ` ` into gv_detail.
   enddo.
 
   concatenate gv_detail gv_menge gi_nopr_manual-meins
               into gv_detail separated by space.
 
   pi_message-line = gv_detail.
 
   append pi_message.
 
   pi_message-line = gi_nopr_manual-txz01.
   append pi_message.
 
   clear : pi_message.
   append pi_message.
endloop.
 
CALL FUNCTION 'ZFN_SEND_EMAIL'
   EXPORTING
     p_subject   = p_subject
   TABLES
     pi_receiver = gi_receiver
     pi_message  = pi_message.
           .
*  commit work and wait.
 
endloop.
 
CLEAR : gw_nama, gi_nama.
FREE : gi_nama.
***Untuk PR yang dibuat otomatis(dari run MRP).
loop at gi_nopr.
lv_tabix = sy-tabix.
 
clear lv_dispo.
select single dispo
into lv_dispo
from marc
where matnr = gi_nopr-matnr
and werks = gi_nopr-werks.
 
*  select single uname
*  into gi_nopr-ernam
*  from zta_p_usrid
*  where werks = gi_nopr-werks
*  and dispo = lv_dispo.
 
clear lv_usrkey.
select single USRKEY
into lv_usrkey
from T024D
where werks = gi_nopr-werks
and dispo = lv_dispo.
 
condense lv_usrkey.
 
TRANSLATE lv_usrkey TO UPPER CASE.
 
gi_nopr-ernam = lv_usrkey.
 
gw_nama-ernam = gi_nopr-ernam.
gw_nama-ebeln = gi_nopr-ebeln.
gw_nama-banfn = gi_nopr-banfn.
gw_nama-mblnr = gi_nopr-mblnr.
collect gw_nama into gi_nama.
 
modify gi_nopr index lv_tabix.
endloop.
 
loop at gi_nama.
clear : gi_receiver,p_subject.
free : gi_receiver,pi_message.
 
select single smtp_addr
into gi_receiver-receiver
from usr21 as a
inner join adr6 as b on a~persnumber = b~persnumber
                     and a~addrnumber = b~addrnumber
where a~bname = gi_nama-ernam.
 
* "Jenis recipient: U-Internet Address. Daftar lengkap lihat di SBWP.
gi_receiver-rec_type  = 'U'.
*"Isi dengan 'X' kalau sebagai CC
gi_receiver-copy = ' '.
* "Isi dengan 'X' kalau sebagai BCC
gi_receiver-blind_copy = ' '.
 
append gi_receiver.
 
**Untuk Judul Email..
concatenate 'Notification GR ( PR:' gi_nama-banfn 'GR:' gi_nama-mblnr
')'
             into p_subject separated by space.
 
**Isi Detail Email
CLEAR pi_message.
CONCATENATE 'PR Number :' gi_nama-banfn
   INTO pi_message-line SEPARATED BY space.
 
APPEND pi_message.
 
CLEAR pi_message.
CONCATENATE 'PO Number :' gi_nama-ebeln
   INTO pi_message-line SEPARATED BY space.
 
APPEND pi_message.
 
CLEAR pi_message.
CONCATENATE 'GR Number :' gi_nama-mblnr
   INTO pi_message-line SEPARATED BY space.
 
APPEND pi_message.
 
**Kosongin 2 baris
CLEAR pi_message.
DO 2 Times.
   APPEND pi_message.
ENDDO.
 
clear pi_message.
pi_message-line = 'Items Receipt : '.
APPEND pi_message.
 
clear pi_message.
pi_message-line =
'Product Code        Plant                 SLoc                               Qty ' &
'Good Receipt        Qty PR'
.
APPEND pi_message.
 
break willguna.
 
loop at gi_nopr where ernam = gi_nama-ernam and ebeln = gi_nama-ebeln
                   and banfn = gi_nama-banfn and mblnr = gi_nama-mblnr.
   clear : pi_message, gv_erfmg, gv_menge, gv_werks, gv_lgort,
   gv_detail.
 
   if gi_nopr-erfmg < 1.
     gv_erfmg = gi_nopr-menge.
     gi_nopr-erfme = gi_nopr-meins.
   else.
     gv_erfmg = gi_nopr-erfmg.
   endif.
 
   gv_menge = gi_nopr-menge.
 
   condense : gv_erfmg, gv_menge.
 
   select single name1
   into gv_werks
   from t001w
   where werks = gi_nopr-werks.
 
   select single lgobe
   into gv_lgort
   from t001l
   where werks = gi_nopr-werks
   and lgort = gi_nopr-lgort.
 
   CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
     EXPORTING
       input         = gi_nopr-matnr
     IMPORTING
       OUTPUT        = gi_nopr-matnr.
 
   lv_length = strlen( gi_nopr-matnr ).
 
   lv_length = 19 - lv_length.
 
   gv_detail = gi_nopr-matnr.
 
   do lv_length times.
    concatenate gv_detail ` ` into gv_detail.
   enddo.
 
   concatenate gv_detail gv_werks into gv_detail separated by space.
 
   lv_length = strlen( gv_werks ).
 
   lv_length = 21 - lv_length.
 
   do lv_length times.
    concatenate gv_detail ` ` into gv_detail.
   enddo.
 
   concatenate gv_detail gv_lgort into gv_detail separated by space.
 
   lv_length = strlen( gv_lgort ).
 
   lv_length = 21 - lv_length.
 
   do lv_length times.
    concatenate gv_detail ` ` into gv_detail.
   enddo.
 
   concatenate gv_detail gv_erfmg gi_nopr-erfme
               into gv_detail separated by space.
 
   lv_length = strlen( gv_erfmg ) + strlen( gi_nopr-erfme ).
 
   if lv_length > 22.
     lv_length = 0.
   else.
     lv_length = 22 - lv_length.
   endif.
 
   do lv_length times.
    concatenate gv_detail ` ` into gv_detail.
   enddo.
 
   concatenate gv_detail gv_menge gi_nopr-meins
               into gv_detail separated by space.
 
   pi_message-line = gv_detail.
 
   append pi_message.
 
   pi_message-line = gi_nopr-txz01.
   append pi_message.
 
   clear : pi_message.
   append pi_message.
endloop.
 
CALL FUNCTION 'ZFN_SEND_EMAIL'
   EXPORTING
     p_subject   = p_subject
   TABLES
     pi_receiver = gi_receiver
     pi_message  = pi_message.
           .
*  commit work and wait.
 
endloop.
 
 
*End

User Threads | New Thread ( Only for Donators )

Threads Last Post Replies Views