Skip to content

Instantly share code, notes, and snippets.

@fahridon
Created December 13, 2018 07:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save fahridon/c69aacf2646d90be9ca4dd019574e922 to your computer and use it in GitHub Desktop.
Save fahridon/c69aacf2646d90be9ca4dd019574e922 to your computer and use it in GitHub Desktop.
ABAP: Send Email in HTML format from SAP
*---------------------------------------------------------------------*
* V A R I A B L E S *
*---------------------------------------------------------------------*
DATA:
t_header TYPE STANDARD TABLE OF w3head WITH HEADER LINE, "Header
t_fields TYPE STANDARD TABLE OF w3fields WITH HEADER LINE, "Fields
t_html TYPE STANDARD TABLE OF w3html, "Html
wa_header TYPE w3head,
w_head TYPE w3head.
DATA:BEGIN OF it_data OCCURS 0,
updkz LIKE zpp_t_prodord_l-updkz, " Icron güncelleme göst.
aufnr LIKE zpp_t_prodord_l-aufnr, " Sipariş
matnr LIKE zpp_t_prodord_l-matnr, " Malzeme
menge LIKE zpp_t_prodord_l-menge, " Miktar
meins LIKE zpp_t_prodord_l-meins, " ÖB
beden LIKE zpp_t_prodord_l-beden, " Matris
zzmakina LIKE zpp_t_prodord_l-zzmakina, " Makina Kodu
type LIKE zpp_t_prodord_l-type, " Mesaj Tipi
message LIKE zpp_t_prodord_l-message, " Mesaj
crnam LIKE zpp_t_prodord_l-crnam, " Yaratan
crdat LIKE zpp_t_prodord_l-crdat, " Y.Tarihi
crtim LIKE zpp_t_prodord_l-crtim, " Y.Saati
END OF it_data,
wa_data LIKE LINE OF it_data.
* Data Declarations
DATA: lt_mailsubject TYPE sodocchgi1.
DATA: lt_mailrecipients TYPE STANDARD TABLE OF somlrec90 WITH HEADER
LINE.
DATA: lt_mailtxt TYPE STANDARD TABLE OF soli WITH HEADER
LINE.
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.
*---------------------------------------------------------------------*
* S E L E C T I O N S C R E E N *
*---------------------------------------------------------------------*
*SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-000.
*PARAMETERS : P_WERKS LIKE T001W-WERKS OBLIGATORY.
*SELECT-OPTIONS : S_MATNR FOR MARA-MATNR.
*SELECTION-SCREEN END OF BLOCK BL1 .
*---------------------------------------------------------------------*
* E V E N T S *
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
INITIALIZATION.
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
AT SELECTION-SCREEN.
*---------------------------------------------------------------------*
* Validate Input At Selection Screen
*PERFORM screen_validation.
*---------------------------------------------------------------------*
START-OF-SELECTION.
*---------------------------------------------------------------------*
PERFORM build_data.
PERFORM send_mail.
*---------------------------------------------------------------------*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form BUILD_DATA
*&---------------------------------------------------------------------*
FORM build_data .
DATA: lv_date1 TYPE sy-datum.
DATA: lv_date2 TYPE sy-datum.
lv_date1 = sy-datum .
lv_date2 = sy-datum - 1.
* başarılı olmayan üretim siparişi işlemleri
SELECT log~updkz
log~aufnr
log~matnr
log~menge
log~meins
log~beden
log~zzmakina
log~type
log~message
log~crnam
log~crdat
log~crtim
FROM zpp_t_prodord_l AS log
INTO TABLE it_data
WHERE type NE 'S'
AND ( ( log~crdat EQ lv_date1 AND log~crtim LE sy-uzeit )
OR ( log~crdat EQ lv_date2 AND log~crtim GE sy-uzeit ) ).
* mak no boş olan siparişler
SELECT log~updkz
log~aufnr
log~matnr
log~menge
log~meins
log~beden
log~zzmakina
log~type
log~message
log~crnam
log~crdat
log~crtim FROM zpp_t_prodord_l AS log
INNER JOIN aufk
ON log~aufnr EQ aufk~aufnr
APPENDING TABLE it_data
WHERE ( ( log~crdat EQ lv_date1 AND log~crtim LE sy-uzeit )
OR ( log~crdat EQ lv_date2 AND log~crtim GE sy-uzeit ) )
AND aufk~loekz EQ ''
AND aufk~zzmakina EQ ''.
LOOP AT it_data INTO wa_data.
IF wa_data-type EQ 'S'.
wa_data-type = 'E'.
wa_data-message = 'SAP üretim siparişi Makine No boş olamaz!'.
MODIFY it_data FROM wa_data.
ENDIF.
ENDLOOP.
IF it_data[] IS INITIAL.
WRITE: / 'Kayıt bulunamadı!'.
ENDIF.
ENDFORM. " BUILD_DATA
*&---------------------------------------------------------------------*
*& Form SEND_MAIL
*&---------------------------------------------------------------------*
FORM send_mail .
CHECK it_data[] IS NOT INITIAL.
*-Fill the Column headings and Properties
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
*Merge işlemi
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'IT_DATA'
i_inclname = sy-repid
CHANGING
ct_fieldcat = gt_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
LOOP AT gt_fieldcat.
w_head-text = gt_fieldcat-seltext_s.
IF gt_fieldcat-fieldname = 'MESSAGE'.
w_head-text = 'Hata Mesajı'.
ENDIF.
*-Populate the Column Headings
CALL FUNCTION 'WWW_ITAB_TO_HTML_HEADERS'
EXPORTING
field_nr = sy-tabix
text = w_head-text
fgcolor = 'black'
bgcolor = 'orange'
TABLES
header = t_header.
*-Populate Column Properties
CALL FUNCTION 'WWW_ITAB_TO_HTML_LAYOUT'
EXPORTING
field_nr = sy-tabix
fgcolor = 'black'
size = '3'
TABLES
fields = t_fields.
ENDLOOP.
*-Title of the Display
wa_header-text = 'SAP Icron RFC hata detayları.' .
wa_header-font = 'Arial'.
wa_header-size = '2'.
*-Preparing the HTML from Intenal Table
REFRESH t_html.
CALL FUNCTION 'WWW_ITAB_TO_HTML'
EXPORTING
table_header = wa_header
TABLES
html = t_html
fields = t_fields
row_header = t_header
itable = it_data.
* Recipients
SELECT smtp_addr AS receiver
FROM zpp_t_mailgrup INTO TABLE t_mail
WHERE pgmna EQ 'ZPP_R_ICRON_MAIL_HATA'.
IF t_mail[] IS INITIAL.
lt_mailrecipients-receiver = 'user@domain.com.tr'.
lt_mailrecipients-rec_type = 'U'.
APPEND lt_mailrecipients .
CLEAR lt_mailrecipients .
ELSE.
LOOP AT t_mail INTO ls_mail.
lt_mailrecipients-receiver = ls_mail-receiver.
lt_mailrecipients-rec_type = 'U'.
APPEND lt_mailrecipients .
CLEAR lt_mailrecipients .
ENDLOOP.
ENDIF.
* Subject.
lt_mailsubject-obj_name = 'PENTI FABRIKA'.
lt_mailsubject-obj_langu = sy-langu.
lt_mailsubject-obj_descr = 'SAP Icron Örgü Üretim Siparişi Hata'.
* Mail Contents
lt_mailtxt[] = t_html[].
* Send Mail
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
commit_work = ''
put_in_outbox = 'X'
document_data = lt_mailsubject
document_type = 'HTM'
TABLES
object_content = lt_mailtxt
receivers = lt_mailrecipients
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 EQ 0.
COMMIT WORK AND WAIT.
SUBMIT rsconn01 WITH mode = 'INT' AND RETURN.
WRITE: / 'Mail gönderildi...'.
ELSE.
WRITE: / 'hata:',sy-subrc.
ENDIF.
ENDFORM. " SEND_MAIL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment