Dieses Programm versendet das Coding eines Programmes inkl. Includes per Mail
*&---------------------------------------------------------------------*
*& Report Z_MAIL_REPORT
*&
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& versendet Coding eines Reports
*&---------------------------------------------------------------------*
report z_mail_report.
data: gt_itab type table of string,
gf_itab type string,
gf_itab1(7) type c,
gt_itab1 like table of gf_itab1,
gs_stokes type stokes,
gt_itab2 type table of stokes,
gs_itab2 like line of gt_itab2,
gt_itab3 type table of sstmnt,
gt_itab4 type table of string,
gf_text type repti,
gf_tabix type sy-tabix.
data:
gv_header type so_obj_des. "VALUE 'Betreff mit CL_BCS erzeugen'.
" gv_raw TYPE char03 VALUE 'RAW'.
data:
gv_mlrec type so_obj_nam,
gv_sent_to_all type os_boolean,
gv_email type adr6-smtp_addr,
gv_subject type so_obj_des,
gv_text type bcsy_text,
gt_mailtext type soli_tab,
gs_mailtext type soli,
gr_mail type ref to cl_bcs,
gr_bcs_exception type ref to cx_bcs,
gr_recipient type ref to if_recipient_bcs,
gr_sender type ref to cl_sapuser_bcs,
gv_body type string,
gr_document type ref to cl_document_bcs.
parameter: p_report type c length 40.
initialization.
gf_itab1 = 'INCLUDE'.
append gf_itab1 to gt_itab1.
start-of-selection.
read report p_report into gt_itab.
*Wenn der Report existiert
if gt_itab is not initial.
" Verwenden Sie den Systemcode für den Erhalt aller Includes im Report.
scan abap-source gt_itab tokens into gt_itab2 statements into gt_itab3
keywords from gt_itab1.
" Holen Sie sich die Token, falls diese vorhanden sind.
if gt_itab2 is not initial.
append lines of gt_itab to gt_itab4.
refresh : gt_itab.
loop at gt_itab2 into gs_stokes.
" Wenn das Programm ein Include enthält dann wird dieses heruntergeladen.
if gs_stokes-str = 'INCLUDE'.
gf_tabix = sy-tabix + 1.
continue.
endif.
"Holen Sie sich den naemen des Includes.
read table gt_itab2 into gs_itab2 index gf_tabix.
if sy-subrc eq 0.
write : gs_itab2-str to gf_text.
*Hängen Sie das Coding in die Output Itab4
read report gf_text into gt_itab.
append lines of gt_itab to gt_itab4.
refresh : gt_itab.
endif.
endloop.
endif.
try.
"Erstelle Sendeanforderung
gr_mail = cl_bcs=>create_persistent( ).
"Email Von...(Absender)
gr_sender = cl_sapuser_bcs=>create( sy-uname ).
"Add sender to send request
call method gr_mail->set_sender
exporting
i_sender = gr_sender.
"Email An... (Empfänger)
gv_email = 'michel.regotz@t-systems.com'.
gr_recipient = cl_cam_address_bcs=>create_internet_address( gv_email ).
"Add recipient to send request
call method gr_mail->add_recipient
exporting
i_recipient = gr_recipient
i_express = 'X'.
"Email An... (Empfänger)
gv_email = 'michel.regotz@t-systems-dmc.com'.
gr_recipient = cl_cam_address_bcs=>create_internet_address( gv_email ).
"Add recipient to send request
call method gr_mail->add_recipient
exporting
i_recipient = gr_recipient
i_express = 'X'.
"Email Betreff
gv_header = p_report.
"Nachrichten-Text
loop at gt_itab4 into gf_itab.
concatenate gf_itab ' <br>'
"CONCATENATE '<b> ' gf_itab ' <br>'
into gs_mailtext separated by space.
append gs_mailtext to gt_mailtext.
endloop.
* "HTML-Formatierter Mailinhalt
* gt_mailtext = cl_document_bcs=>string_to_soli( gv_body ).
"Email BODY (Text)
gr_document = cl_document_bcs=>create_document( i_type = 'HTM'
i_text = gt_mailtext
i_subject = gv_header ).
"Inhalte dem Sendeauftrag zuordenen
call method gr_mail->set_document( gr_document ).
"Mail direkt senden ohne das man dies in der SOST zum senden freigeben muss.
"Sofort senden aktivieren, andernfalls versendet "SCOT" beim nächsten Joblauf
call method gr_mail->set_send_immediately
exporting
i_send_immediately = 'X'.
"Email senden
call method gr_mail->send(
exporting
i_with_error_screen = 'X'
receiving
result = gv_sent_to_all ).
if gv_sent_to_all = 'X'.
write 'Email sent!'.
endif.
"Commit damit das Email gesendet wird.
commit work.
"Ausnahmen Behandlung
catch cx_bcs into gr_bcs_exception.
write:
'Error!',
'Error type:',
gr_bcs_exception->error_type.
endtry.
else.
write : / 'Program with that name doesnt exist'.
endif.
Dieses Programm versendet das Coding eines Programmes an eine E-Mail Adresse.
REPORT z_send_report.
DATA: gt_itab TYPE TABLE OF string.
DATA: gf_itab TYPE string.
DATA:
gv_header TYPE so_obj_des. "VALUE 'Betreff mit CL_BCS erzeugen'.
" gv_raw TYPE char03 VALUE 'RAW'.
DATA:
gv_mlrec TYPE so_obj_nam,
gv_sent_to_all TYPE os_boolean,
gv_email TYPE adr6-smtp_addr,
gv_subject TYPE so_obj_des,
gv_text TYPE bcsy_text,
gt_mailtext TYPE soli_tab,
gs_mailtext TYPE soli,
gr_mail TYPE REF TO cl_bcs,
gr_bcs_exception TYPE REF TO cx_bcs,
gr_recipient TYPE REF TO if_recipient_bcs,
gr_sender TYPE REF TO cl_sapuser_bcs,
gv_body TYPE string,
gr_document TYPE REF TO cl_document_bcs.
PARAMETER: p_report TYPE c LENGTH 40.
READ REPORT p_report INTO gt_itab.
TRY.
"Create send request
gr_mail = cl_bcs=>create_persistent( ).
"Email Von...(Absender)
gr_sender = cl_sapuser_bcs=>create( sy-uname ).
"Add sender to send request
CALL METHOD gr_mail->set_sender
EXPORTING
i_sender = gr_sender.
"Email An... (Empfänger)
gv_email = 'michel.regotz@t-systems.com'.
gr_recipient = cl_cam_address_bcs=>create_internet_address( gv_email ).
"Add recipient to send request
CALL METHOD gr_mail->add_recipient
EXPORTING
i_recipient = gr_recipient
i_express = 'X'.
"Email An... (Empfänger)
gv_email = 'michel.regotz@t-systems-dmc.com'.
gr_recipient = cl_cam_address_bcs=>create_internet_address( gv_email ).
"Add recipient to send request
CALL METHOD gr_mail->add_recipient
EXPORTING
i_recipient = gr_recipient
i_express = 'X'.
"Email Betreff
gv_header = p_report.
"Nachrichten-Text
LOOP AT gt_itab INTO gf_itab.
CONCATENATE gf_itab ' <br>'
"CONCATENATE '<b> ' gf_itab ' <br>'
INTO gs_mailtext SEPARATED BY space.
APPEND gs_mailtext to gt_mailtext.
ENDLOOP.
* "HTML-Formatierter Mailinhalt
* gt_mailtext = cl_document_bcs=>string_to_soli( gv_body ).
"Email BODY (Text)
gr_document = cl_document_bcs=>create_document( i_type = 'HTM'
i_text = gt_mailtext
i_subject = gv_header ).
"Inhalte dem Sendeauftrag zuordenen
CALL METHOD gr_mail->set_document( gr_document ).
"Mail direkt senden ohne das man dies in der SOST zum senden freigeben muss.
"Sofort senden aktivieren, andernfalls versendet "SCOT" beim nächsten Joblauf
CALL METHOD gr_mail->set_send_immediately
EXPORTING
i_send_immediately = 'X'.
"Email senden
CALL METHOD gr_mail->send(
EXPORTING
i_with_error_screen = 'X'
RECEIVING
result = gv_sent_to_all ).
IF gv_sent_to_all = 'X'.
WRITE 'Email sent!'.
ENDIF.
"Commit damit das Email gesendet wird.
COMMIT WORK.
"Ausnahmen Behandlung
CATCH cx_bcs INTO gr_bcs_exception.
WRITE:
'Error!',
'Error type:',
gr_bcs_exception->error_type.
ENDTRY.