Dienstag, 29. März 2016

ABAP - Emaileingang verwenden für eigene Anwendungen

Eine etwas in Vergessenheit geratene Funktion im SAP ist der Emaileingang. Sie erinnern sich, in Zeiten vor Einführung des GKV-Kommunikationsserver wurde dieser im HR für DEÜV-Eingangsmeldungen verwendet. Es steht Ihnen somit ein vollwertiger SMTP-Eingangsserver zur Verfügung, der zudem noch eine regelbasierte Eingangsverarbeitung ausführen kann.
Wir benutzen ihn im Rahmen unserer Beratungslösung "Urlaubsantrag für CATS" um per Email Urlaubsanträge zu genehmigen - es sind aber natürlich noch viele andere Anwendungsfälle denkbar.

Was ist zu tun um den Emaileingang zu aktivieren? 
Sollte der Emaileingang noch nicht eingerichtet sein dann muss man zunächst eine Route auf dem Emailserver einrichten damit die Emails überhaupt an das SAP-System gelangen - also beispielsweise alle Emails mit der Adresse @sapserver.firma.de sollen an das System sapserver Port 25 geleitet werden.
Der SMTP-Host muss dann auf dem SAP-System in der Transaktion SICF aktiviert werden. Dazu wird ein Systembenutzer mit der Berechtigung S.A_SCON benötigt. CL_SMTP_EXT_SAPCONNECT muss als Handler eingetragen werden.
Sollte das System bereits in der Lage sein Emails zu verschicken ist man schon fast am Ziel da die grundlegenden Einstellungen in Transaktion SCOT bereits vorhanden sind.
Einen guten Überblick über die notwendigen Einstellungen liefert Hinweis 455140 - Konfiguration Email,Fax,Paging/SMS über SMTP, sollte es nicht klappen hilft 607108 - Problemanalyse beim Versand oder Empfang von Emails bei der Fehlersuche.

Wie kann jetzt die Email im SAP verarbeitet werden?
In der Transaktion SCOT kann für alle oder einzelne Benutzer sowie Emailtypen eine Eingangsverarbeitung eingestellt werden.

Hierzu wird eine Klasse benötigt, die zum Beispiel das Interface IF_INBOUND_EXIT_BCS implementiert. Wie die Klasse im Einzelnen ausgeprägt sein sollte wird sehr gut in dem Beitrag http://scn.sap.com/people/thomas.jung/blog/2004/09/09/receiving-e-mail-and-processing-it-with-abap--version-610-and-higher im SDN beschrieben - auch schon aus dem Jahre 2004! Im Falle unseres Urlaubsantrags wird so der Antrag auf genehmigt gesetzt - es ist wie gesagt aber auch jede andere Funktionalität denkbar.
Entscheidend ist dass man mit io_sreq auf alle Teile der Nachricht zugreifen kann wie z.B. auf den Sender oder den Betreff (als String):
...
sender = io_sreq->get_sender( ).
subject = io_sreq->getu_message_subject_long( ).
...
Eine andere mögliche Anwendung wäre das Prozessieren von interaktiven Adobe-Forms wie hier beschrieben http://www.berater-wiki.de/index.php?title=Automatische_Maileingangsverarbeitung_in_SAP.
Wie man sieht ist es also relativ einfach, auch per Email mit SAP zu interagieren.

Keine Kommentare:

Kommentar veröffentlichen