Verwendung von SAP S/4HANA Snaps zum Extrahieren von Operational Data Provider (ODP)-Daten

Porträtfoto von Ingo Sauerzapf
9 min gelesen
Fassen Sie dies mit AI zusammen

SAP Operational Data Provisioning (ODP) bietet eine technische Infrastruktur, die Sie zur Unterstützung von zwei verschiedenen Anwendungsszenarien nutzen können. Das erste davon ist Operational Analytics für die Entscheidungsfindung in operativen Geschäftsprozessen. Das andere ist die Datenextraktion und -replikation. Es gibt es schon seit geraumer Zeit und es hat alle anderen Methoden bei der Extraktion vollständiger Daten sowie der Delta-Extraktion in BW/4HANA ersetzt. SAP hat das Framework auf ältere Versionen seiner ERP-Suite wie SAP ECC, CRM, SRM und SCM portiert, um es allgemein verfügbar zu machen. Dies hat viele Drittanbieter dazu veranlasst, die für ODP entwickelten Remote Function Calls zu nutzen, um das Framework und seine Funktionen zu nutzen.

Im Februar 2024 hat SAP die Note 3255746veröffentlicht, in der es heißt, dass SAP künftig die Verwendung von RFCs für die ODP-Datenextraktion nicht mehr zulassen wird. SAP stellt klar, dass die RFC-Module nur für SAP-interne Anwendungen vorgesehen sind und jederzeit ohne Vorankündigung von SAP geändert werden können. SAP behält sich außerdem das Recht vor, technische Maßnahmen zu ergreifen, um die unzulässige Verwendung von RFC-Modulen der ODP Data Replication API einzuschränken und zu überprüfen. Weiterhin wird darauf hingewiesen, dass alle Probleme, die durch die Verwendung der RFC-Module durch Anwendungen von Drittanbietern oder Kundenanwendungen entstehen oder verursacht werden, vollständig vom Kunden zu tragen sind und dass SAP weder für die Behebung solcher Probleme verantwortlich ist noch Support dafür leistet.

Als Lösung gibt SAP an, dass das Operational Data Provisioning (ODP)-Framework für die Datenextraktion und -replikation über eine offizielle und extern verfügbare OData-API bereitgestellt wird und dass alle Kunden- und Drittanbieteranwendungen unter Verwendung dieser API erstellt werden sollten, da sie eine stabile Schnittstelle bietet (Link zurDokumentation).

Dieser Blog soll Ihnen zeigen, wie Sie die Extraktion von Daten aus dem ODP-Framework über OData und unser SnapLogic S/4HANA Snap Pack durchführen können.

Was ist ODP und was kann ich damit machen?

Ich habe bereits erwähnt, dass SAP das ODP zur Standard-Extraktionsmethode für BW/4 HANA gemacht hat. Das Operational Data Provisioning (ODP)-Framework für die Datenverteilung bietet eine konsolidierte Technologie für die Bereitstellung und Nutzung von Daten. ODP unterstützt die Datenextraktion und -replikation für mehrere Ziele und die Erfassung von Änderungen an der Quelle. Das bedeutet, dass Sie über das Framework eine Vielzahl von Quellen extrahieren können. Nachfolgend finden Sie eine von SAP häufig verwendete Zeichnung, um die Funktionen darzustellen und die verschiedenen Optionen zu visualisieren. Alle diese ODP-Szenarien (oft als Kontexte bezeichnet) können von SnapLogic genutzt werden.

Screenshot 2024-06-11 um 14:53:09 Uhr.png

ODP – SAP-Extraktoren (ODP_SAP):
Dieser Kontext stellt BW-Datenquellen als Operational Data Providers bereit. Eine BW-Datenquelle definiert eine Extraktionsstruktur, die durch Extraktionscode gefüllt wird, der die Logik zum Abrufen relevanter Daten aus dem ABAP-System implementiert. Das ODP-Framework unterstützt ohne zusätzliche Konfiguration Datenquellen, die vom Anwendungsbesitzer freigegeben wurden. Die meisten dieser Datenquellen sind Teil der SAP Business Suite.

ODP – ABAP CDS Views (ODP_CDS):
ABAP Core Data Services (CDS) erweitern ABAP SQL, um die Definition und Nutzung semantisch reichhaltiger Datenmodelle nativ zu ermöglichen. Diese Erweiterung steigert die Produktivität, Nutzbarkeit, Leistung und Interoperabilität. Das Schlüsselkonzept zum Ausdrücken der Semantik von ABAP-CDS-Modellen sind Annotationen, die an Elemente des Modells angehängt werden. Durch die Anwendung von Annotationen mit analytischer Semantik können ABAP-CDS-Ansichten so annotiert werden, dass die resultierenden Metadaten die Generierung von temporären Operational Data Providern ermöglichen.

