Dieses Programm versendet das Coding eines Programmes inkl. Includes per Mail

*&---------------------------------------------------------------------*
*& Report  Z_MAIL_REPORT
*&
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& versendet Coding eines Reports
*&---------------------------------------------------------------------*

report  z_mail_report.

datagt_itab type table of string,
      gf_itab type string,
      gf_itab1(7type 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.

parameterp_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=>createsy-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_addressgv_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_addressgv_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_documenti_type 'HTM'
         i_text gt_mailtext
         i_subject 
gv_header ).

        "Inhalte dem Sendeauftrag zuordenen
        call method gr_mail->set_documentgr_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.

DATAgt_itab TYPE TABLE OF string.
DATAgf_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.


PARAMETERp_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=>createsy-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_addressgv_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_addressgv_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_documenti_type 'HTM'
     i_text 
gt_mailtext
     i_subject 
gv_header ).

    
"Inhalte dem Sendeauftrag zuordenen
    
CALL METHOD gr_mail->set_documentgr_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.

        search this website

Regotz Michel