ABAP-Klasse CL_BCS – Mailversand aus ABAP

Verwendung der Klasse CL_BCS zum Versenden von eMails aus ABAP™ Anwendungen über das Business Communication Service.

Mit unseren Development Tipps behandeln wir spezielle, praxisbezogene Themen rund um das spannende und unerschöpfliche Thema Softwareentwicklung.
Gültig für: SAP NetWeaver ABAP Web AS ab 6.10

Inhalt

  • Allgemeines
  • Mail versenden aus SAP bzw. ABAP
  • Klasse CL_BCS
    • Methode CREATE_PERSISTENT: Anlegen eines Sendeauftrags
    • Methode SET_DOCUMENT: Anfügen von Text, Dateien und anderen Objekten
    • Methode ADD_ATTACHMENT: der Klasse CL_DOCUMENT_BCS
    • Methode ADD_RECIPIENT: Übergabe der Empfänger 4
    • Methode SEND: Senden der E-Mail
  • Anwendungsfälle

Allgemeines

Oft ist es wichtig, benötigte Informationen schnell zur Verfügung zu haben, um rasch und richtig reagieren zu können. Besonders, wenn die Informationsbeschaffung, etwa ein Report, lange dauert und nicht ständig überwacht werden kann, ist es sinnvoll nach Beendigung eine Aktion auszulösen. Das kann z. B. eine eMail mit dem Status eines Batchjobs oder gar schon der fertigen ABAP-Liste sein.

Mail versenden aus SAP bzw. ABAP

SAP hat mit dem Web AS 6.10 (6.20) die Business Communication Services (BCS) zum Versenden von Objekten aus ABAP Anwendungen zur Verfügung gestellt. Dieses objektorientierte Interface ist der Nachfolger des Business Communication Interface (BCI), das über Objekte des Business Object Repository (BOR) realisiert ist.

In diesem CADAXO Development Tipp werde ich einen kurzen Überblick zum E-Mail Versand mittels BCS geben.

Klasse CL_BCS

Über das BCS können unterschiedlichste Objekte mit Anhängen und Notizen an mehrere Empfänger und auf unterschiedliche Kommunikationsarten geschickt werden. Dementsprechend komplex ist das Interface – die Klasse CL_BCS – auch aufgebaut. In diesem Development Tipp beschränken wir uns auf das Versenden einer E-Mail mit Anhang.

Ein Sendevorgang gliedert sich üblicherweise in folgende Schritte.

  1. Erzeugen des Sendeauftrags
  2. Anfügen eines Objekts
  3. Auswahl der Empfänger
  4. Versenden der Nachricht

Für all diese Aufgaben stellt die Klasse CL_BCS Methoden zu Verfügung:

  • CREATE_PERSISTENT Anlegen eines Sendeauftrags
  • SET_DOCUMENT Anfügen von Text, Dateien und anderen Objekten
  • ADD_RECIPIENT Übergabe der Empfänger
  • SEND Senden der E-Mail

Methode CREATE_PERSISTENT – Anlegen eines Sendeauftrags

Diese Methode erzeugt einen Sendeauftrag und liefert diesen als Objekt der Klasse CL_BCS zurück. Alle weiteren Schritte werden auf dieses Objekt angewendet.

Methode SET_DOCUMENT – Anfügen von Text, Dateien und anderen Objekten

Mit dieser Methode wird der Content, also der eigentliche Text und Dateianhänge der E-Mail, übergeben. Die Methode erwartet ein Objekt mit dem Interface IF_DOCUMENT_BCS. Auch Attachments werden über dieses Objekt übergeben.

Über die statische Methode CREATE_DOCUMENT der Klasse CL_DOCUMENT_BCS kann man sich ein entsprechendes Objekt erzeugen lassen. Die Methode erwartet zumindest folgende Parameter:

  • I_TYPE: Typ der übergebenen Daten, z. B. HTM für eine HTML Datei, TXT für Textdateien, BIN für Binärdaten, etwas PDFs
  • I_TEXT/I_HEX: Eine Tabelle mit dem eigentliche Text bzw. den Binärdaten, je nach gewähltem Typ
  • I_SUBJECT: Betreff der E-Mail

Methode ADD_ATTACHMENT der Klasse CL_DOCUMENT_BCS

Diese Methode ist ähnlich der CREATE_DOCUMENT zu verwenden:

  • I_ATTACHMENT_TYPE: Typ der übergebenen Daten, z. B. HTM für eine HTML Datei, TXT für Textdateien, BIN für Binärdaten, etwas PDFs
  • I_ATTACHMENT_TEXT/I_ATTACHMENT_HEX: Eine Tabelle mit dem eigentliche Text bzw. den Binärdaten, je nach gewähltem Typ
  • I_ATTACHMENT_SUBJECT: Name der Attachmentdatei

Methode ADD_RECIPIENT – Übergabe der Empfänger

Je nach Kommunikationsart und Typ der versendeten Objekte können unterschiedliche Empfänger an die Nachricht übergeben werden. Es kann zum Beispiel keine Business Objekt Verknüpfung per E-Mail verschickt werden.

Die Methode erwartet zumindest ein Objekt, das das Interface IF_RECIPIENT_BCS implementiert:

  • I_RECIPIENT: Empfängeradresse (Interface IF_RECIPIENT_BCS)
  • I_EXPRESS: Expressnachricht; ist der Empfänger ein SAP Benutzer, so erhält er bei der nächsten Prozessierung des PBO-Events eine Pop-up mit dem Hinweis auf eine neue Nachricht
  • I_COPY: Der Empfänger erhält die Nachricht als Kopie
  • I_BLIND_COPY: Der Empfänger erhält die Nachricht als Blindkopie
  • I_NO_FORWARD: keine Weiterleitung; ist der Empfänger ein SAP Benutzer, so kann dieser die Nachricht nicht weiterleiten

Die beiden wichtigsten Empfängertypen sind wahrscheinlich E-Mailadressen und SAP Benutzer. Die entsprechenden Objekte werden durch folgende statische Methoden erzeugt:

  • CL_SAPUSER_BCS=>CREATE Für SAP Benutzer
  • CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS Für E-Mailadressen

Methode SEND – Senden der eMail

Die Nachricht wird an SAPconnect übergeben und über das entsprechende Interface verschickt. Der eigentliche Sendeprozess wird üblicherweise durch einen Batchjob mit dem Programm RSCONN01 eingeplant, der periodisch alle anstehenden Nachrichten verschickt. Um die Wartezeit bis zur nächsten Jobausführung zu umgehen, kann die Nachricht als „sofort zu verschicken“ gekennzeichnet werden: Methode SET_SEND_IMMEDIATELY( abap_true ) des Sendeauftrags.

Methode SHORT_MESSAGE

Mit dieser Methode öffnet sich der SAPOffice Dialog für neue Nachrichten, auf dem der Benutzer selbst Empfänger, Text, Attachments und deren Einstellungen pflegen kann. Über Parameter können Vorschlagswerte für die entsprechenden Felder und Objekte, z. B. Empfängeradressen beim Aufruf mitgegeben werden, die dann in der Nachricht angezeigt werden.

Anwendungsfälle

Wo ist nun eine Anwendung der Klasse CL_BCS denkbar und sinnvoll?

  • Anwender können informiert werden, oder bereits Ergebnisse zugeschickt bekommen, wenn eine Auswertung, die als Hintergrundjob eingeplant war, fertig ist.
  • In Fehlersituationen bei kritischen Anwendungen oder Schnittstellen können die zuständigen Personen sofort benachrichtigt werden und somit viel schneller reagieren.