Generische Methode um eine E-Mail zu versenden

Es gibt immer wieder aus unterschiedlichsten Bereiche die Anforderungen E-Mail zu versenden. Oft wird diese Funktion von jedem Projekt/ Team neu implementiert. Das folgende Coding bietet eine generische Methode für den Versand von E-Mails aus dem SAP-System an. Es bietet sich an eine solche Methode zentral zur Verfügung zu stellen. Hier sollte dann die Absender E-Mail noch als Importing-Parameter übergeben werden können.

  method SEND_EMAIL.
************************************************************************
* Autor : exxsens GmbH
* Datum : 28.08.2015
************************************************************************
* Beschreibung:
* Generische Methode um eine E-Mail zu versenden
************************************************************************
* Änderungen:
* Nr.  Datum  Name | UserID | Ticket Nr.
*-----------------------------------------------------------------------
*
************************************************************************
    DATA:   lv_subject  TYPE so_obj_des,
            lv_receiver TYPE ad_smtpadr.

    CONSTANTS: lc_sender TYPE AD_SMTPADR VALUE 'noReply@exxsens.de'.

**********************************************************************
*  -> Typkompatibilität
**********************************************************************
    lv_subject =  im_v_subject.
    lv_receiver = im_v_receiver.


* Sendeauftrag vom System anfordern
    DATA(lo_mail) = cl_bcs=>create_persistent( ).


**********************************************************************
* HTML-Formatierter Mailinhalt
**********************************************************************
    DATA(lt_mailtext) = cl_document_bcs=>string_to_soli( im_v_body ).
    DATA(lo_document) = cl_document_bcs=>create_document( i_type    = 'HTM'
                                                    i_text    = lt_mailtext
                                                    i_subject = lv_subject  ).


**********************************************************************
* Inhalt dem Sendeauftrag zuordnen
**********************************************************************
    lo_mail->set_document( lo_document ).
    lo_mail->set_message_subject( ip_subject = im_v_subject ).

************************************************************************
* Absender
************************************************************************
    DATA(lo_sender) = cl_cam_address_bcs=>create_internet_address( lv_sender ).
    lo_mail->set_sender( lo_sender ).


************************************************************************
* Empfänger
************************************************************************
    DATA(lo_recipient) =  cl_cam_address_bcs=>create_internet_address( lv_receiver ).
    lo_mail->add_recipient( lo_recipient ).

************************************************************************
* E-Mail sofort versenden
************************************************************************
    lo_mail->set_send_immediately( abap_true ).


**********************************************************************
* und versenden
**********************************************************************
    lo_mail->send( ).
    COMMIT WORK AND WAIT.

  endmethod.