ODP – BW (ODP_BW):
SAP BW/4HANA stellt seine Daten zu Extraktionszwecken als Operational Data Providers zur Verfügung. Alle relevanten SAP BW/4HANA InfoProvider werden als Quellen unterstützt.

ODP – SLT-Warteschlange (ODP_SLT):
Mithilfe der ODP-Infrastruktur und der triggerbasierten Replikation des SAP Landscape Transformation Replication Server (SLT) können Daten in Echtzeit aus mehreren Quellsystemen in ein oder mehrere Zielsysteme übertragen werden. Der SLT Replication Server dient als Provider für die ODP-Infrastruktur und stellt Tabellen aus SAP-Quellen als Delta-Warteschlangen zur Verfügung.

Wie stelle ich eine ODP-Datenquelle über OData bereit?

Um Deltas zu erfassen, werden die Quelldaten über einen Aktualisierungsprozess in eine Operational Delta Queue geschrieben. Der Prozess unterstützt die paketbasierte vollständige Extraktion für sehr große Volumen unter Verwendung der Operational Delta Queue. Nach der anfänglichen vollständigen Extraktion kann er auch Deltas für Änderungen unter Verwendung der Operational Delta Queue erfassen und extrahieren. Allerdings muss die ODP-Datenquelle Deltas für diese Funktionalität unterstützen. SnapLogic kann dann Daten aus dieser Delta-Queue abrufen, was auch bei der Überwachung des Datenextraktions- und Replikationsprozesses hilfreich ist. Die Bereitstellung der Daten erfolgt über die SAP Gateway Foundation und durch die Generierung eines SAP OData-Dienstes mit dem SAP Gateway Service Builder für die ODP-Datenquelle. Auf diesen Dienst (URL) kann von einer externen OData-Client-Anwendung über OData/HTTP zugegriffen werden.

Generieren des OData-Dienstes im Gateway Service Builder

Der Prozess ist vollständig codefrei, alles, was in SAP erforderlich ist, wird generiert, einschließlich des OData-Dienstes im Gateway Service Builder. Navigieren Sie einfach zur Transaktion SEGW in SAP. Beginnen Sie mit der Erstellung eines neuen Projekts, indem Sie auf das erste Symbol in der Menüleiste klicken, das im folgenden Screenshot rot markiert ist. Geben Sie im Popup-Fenster einen Namen und eine Beschreibung für Ihr Projekt ein, wählen Sie „Service mit SAP-Anmerkungen“und wählen Sie das Paket aus, in dem der generierte Code gespeichert werden soll. Wenn Sie den generierten Code nicht in andere SAP-Systeme transportieren müssen, können Sie $TMP als Paket auswählen.

Screenshot 2024-06-13 um 15:45:43 Uhr.png

Sobald das Projekt erstellt ist, wählen Sie „Datenmodell“ und dann im Kontextmenü „Neudefinieren“ -> „ODP-Extraktion“.

Screenshot 2024-06-13 um 15:47:04 Uhr.png

Ein Assistent führt Sie nun durch die Schritte, in denen Sie aus allen verfügbaren ODP-Datenquellen auswählen können. Gehen Sie den Assistenten durch, indem Sie auf die Schaltfläche „Weiter“ klicken, bis der Assistent das Modell generiert hat.

Screenshot 2024-06-13 um 15:47:58 Uhr.png

Wenn das Modell generiert ist, fahren Sie mit der Generierung der OData-Dienste fort, indem Sie auf die Schaltfläche „Laufzeitobjekte generieren“ klicken.

Screenshot 2024-06-13 um 15:50:51 Uhr.png

Wählen Sie für alle Einstellungen die Standardeinstellungen und notieren Sie sich den Namen des technischen Dienstes. Dies ist der Name, den Ihr OData-Dienst nach seiner Generierung haben wird.

Screenshot 2024-06-13 um 15:51:08 Uhr.png

OData-Dienst aktivieren

Um den neu erstellten Service zu aktivieren, rufen Sie die Transaktion /IWFND/MAINT_SERVICE in SAP auf. Wählen Sie die Schaltfläche „Service hinzufügen ”.

Screenshot 2024-06-13 um 15:52:31 Uhr.png

Geben Sie den Namen des technischen Dienstes ein und drücken Sie die Eingabetaste. Wählen Sie dann den Namen des technischen Dienstes aus der Liste unten aus und klicken Sie auf die Schaltfläche „Ausgewählte Dienste hinzufügen “.

Screenshot 2024-06-13 um 15:52:49 Uhr.png

Nach der Aktivierung finden Sie den Dienst im Servicekatalog, indem Sie nach dem Namen des technischen Dienstes filtern.

