Skip to content

Instantly share code, notes, and snippets.

@fahridon
Created December 13, 2018 10:31
Show Gist options
  • Save fahridon/43fe1ebfd3144204b790cefe70224c2c to your computer and use it in GitHub Desktop.
Save fahridon/43fe1ebfd3144204b790cefe70224c2c to your computer and use it in GitHub Desktop.
ABAP: Send HTML table mail.
DATA:
BEGIN OF it_boyaraf OCCURS 0,
matnr LIKE mchb–matnr,
meins LIKE mara–meins,
clabs LIKE mchb–clabs,
mustr LIKE zmme_002–mustr,
bmatnr LIKE mchb–matnr,
dikis_gr_1_dz LIKE zpd_036–dikis_gr_1_dz,
kg LIKE mchb–clabs,
renk LIKE zpd_057–boya_notu,
lgort LIKE zpd_057–boya_notu,
END OF it_boyaraf,
wa_boyaraf LIKE LINE OF it_boyaraf.
DATA:
BEGIN OF t_mail OCCURS 0,
receiver TYPE zpp_t_mailgrup–smtp_addr,
END OF t_mail,
ls_mail LIKE LINE OF t_mail.
DATA:
w_docdata TYPE sodocchgi1,
w_objtxt TYPE solisti1,
w_objbin TYPE solisti1,
w_objpack TYPE sopcklsti1,
w_reclist TYPE somlreci1,
w_lines TYPE i,
* Table declaration
t_objbin TYPE TABLE OF solisti1, " Attachment data
t_objtxt TYPE TABLE OF solisti1, " Message body
t_objpack TYPE TABLE OF sopcklsti1, " Packing list
t_reclist TYPE TABLE OF somlreci1, " Receipient list
t_objhead TYPE TABLE OF solisti1. " Header
DATA: dat_1f TYPE sy–datum.
DATA: mcarpan(12).
DATA :
lt_salesorders TYPE STANDARD TABLE OF zsd_s_mt_ikitarih INITIAL
SIZE 0,
wa_salesorders LIKE LINE OF lt_salesorders.
DATA:
BEGIN OF lt_salesorders2 OCCURS 0,
orgu LIKE mchb–matnr,
renk LIKE cawnt–atwtb,
END OF lt_salesorders2,
wa_salesorders2 LIKE LINE OF lt_salesorders2.
DATA:
BEGIN OF lt_salesorders3 OCCURS 0,
orgu LIKE mchb–matnr,
renk LIKE cawnt–atwtb,
END OF lt_salesorders3,
wa_salesorders3 LIKE LINE OF lt_salesorders3.
DATA lv_matnr TYPE mchb–matnr.
DATA lv_clabs TYPE mchb–clabs.
DATA lv_kg TYPE mchb–clabs.
DATA lv_lgort TYPE mchb–lgort.
dat_1f = sy–datum – 30.
* Fabrika mail
* Document Description
w_docdata–obj_name = text–001. “'Boya İlk Defa Boyanacak Ürün Raporu'.
w_docdata–obj_descr = text–000. " 'Miktarı 30 Kg olan yeni ürünler'.
* Message Body
w_objtxt–line = '<html> <body>'.
APPEND w_objtxt TO t_objtxt.
w_objtxt–line = '<p> Boya İlk Defa Boyanacak Ürün Raporu </p>'.
APPEND w_objtxt TO t_objtxt.
* table display
w_objtxt–line = '<table style="MARGIN: 10px" bordercolor="blue" '.
APPEND w_objtxt TO t_objtxt.
w_objtxt–line = ' cellspacing="0″ cellpadding="5″ width="500″'.
APPEND w_objtxt TO t_objtxt.
w_objtxt–line = ' border="1″><tbody><tr>'.
APPEND w_objtxt TO t_objtxt.
* table header
w_objtxt–line = '<th bgcolor="yellow" nowrap>Raf Ürün</th>'.
APPEND w_objtxt TO t_objtxt.
w_objtxt–line = '<th bgcolor="yellow">Birim</th>'.
APPEND w_objtxt TO t_objtxt.
w_objtxt–line = '<th bgcolor="yellow" nowrap>Toplam Adet</th>'.
APPEND w_objtxt TO t_objtxt.
w_objtxt–line = '<th bgcolor="yellow">Müşteri</th>'.
APPEND w_objtxt TO t_objtxt.
w_objtxt–line = '<th bgcolor="yellow">Boya Ürün</th>'.
APPEND w_objtxt TO t_objtxt.
w_objtxt–line = '<th bgcolor="yellow" nowrap>PD 1 DZ Dkş.Grm.</th>'.
APPEND w_objtxt TO t_objtxt.
w_objtxt–line = '<th bgcolor="yellow">KG</th>'.
APPEND w_objtxt TO t_objtxt.
w_objtxt–line = '<th bgcolor="yellow" nowrap>Renk Listesi</th>'.
APPEND w_objtxt TO t_objtxt.
w_objtxt–line = '<th bgcolor="yellow" nowrap>Depo</th></tr>'.
APPEND w_objtxt TO t_objtxt.
SELECT smtp_addr AS receiver
FROM zpp_t_mailgrup INTO TABLE t_mail
WHERE tcode EQ 'ZMMR002'.
SELECT b~matnr m~meins z~mustr t~matnr AS bmatnr
SUM( b~clabs ) AS clabs b~lgort
INTO CORRESPONDING FIELDS OF TABLE it_boyaraf
FROM mchb AS b
INNER JOIN mara AS m ON m~matnr EQ b~matnr
LEFT OUTER JOIN zmme_002 AS z ON z~matnr EQ b~matnr
LEFT OUTER JOIN stpo AS s ON s~idnrk EQ b~matnr
INNER JOIN mast AS t ON t~stlnr EQ s~stlnr
INNER JOIN mara AS f ON f~matnr EQ t~matnr
WHERE b~lvorm EQ space AND m~lvorm EQ space
AND b~lgort IN ('4002','5001')
AND f~matkl EQ 'Y-BOY'
AND b~clabs NE 0 AND m~lvorm EQ space
AND NOT EXISTS
( SELECT matnr FROM zpp_t_ias_boya WHERE matnr EQ t~matnr )
AND NOT EXISTS
( SELECT n~matnr FROM zpp_t_boya_psb AS n
INNER JOIN rkpf AS r ON n~rsnum = r~rsnum
WHERE n~matnr EQ t~matnr )
GROUP BY b~matnr m~meins z~mustr t~matnr b~lgort
ORDER BY b~matnr b~lgort.
IF sy–subrc <> 0.
WRITE: text–004.“'Hata.'.
ELSE.
CALL FUNCTION 'ZPP_RFC_SD_IKI_TARIH_ARASI'
TABLES
t_salesorders = lt_salesorders
EXCEPTIONS
no_entry = 1
OTHERS = 2.
IF sy–subrc <> 0.
* pl sip yok
ENDIF.
CLEAR: lt_salesorders2, lt_salesorders3.
LOOP AT lt_salesorders INTO wa_salesorders.
wa_salesorders2–orgu = wa_salesorders–orgu.
wa_salesorders2–renk = wa_salesorders–renk.
COLLECT wa_salesorders2 INTO lt_salesorders2.
CLEAR wa_salesorders2.
ENDLOOP.
SELECT a~matnr AS orgu a~j_3akordx AS renk
INTO CORRESPONDING FIELDS OF TABLE lt_salesorders3
FROM mean AS a
INNER JOIN zmrp_t002 AS b ON b~matnr = a~matnr
* and a~j_3akordx = b~renk “sipi olmayan gelmesin
WHERE a~ean11 LIKE '%' AND a~j_3akordx <> ''
AND b~xloek <> 'X'.
LOOP AT lt_salesorders3 INTO wa_salesorders3.
wa_salesorders2–orgu = wa_salesorders3–orgu+2(6).
wa_salesorders2–renk = wa_salesorders3–renk+3(5).
COLLECT wa_salesorders2 INTO lt_salesorders2.
CLEAR wa_salesorders2.
ENDLOOP.
LOOP AT it_boyaraf INTO wa_boyaraf.
SELECT SINGLE dikis_gr_1_dz INTO wa_boyaraf–dikis_gr_1_dz
FROM zpd_036 WHERE urun_kodu EQ wa_boyaraf–matnr+0(6).
wa_boyaraf–kg =
( wa_boyaraf–dikis_gr_1_dz * wa_boyaraf–clabs ) / 12000.
LOOP AT lt_salesorders2 INTO wa_salesorders2.
IF wa_salesorders2–orgu = wa_boyaraf–matnr+0(6).
IF wa_boyaraf–renk =''.
wa_boyaraf–renk = wa_salesorders2–renk.
ELSE.
CONCATENATE wa_boyaraf–renk wa_salesorders2–renk
INTO wa_boyaraf–renk SEPARATED BY ', '.
ENDIF.
ENDIF.
ENDLOOP.
MODIFY it_boyaraf FROM wa_boyaraf.
CLEAR wa_boyaraf.
ENDLOOP.
DELETE it_boyaraf WHERE renk = space.
DELETE it_boyaraf WHERE renk = 'RENKSIZ'.
CLEAR: lv_matnr, lv_clabs, lv_lgort.
LOOP AT it_boyaraf INTO wa_boyaraf.
IF lv_matnr = wa_boyaraf–matnr.
wa_boyaraf–clabs = wa_boyaraf–clabs + lv_clabs.
wa_boyaraf–kg = wa_boyaraf–kg + lv_kg.
CONCATENATE wa_boyaraf–lgort lv_lgort
INTO wa_boyaraf–lgort SEPARATED BY ', '.
MODIFY it_boyaraf FROM wa_boyaraf.
CLEAR wa_boyaraf.
DELETE it_boyaraf WHERE matnr = lv_matnr
AND lgort = lv_lgort AND clabs = lv_clabs AND kg = lv_kg.
ENDIF.
lv_matnr = wa_boyaraf–matnr.
lv_clabs = wa_boyaraf–clabs.
lv_kg = wa_boyaraf–kg.
lv_lgort = wa_boyaraf–lgort.
ENDLOOP.
LOOP AT it_boyaraf INTO wa_boyaraf.
IF wa_boyaraf–kg <> 0.
IF wa_boyaraf–kg < 30.
DELETE TABLE it_boyaraf FROM wa_boyaraf.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT it_boyaraf INTO wa_boyaraf.
CONCATENATE '<tr style="background-color:#eeeeee;"><td>'
wa_boyaraf–matnr
'</td>'
INTO w_objtxt.
APPEND w_objtxt TO t_objtxt.
CONCATENATE '<td>' wa_boyaraf–meins '</td> ' INTO w_objtxt–line.
APPEND w_objtxt TO t_objtxt.
mcarpan = wa_boyaraf–clabs.
CONCATENATE '<td>' mcarpan '</td>' INTO w_objtxt–line.
APPEND w_objtxt TO t_objtxt.
CONCATENATE '<td nowrap>' wa_boyaraf–mustr'</td>'
INTO w_objtxt–line.
APPEND w_objtxt TO t_objtxt.
CONCATENATE '<td>' wa_boyaraf–bmatnr'</td>' INTO w_objtxt–line.
APPEND w_objtxt TO t_objtxt.
mcarpan = wa_boyaraf–dikis_gr_1_dz.
CONCATENATE '<td>' mcarpan'</td>' INTO w_objtxt–line.
APPEND w_objtxt TO t_objtxt.
mcarpan = wa_boyaraf–kg.
CONCATENATE '<td>' mcarpan'</td>' INTO w_objtxt–line.
APPEND w_objtxt TO t_objtxt.
CONCATENATE '<td nowrap>' wa_boyaraf–renk '</td>' INTO
w_objtxt–line.
APPEND w_objtxt TO t_objtxt.
CONCATENATE '<td>' wa_boyaraf–lgort'</td>' INTO w_objtxt–line.
APPEND w_objtxt TO t_objtxt.
ENDLOOP.
* table close
w_objtxt–line = '</tbody> </table>'.
APPEND w_objtxt TO t_objtxt.
* Signature with background color
w_objtxt–line = '<br><br>'.
APPEND w_objtxt TO t_objtxt.
w_objtxt–line = '<p> Saygılar.</p>'.
APPEND w_objtxt TO t_objtxt.
* HTML close
w_objtxt–line = '</body> </html> '.
APPEND w_objtxt TO t_objtxt.
* Document data
DESCRIBE TABLE t_objtxt LINES w_lines.
READ TABLE t_objtxt INTO w_objtxt INDEX w_lines.
w_docdata–doc_size = ( w_lines – 1 ) * 255 + strlen( w_objtxt ).
* Packing data
CLEAR w_objpack–transf_bin.
w_objpack–head_start = 1.
w_objpack–head_num = 0.
w_objpack–body_start = 1.
w_objpack–body_num = w_lines.
* we will pass the HTML, since we have created the message
* body in the HTML
w_objpack–doc_type = 'HTML'.
APPEND w_objpack TO t_objpack.
*fabrika alıcı
LOOP AT t_mail INTO ls_mail.
w_reclist–receiver = ls_mail–receiver.
w_reclist–rec_type = 'U'.
APPEND w_reclist TO t_reclist.
CLEAR: w_reclist, ls_mail.
ENDLOOP.
* Send Mail
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_docdata
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = t_objpack
object_header = t_objhead
contents_txt = t_objtxt
receivers = t_reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy–subrc <> 0.
WRITE: text–002. " 'Fabrika Mail hata!'.
ELSE.
WRITE: text–003."'Fabrika Mail gönderildi.'.
ENDIF.
ENDIF.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment