
Bidirektionaler Sync zwischen SAP und Fremdsystem ohne Endlosschleife
Zwei einzeln fehlerfreie Integrationen ergeben zusammen eine Endlosschleife. Wie sie entsteht, wie eigene Schreibvorgänge erkannt werden, welches Feld die Datensätze verbindet und warum Anlege- und Update-Mapping auseinanderlaufen.
Zwei Integrationen, die einzeln fehlerfrei laufen, erzeugen zusammen eine Endlosschleife: Jede Seite meldet eine Änderung, und jede Änderung ist die Reaktion auf die vorige. Dieser Beitrag beschreibt, wie die Schleife entsteht, mit welchen zwei Mechanismen sie unterbrochen wird, welches Feld die Datensätze beider Systeme verbindet und warum Anlege- und Update-Mapping auseinanderlaufen können.
Wie die Schleife entsteht
Ein Datensatz ändert sich im Fremdsystem. Die Integration schreibt die Änderung nach SAP. Die Gegenrichtung erhält das Änderungsevent aus SAP oder findet die Änderung bei der nächsten Abfrage und schreibt sie zurück ins Fremdsystem. Dieser Schreibvorgang löst dort erneut ein Änderungsevent aus, und der Ablauf beginnt von vorn.
Keine der vier Stationen arbeitet fehlerhaft. Ein schreibender Aufruf löst in den meisten Systemen ein Änderungsevent aus, und das ist bei einer Integration in eine Richtung das gewünschte Verhalten. Sobald beide Seiten schreiben, wird daraus ein Kreislauf, der ohne Gegenmaßnahme nicht endet.
Eigene Schreibvorgänge erkennen
Ein Zeitfenster, das alles kurz nach dem eigenen Schreibvorgang ignoriert, funktioniert bei geringer Last und versagt, sobald ein Lauf länger dauert. Verlässlicher sind zwei Mechanismen, die auf Inhalten beruhen und keinen gespeicherten Zustand benötigen.
Auf der SAP-Seite über den letzten Änderer. Viele SAP-Objekte führen mit, welcher Benutzer sie zuletzt geändert hat; der Geschäftspartner stellt dafür in der OData-API das Feld LastChangedByUser bereit (API_BUSINESS_PARTNER im SAP Business Accelerator Hub (öffnet in neuem Tab)). Schreibt die Integration mit einem eigenen technischen Benutzer, schließt die Rückrichtung genau diesen Benutzer aus und sieht ihre eigenen Schreibvorgänge nicht mehr. Voraussetzung ist, dass dieser Benutzer für nichts anderes verwendet wird.
Auf der Gegenseite über den Inhaltsvergleich. Fremdsysteme führen ein solches Feld häufig nicht. Dann liest die Integration den Datensatz vor dem Schreiben, vergleicht die zu schreibenden Felder mit dem Bestand und schreibt nur bei einer Abweichung. Eine zurücklaufende Änderung trägt exakt die Werte, die gerade geschrieben wurden, findet keinen Unterschied und endet dort. Der Vergleich kostet einen zusätzlichen Leseaufruf pro Datensatz.
Das Feld, das die Datensätze verbindet
Damit die Rückrichtung weiß, welcher Datensatz im Fremdsystem zu welchem Objekt in SAP gehört, benötigt sie ein Feld im SAP-Objekt, das die Kennung der Gegenseite trägt. Beim Geschäftspartner ist das BusinessPartnerIDByExtSystem (API_BUSINESS_PARTNER (öffnet in neuem Tab)); andere Objekte haben eigene Felder, und wo keines vorhanden ist, wird ein kundeneigenes Feld angelegt.
Das Feld hat zwei Aufgaben: Es verknüpft die Datensätze, und es dient als Filter, denn nur Objekte mit gefülltem Feld stammen aus dem Fremdsystem und gehören in die Rückrichtung. Bei einer Integration in eine Richtung wirkt es überflüssig und wird im Mapping häufig nicht befüllt. Wir empfehlen, es von der ersten Richtung an zu füllen; ist es bei Bestandsdaten leer, müssen diese nachgepflegt werden, bevor die Rückrichtung aktiviert wird.
Anlege- und Update-Mapping laufen auseinander
In vielen Integrationen decken Anlegen und Update unterschiedliche Felder ab. Das Anlege-Mapping entsteht zuerst und enthält alles, was ein neuer Datensatz benötigt; das Update-Mapping kommt später und beschränkt sich auf die Felder, die zum damaligen Anlass benötigt wurden.
Bei einer Integration in eine Richtung bleibt das ohne Folgen. Bei bidirektionalem Abgleich läuft jedes Feld, das in einer Richtung zurückgeschrieben, in der anderen aber nicht mitgeschrieben wird, mit jedem Durchlauf weiter auseinander, und weil beide Mappings jeweils fehlerfrei arbeiten, meldet kein Monitoring einen Fehler.
Wir empfehlen eine Liste der Felder, die synchron gehalten werden; beide Mappings werden in beiden Richtungen gegen diese Liste geprüft. Ein Feld, das nicht auf der Liste steht, wird in keiner Richtung übertragen.
Drei Fragen vor der zweiten Richtung
Bidirektionaler Abgleich verwendet dieselbe Technik wie eine Richtung, ergänzt um drei Antworten:
- Wie erkennt jede Seite ihre eigenen Schreibvorgänge? Technischer Benutzer und
LastChangedByUserauf der SAP-Seite, Inhaltsvergleich auf der Gegenseite. - Über welches Feld sind die Datensätze verknüpft?
BusinessPartnerIDByExtSystemoder ein entsprechendes Feld, von Anfang an gefüllt. - Welche Felder gelten als synchron? Eine Liste, gegen die beide Mappings geprüft werden.
Fehlt eine der drei Antworten, läuft der Abgleich trotzdem an; der Fehler zeigt sich später, mit Daten, die bereits auseinandergelaufen sind. Wir empfehlen, die zweite Richtung erst zu aktivieren, wenn alle drei Antworten dokumentiert sind.
Weiterlesen
Passende Beiträge
SAP Event Mesh auf der BTP: Voraussetzungen, Kosten und die häufigsten Fehler
Björn OstermannThema: SAP ConsultingDer Aufbau von Event Mesh ist an einem Tag erledigt. Aufwand entsteht bei Entitlements, Role Collections und der Eventverarbeitung. Was der Service macht, was Sie dafür benötigen und was er kostet, erfahren Sie in diesem Beitrag.
S/4HANA als Event Producer: Enterprise Event Enablement einrichten
Björn OstermannThema: SAP ConsultingS/4HANA publiziert Events über Enterprise Event Enablement ohne eigene Entwicklung. Voraussetzungen und Rollen, Channel über Service Key, Outbound Bindings, Test mit Demo-Event und Event Monitor, und warum ein Business Event nur den Schlüssel enthält.
Der Ingress-Flow: vom Event in die Event-Mesh-Queue
Björn OstermannThema: SAP ConsultingDer Ingress-Flow nimmt ein Event an und publiziert es unverändert in eine Queue. Welche Aufgabe er hat, welcher Sender-Adapter zum Quellsystem passt, wie der AMQP-Receiver-Adapter konfiguriert wird und wie Sie prüfen, ob ein Event in der Queue ankommt.
Termin buchen
Abgleich in beide Richtungen geplant?
Sprechen Sie uns an. Wir unterstützen bei Schleifenschutz, Verknüpfungsfeld und Feldliste, bevor die zweite Richtung aktiviert wird.
- 30 Minuten
- unverbindlich