Screenshot 2024-06-13 um 15:53:45 Uhr.png

Wie nutze ich den OData-Dienst in SnapLogic?

Auf der SnapLogic-Seite verwenden Sie den SAP S/4HANA Read Snap, um Daten aus dem exponierten OData-Dienst zu lesen. Der OData-Dienst verwendet ein Konto, das auf den OData-Katalog Version 2 verweist, der alle Dienste enthält, wie in der folgenden Abbildung dargestellt.

Screenshot 2024-08-20 um 13:24:49 Uhr.png

Suchen Sie auf dem Bildschirm „Einstellungen“ des SAP S/4HANA Read Snap nach dem OData-Dienst im API-Objekt oder wählen Sie den Dienst aus der Dropdown-Liste aus. Durch die Erstellung des Dienstes aus dem Extraktor stehen Ihnen zwei Entitäten zur Verfügung:

  • One with a name starting with EntityOf<objectName>, FactsOf<objectName> or AttrOf<objectName> depending on the type of extractor or view that represents the data source model.
  • One one that starts with DeltaLinksOf<objectName> that exposes information about current and past delta tokens.

Wenn Sie eine Anfrage an den ersten Dienst senden, erhalten Sie standardmäßig einen vollständigen Datensatz, genau wie bei jedem anderen OData-Dienst. Wenn Sie jedoch den speziellen Anfrage-Header „Prefer: odata.track-changes“ hinzufügen, wie im Screenshot unten gezeigt, abonniert der OData-Dienst die Operational Delta Queue (ODQ) und gibt __delta-Links zurück, mit denen Sie die gesammelten Delta-Daten anfordern können. Stellen Sie sicher, dass Sie den Standardeintrag im Feld „Output Entry Limit“ (Ausgabe-Eingabebegrenzung) entfernt haben, der das URL-Attribut „top=X“ in OData im Snap darstellt. Wenn ich den Standardeintrag während meiner Tests beibehalten hätte, hätte unser S/4HANA-System die Anfrage überhaupt nicht in der ODQ registriert. Stellen Sie abschließend sicher, dass Sie das Kontrollkästchen „Raw response“ (Rohantwort)für den Snap aktivieren, um den __delta-Link zur Ausgabe für nachgelagerte Snaps hinzuzufügen.

Screenshot 2024-09-18 um 13:56:18 Uhr.png

Abrufen von ODP-Daten in Paketen

Should you want the ODP data to be retrieved in packages, you can specify an additional value in the Prefer header called odata.maxpagesize=<N> where <N> is the number of packages that should be prepared for retrieval, for example, odata.maxpagesize=50. This starts a background job in SAP for paging and the data is cached in ODQ. Using the odata.maxpagesize value you can specify the quantity of packages to be retrieved from the delta queue. The end of the response contains a relative link in the attribute __next, which can be used to retrieve the next package. This link can be fed into the Has Next and Next URL fields to make the S/4HANA Read Snap page through the packages stored in ODQ by the background job.

Screenshot 2024-09-18 um 13:48:11 Uhr.png

Wie kann ich den Deltatoken in einer SnapLogic-Pipeline verwenden?

If subscribed successfully to ODQ the output of the S/4HANA Read snap will contain the __delta link. This link contains the query parameter !deltatoken. This URL can be used in subsequent calls to retrieve the delta update from the point in time when the token was issued to your subscription. You can either store the URL or only the token and use it in subsequent runs of the pipeline or alternatively use the DeltaLinksOf<objectName> described above to retrieve all tokens that have been issued for your subscription and then use the last token in the list to read the delta.

Screenshot 2024-09-18 um 16:55:45 Uhr.png

Verstehen der mit einem Delta-Update empfangenen Informationen

Mit jeder Zeile, die Sie von einem Delta erhalten, erhalten Sie auch zwei zusätzliche Felder namensODQ_ENTITIYCNTR undODQ_CHANGEMODE. Die beiden Felder müssen im Ziel berücksichtigt werden, um zu verstehen, ob es sich um geänderte oder neue Datensätze handelt.

Screenshot 2024-09-18 um 16:56:46 Uhr.png

Verfolgen und Beenden eines Abonnements.

Jeder für ODP generierte OData-Dienst enthält außerdem zwei zusätzliche Entitäten: AbonniertFaktenVon<objectName> to determine whether a delta subscription exists for the user and TerminateDeltasForFactsOf<objectName> to terminate delta extraction for the user. In our S/4HANA system the entities where not exposed through the ODP catalog but could be called without issues. The attached pipeline makes use of the SubscribedToFacts service to check if we have subscribed in a previous run to ODQ.

Porträtfoto von Ingo Sauerzapf
Senior Professional Services Architect bei SnapLogic
Kategorie: Technik