SAP mit Low-Code integrieren
SAP mit Low-Code integrieren
Konzerntöchter übertragen regelmäßig Buchungsdateien aus ihren lokalen IT-Systemen an ein Konzern SAP-System zwecks Konsolidierung. Oft handelt es sich um Textdateien mit Payroll- oder Reisekosten-Salden aus lokalen HR-Lösungen wie ADP, SuccessFactors, Loga, Peoplesoft, Sage oder DATEV. In vielen Fällen artet das zum Stressfaktor für Fachbereich und IT aus. Wie löst man diese Anforderung binnen Minuten, ohne das Integrations-Team auf die Palme zu bringen?
Konkretes Beispiel: Zwei Tochterunternehmen eines Logistikdienstleisters stehen vor derselben Aufgabe. Eines muss seine Payroll-Salden samt Buchungsbelegen in einem ZIP-File übertragen. Das andere muss sowohl Payroll- als auch Reisekosten-Salden übertragen, jedoch zuvor eine Umbenennung der Buchungsdateien vornehmen, weil das Vorsystem diese nicht nach den Konzernvorgaben benennen kann – ein Import würde folglich scheitern. Grundsätzlich können derartige Aufgaben auf mehrere Arten gelöst werden. Linux Bash-Skripte oder Windows Powershell-Skripte sind ein althergebrachter Weg; selbst entwickelte Python oder JavaScript Programme ein anderer. Ein Enterprise Architekt könnte zudem an den Enterprise Service Bus denken; ein HR-Mitarbeiter vermutlich – mit Grauen – eher an eine manuelle Lösung mit WinSCP oder File-Sharing Tools wie FileZilla. All diesen Herangehensweisen mangelt es an Schnelligkeit, Einfachheit und vor allem leichter Wartbarkeit mit aussagekräftigem Monitoring im Fehlerfall; zahlreiche Vorarbeiten und IT-Systeme sind nötig, bevor an eine Übertragung zu denke ist. Je mehr Services das Licht der Welt erblicken, desto aufwandsärmer muss Integration und Automatisierung werden – auch bei überschaubaren Prozessen wie dem gegenständlichen.
Workato erledigt solche Aufgaben spielend und zwar auf Enterprise-Niveau. Konzipiert als Low-Code Integrations- und Automatisierungsplattform (iPaaS MQ) benötigt ein technisch interessierter Nutzer nur wenige Minuten dafür.
Zwar bietet Workato in seinen auf dem “Trigger-Action” Muster basierten “Recipes”, wie die Integrationsprozesse heißen, auch fix-fertige Konnektoren zu SAP an. Jedoch dürfen diese bei vielen Unternehmen aus Sicherheitsgründen nicht eingesetzt werden: Die Übertragung zwischen zwei Systemen muss daher entkoppelt (asynchron) erfolgen können.
Im vorliegenden Fall bedeutet dies eine Übertragung zwischen zwei SFTP Gateways, von denen die SAP-Buchungsdateien abgeholt bzw. an welche sie übertragen werden sollen.
SFTP zu SFTP Übertragung
Ein Recipe ist eine Abfolge von Automatisierungsschritten, die man selbst “zusammenklicken” kann. Am Anfang steht immer ein auslösendes Event, ein sogenannter Trigger. In unserem Fall ist das die Ablage einer neuen SAP-Buchungsdatei durch das lokale HR-System auf einem FTP-Server der Tochtergesellschaft.
Workato prüft unserem Wunsch zufolge alle 5 Minuten, ob ein neues File dort abgelegt wurde. Wenn ja, dann lädt Workato das File herunter (SFTP Download Action) und lädt es umgehend auf das File-Transfer-Gateway des Konzerns wieder hoch (SFTP Upload Action). Sollte dabei noch eine Umbenennung nach der vom Konzern vorgegebenen Namenskonvention erfolgen müssen, so wird das direkt beim Upload miterledigt; bei einer der hier betrachteten Tochtergesellschaften ist das der Fall, weshalb wir diesen Schritt explizit zeigen.
Natürlich könnte die Buchungsdatei zuvor noch geparset, verändert oder in Teilen in anderen Systemen weiterverarbeitet werden.
Das ist hier aber nicht notwendig. Für individuelle Bearbeitungsschritte wie die gewünschte Umbenennung des Files bietet Workato analog zu Microsoft Excel einen ausgereiften Formeleditor an, in dem Daten programmatisch manipuliert werden können. Als Formelsprache kommt das intuitive Ruby zum Einsatz. JavaScript ist zudem in Vorbereitung.
Fertig! Drei Schritte sind für die Übertragung an SAP nötig. Mehr nicht. Passt wunderbar auf einen Screenshot.
Schritt für Schritt zur einfachen und zuverlässigen Lösung
Ab ins Detail: In den “Connections” sind der Quell-SFTP-Server sowie der Ziel-SFTP-Server definiert. Benutzername, Passwort (bzw. Fingerprint zwecks Vermeidung von Man-in-the-Middle-Attachen) und IP-Adresse bzw. URL eingeben; das ist alles. Diese erhält man zumeist von der Betriebsführung beider Systeme (lokale IT, Konzern-SAP).
“Trigger-Event” bleibt “New/updated file in directory“, das “Trigger-poll interval” bleibt leer – standardmäßig kommen 5-Minuten-Intervalle zum Einsatz – und als “Directory” wird jenes ausgewählt, in dem die neuen SAP-Buchungsdateien vom Quellsystem abgelegt werden. Optional könnten auch noch Trigger-Conditions spezifiziert werden. Das sind Bedingungen wie z.B. bestimmte Zeichenketten im Namen der zu übertragenden Datei. Diese werden geprüft, bevor der Trigger überhaupt auslöst. Sie stellen eine mächtige Selektionsmöglichkeit dar, um nur relevante Fälle zur Ausführung zu bringen. Hier ist das alles aber nicht nötig.
Wird der Trigger nunmehr durch Ablage einer Datei auf dem Quell-SFTP-Server ausgelöst, so wird die Datei im zweiten Schritt heruntergeladen. Wichtig ist, dass der “File path” korrekt gesetzt wird.
Es muss der vollständige Pfad zur Datei inklusiver aller Ordner vom root-Directory aus gesehen angegeben werden.
In Workato können wir ganz einfach auf das Element “File path” aus dem Trigger (Schritt 1) zurückgreifen.
Diese Elemente nennt Workato “Datapills“. Datapills sind der “Zauber” in Workato, da sie alle möglichen Inhalte eines Schrittes in späteren Schritten nutzbar machen.
Wir können Sie mit Variablen bzw. Objekten vergleichen, die überall zugänglich und veränderbar sind; genutzt werden sie ganz einfach über Drag & Drop.
Last but not least wird die Buchungsdatei auf den Ziel-SFTP-Server hochgeladen, in unserem Fall das File-Transfer-Gateway des Konzerns. Als “File name” muss wiederum der gesamte Pfad angegeben werden inkl. aller übergeordneten Verzeichnisse, innerhalb derer die Buchungsdatei liegt (hier “SAP/”). Als “File contents” wird das Datapill aus Schritt 2 herangezogen. Entscheidend ist dabei, dass der Filename gleich so angelegt wird, wie es die Namenskonvention des Konzerns vorschreibt.
Mithilfe einfacher Ruby-Formeln, die in der Workato Dokumentation ausführlich beschrieben sind, ist das ein Kinderspiel. Fertig! So einfach ist es, mit Workato Dateien zwischen zwei SFTP-Servern sicher und hochperformant auszutauschen. Aber bekanntlich steckt in der Kürze die Würze. Das Beste an der Sache ist: Ich muss mich nicht um den Betrieb und Weiterentwicklung der Infrastruktur, Konnektoren und die Sicherheit kümmern. Das erledigt Workato als Software-as-a-Service ganz von alleine. Mein Fokus kann ganz auf der funktionalen Lösung bleiben – ohne mich mit Boilerplate Code und der Konfiguration vieler Subsysteme herumschlagen zu müssen.
In einem weiteren Beitrag werden wir die Überwachung von Recipes wie dem obigen und Selbstheilung im Fehlerfall mittels Watch-Dog-Prozessen vorstellen. Zwar bietet Workato eine mächtige Logging-Möglichkeit inkl. Dashboard und API zur nahtlosen Einbindung in Monitoring-Systeme wie Datadog oder Splunk, jedoch wollen wir ein paar Kniffe anwenden, um auch im Problemfall ruhig schlafen zu können. Es kann ja eine SFTP-Verbindung auch mal vorübergehend nicht verfügbar sein, obwohl der Monatsabschluss drängt …
Über Business Automatica GmbH:
Business Automatica senkt Prozesskosten durch Automatisierung manueller Tätigkeiten, hebt die Qualität beim Datenaustausch in komplexen Systemarchitekturen und verbindet On-premise Systeme mit modernen Cloud- und SaaS-Architekturen.