SAP OData in der Praxis: Der komplette Guide von SEGW bis zur Service-Aktivierung

SAP OData in der Praxis: Der komplette Guide von SEGW bis zur Service-Aktivierung

OData ist die Sprache, mit der Dein SAP-System heute mit der Welt spricht. Wir zeigen Dir Schritt für Schritt, wie Du aus einer Idee einen produktiven, delta-fähigen OData-Service in S/4HANA oder ECC machst.

Inhaltsverzeichnis

Dieser Beitrag begleitet Dich durch den kompletten Lebensweg eines SAP-OData-Projekts: von der Entwicklung im Service Builder (SEGW) über die Registrierung in /IWFND/MAINT_SERVICE bis zum Testen mit dem Gateway Client. Du lernst, wie Du das ODP-Framework nutzt, um robuste, delta-fähige Verbindungen für Frontend-Apps, Cloud-Anwendungen und Drittsysteme zu bauen. Zusätzlich zeigen wir Dir die häufigsten Stolperfallen bei Registrierung, Berechtigung und Delta-Handling und wie Du sie vermeidest. Am Ende weißt Du genau, wie eine performante und zukunftssichere OData-Schnittstelle in SAP entsteht.

Warum eigentlich OData?

Reine GUI-Klicks haben in modernen SAP-Landschaften ausgedient. Ob Fiori-App, Anbindung an die SAP Business Technology Platform oder Integration mit Salesforce und Microsoft Power Automate: Du brauchst eine standardisierte Sprache, mit der Systeme miteinander reden. Diese Sprache heißt OData – Open Data Protocol.

OData macht SAP-Daten wie Geschäftspartner, Verkaufsaufträge oder Materialien als REST-Schnittstelle zugänglich – so können auch externe Systeme sicher und standardisiert darauf zugreifen. Statt komplexer RFCs und IDocs kommen Standard-HTTP-Methoden wie GET, POST, PUT und DELETE zum Einsatz.

Dieser Guide richtet sich an ABAP-Entwickler:innen und funktionale Consultants, die verstehen wollen, was hinter Fiori steckt. Wir behandeln die Entwicklung des Datenmodells in SEGW, die Registrierung eines Service in /IWFND/MAINT_SERVICE sowie die Fehlersuche mit /IWFND/ERROR_LOG und dem Gateway Client – sowohl für SAP S/4HANA (Embedded-Architektur) als auch für SAP ECC (Hub-Architektur).

SAP Gateway Architektur im Überblick
SAP Gateway Architektur im Überblick

Architektur zuerst: Das ODP-Verbot und was es bedeutet

Bevor Du einen Service konfigurierst, musst Du wissen, wie Du an Deine Daten kommst. Wer OData für externe Data Lakes (Snowflake, Azure, AWS) oder BI-Tools baut, kommt an SAP-Hinweis 3255746 nicht vorbei.

  • Bisher: Drittanbieter-Tools griffen per RFC auf das ODP-Framework (Operational Data Provisioning) zu und gaben sich dabei als SAP-BW-System aus.
  • Neue Regel: SAP hat die ODP-RFC-Schnittstelle auf eigene Anwendungen wie Datasphere oder BW/4HANA beschränkt.
  • Konsequenz: Für den Datenzugriff durch Nicht-SAP-Systeme gilt jetzt: Du musst OData verwenden.

Damit ist ODP-basiertes OData die einzige offiziell zulässige Methode für externe Extraktion, die Delta-Mechanismen (CDC) unterstützt.

Feature ODP via RFC ODP via ODATA Standard ODATA
Konsument Nur SAP-Apps (Datasphere, BW) Drittanbieter & Fiori Leichte Web-Apps
Protokoll TCP/IP (RFC) HTTP/HTTPS (REST) HTTP/HTTPS (REST)
Delta-Support Ja (nativ) Ja (via Delta-Token) Nein (außer explizit codiert)
Performance Sehr hoch Mittel (HTTP-Overhead) Mittel
Use Case Massenreplikation ETL für Nicht-SAP-Tools Live-Transaktionsdaten

Relevante SAP-Hinweise:

  • 3255746: ODP-API – Nutzung durch Nicht-SAP-Anwendungen (die Restriktion)
  • 2485457: Empfehlungen für die Bereitstellung von ODP-Daten via OData
  • 2356264: ODP-Extraktion via OData – Möglichkeiten und Grenzen

Lizenzkosten vs. Systemleistung: Die wahren Kosten

Beim Vergleich von OData mit Tools wie Datasphere lohnt sich der Blick auf zwei Kostenarten.

Finanziell: OData ist in den meisten On-Premise- und Private-Cloud-Verträgen Teil der Standard-NetWeaver-/S/4HANA-Lizenz – ohne zusätzliche Kosten pro Aufruf. Datasphere dagegen benötigt eine eigene Premium-Lizenz.

Technisch – die versteckten Kosten: OData arbeitet auf der Anwendungsschicht. Für jeden Datensatz muss der SAP-Applikationsserver interne Strukturen aufbauen und diese anschließend in ein Austauschformat serialisieren. Das kostet CPU und Arbeitsspeicher. Läuft das Gateway direkt auf der S/4HANA-Instanz (Embedded), konkurriert eine große OData-Extraktion mit den Work-Prozessen Deiner Finance- und Sales-User:innen. Massenextraktion per OData während der Geschäftszeiten kann das Produktivsystem spürbar ausbremsen.

Das Fazit: Nutze ODP-basiertes OData für gezielte Integrationen, leichte Apps und moderate Datenmengen – lizenzfrei und effizient. Für die tägliche Bewegung von Terabytes solltest Du auf Datasphere oder vergleichbare Replikationswerkzeuge setzen, um Deine Produktivumgebung zu schonen.

Zwei Deployment-Szenarien

Ein Missverständnis der Architektur ist die häufigste Ursache für spätere "Service Not Found"-Fehler.

  • Embedded Deployment (Standard bei S/4HANA): Gateway-Komponenten und Anwendungslogik laufen auf demselben System. Entwicklung (SEGW) und Registrierung (MAINT_SERVICE) finden auf derselben Instanz statt. Das ist die einfachste Variante.
  • Hub Deployment (üblich bei ECC): Ein dedizierter Front-End-Server (Gateway) und ein separater Back-End-Server (ECC) arbeiten zusammen. Du entwickelst auf dem Backend, registrierst den Service aber auf dem Front-End-Hub.

Das ODP-Framework verstehen

Das ODP-Framework wird meist mit BW assoziiert, ist aber auch für OData-Entwickler:innen ein echter Gewinn: Es macht Standard-Extraktoren – dieselben, die für DataServices oder BW genutzt werden – direkt als Service verfügbar, ganz ohne komplexe eigene Programmierung.

  • In S/4HANA: ODP ist standardmäßig aktiv und eng mit CDS-Views verzahnt.
  • In ECC: Prüfe, ob Deine Plugin-Stände (PI_BASIS bzw. SAP_GWFND) aktuell sind.
  • Transaktion RODPS_REPL_TEST: Hier testest Du, ob eine ODP-Quelle extraktionsbereit ist. Klappt es hier, funktioniert es auch über OData.

Technische Voraussetzungen (frag Dein BASIS-Team nach den passenden sap_iw_fnd*-Rollen):

  • SEGW – Service Builder (Entwicklung)
  • /IWFND/MAINT_SERVICE – Service-Registrierung (Administration)
  • /IWFND/GW_CLIENT – Gateway Client (Testing)

Phase 1: Entwicklung – Einen ODP-konformen Service bauen

In dieser Phase entsteht ein OData-Service, der einen bestehenden SAP-Extraktor oder eine ODP-fähige CDS-View umhüllt. So werden alle Datenabfragen im Delta Queue Monitor (ODQMON) protokolliert. Das ist essenziell für Fehlersuche und Delta-Management. Transaktion: SEGW.

Schritt 1 – Projekt anlegen:

  • SEGW öffnen und Create Project wählen.
  • Technischen Namen vergeben (z. B. Z_ODATA_SALES_EXT) und beschreiben.
  • Ein Entwicklungspaket zuweisen ($TMP für Tests) und mit Continue bestätigen.

Schritt 2 – Datenmodell per ODP-Extraktion redefinieren:

Statt Entitäten manuell zu erstellen, "leihst" Du Dir Struktur und Logik direkt aus dem ODP-Framework.

  • Rechtsklick auf Data ModelRedefineODP Extraction.
  • ODP-Kontext wählen:
    • SAPI für klassische Extraktoren (z. B. 2LIS_11_VAHDR)
    • ABAP_CDS für CDS-Views mit aktivierter Datenextraktion
    • BW für BW-InfoProvider
  • Passenden ODP-Namen per F4-Suche auswählen und mit Next bestätigen.

Schritt 3 – Artefakte auswählen:

Das System liest die Struktur des Extraktors aus. Wähle den relevanten Knoten, vergib bei Bedarf einen sprechenden Namen für das Entity Set und bestätige mit Next und Finish. SEGW generiert Entity Types, Entity Sets und das Mapping automatisch. Eigener Programmieraufwand für die Datenbefüllung ist nicht nötig, das übernimmt die generische Data Provider Class (DPC).

Schritt 4 – Runtime-Objekte generieren:

Über Generate Runtime Objects schlägt das System Klassennamen für Model Provider Class (MPC) und DPC vor. Die Standardnamenskonvention (_MPC, DPC, MPC_EXT, _DPC_EXT) solltest Du beibehalten. Nach Zuweisung des Pakets und Save siehst Du im Log die Erfolgsmeldung.

Schritt 5 – Implementierung prüfen (optional):

Ein Blick in die generierte DPC-Klasse zeigt Methoden, die von /IWBEP/CL_MGW_PUSH_ABS_DATA erben – ein Zeichen dafür, dass die Klasse weiß, wie sie mit ODQMON kommuniziert. Eigene SELECT-Statements in GET_ENTITYSET sind dadurch überflüssig.

Dein Service ist jetzt technisch fertig gebaut, aber noch unsichtbar: Er reagiert noch auf keine HTTP-Aufrufe. Weiter geht's mit der Registrierung.

Phase 2: Registrierung und Aktivierung

Jetzt wird der Service über HTTP erreichbar gemacht. Transaktion: /IWFND/MAINT_SERVICE. Beim Embedded-Deployment läuft dieser Schritt auf dem S/4HANA-System, beim Hub-Deployment auf dem Gateway-System.

Service hinzufügen:

  • /IWFND/MAINT_SERVICE öffnen und Add Service klicken.
  • System-Alias wählen – das entscheidende Feld, das festlegt, wo der Backend-Code liegt.
    • Bei Embedded: LOCAL.
    • Bei Hub: der Alias des ECC-Systems im Hub.
  • Technischen Namen Deines SEGW-Projekts als External Service Name eingeben und mit Enter bzw. Get Services bestätigen.

Service registrieren:

  • Service in der Liste anklicken, im Popup das Package zuweisen ($TMP für Tests, sonst Entwicklungspaket).
  • ICF Node auf "Standard Mode" belassen – dies legt automatisch den Knoten im Internet Communication Framework (SICF) an.
  • System-Alias-Zuordnung prüfen und mit dem Häkchen bestätigen.
  • Erfolgsmeldung: Der Service wurde erstellt, Metadaten erfolgreich geladen.
Service-Registrierung in /IWFND/MAINT_SERVICE
Service-Registrierung in /IWFND/MAINT_SERVICE


Aktivierung prüfen ("die grüne Ampel"):

Zurück in der Übersicht den neu registrierten Service filtern (z. B. Z_ODATA*) und auswählen. Im linken unteren Bereich (ICF Nodes) muss die Ampel grün sein – falls nicht, per Rechtsklick Activate wählen. Im rechten unteren Bereich (System Aliases) sollte Dein Alias als "Default System" gesetzt sein.

Metadaten laden: Mit Load Metadata prüfst Du, ob das Gateway die Service-Definition korrekt lesen kann. Fehler wie "System Alias not found" oder RFC-Fehler deuten auf ein falsch konfiguriertes Alias oder eine unterbrochene RFC-Verbindung hin.

Dein Service ist jetzt live, hat eine URL und einen aktiven Listener. Jetzt folgt der Beweis, dass alles funktioniert.

Phase 3: Testen und validieren

Mit dem SAP Gateway Client (/IWFND/GW_CLIENT) simulierst Du einen externen Konsumenten – etwa ein Drittsystem oder eine SAPUI5-basierte App – und prüfst anschließend, ob die Extraktion korrekt im ODP-Framework protokolliert wurde.

Der "Hello World"-Test (Metadaten):

  • Request-URI muss auf $metadata enden, z. B. /sap/opu/odata/sap/Z_ODATA_SALES_EXT_SRV/$metadata.
  • Execute klicken – erwartet wird HTTP 200 OK mit einem XML-Dokument, das Entity Sets und Eigenschaften beschreibt.
  • Auch einen einfachen $filter-Parameter kannst Du hier direkt gegen das Entity Set testen, um die Ergebnismenge einzugrenzen.
  • Schlägt das fehl, zuerst prüfen, ob der ICF-Knoten in SICF aktiv ist.

Daten extrahieren (Full Load):

Da Du das ODP-Framework nutzt, gilt der erste Aufruf als Initialisierung.

  • Request-URI auf das Entity Set ändern, z. B. .../CustomerSet?$format=json.
  • Für eine realistische Emulation einen Header odp-subscriber-type mit Wert SAP_GW hinzufügen (bei einfachen Tests optional).
  • Execute klicken – erwartet wird HTTP 200 OK mit einer JSON-Liste der extrahierten Daten.

Extraktion in ODQMON prüfen:

Dies ist der Beweis, der eine echte ODP-Extraktion von einer einfachen Datenbankabfrage unterscheidet. Im Delta Queue Monitor prüfst Du Queue-Zeitstempel ("Heute"), den Subscriber (SAP_GW oder Deinen OData-Subscriber) sowie den Provider (Dein SEGW-Projekt bzw. den zugrunde liegenden Extraktor). Ein Eintrag mit Request-Typ "Subscription" oder "Snapshot" zur passenden Uhrzeit bestätigt: Deine Schnittstelle wird tatsächlich vom ODP-Framework getragen.

Delta Queue Monitor (ODQMON): Extraktion erfolgreich protokolliert
Delta Queue Monitor (ODQMON): Extraktion erfolgreich protokolliert


Deltas testen:

Unterstützt Dein Extraktor Deltas (z. B. 2LIS* oder CDC-fähige CDS-Views):

  • Im Antwortkörper den __next-Link bzw. Delta-Token suchen (z. B. !deltatoken='20231027120000...').
  • Neue Anfrage mit diesem Token stellen: .../CustomerSet?!deltatoken='...'.
  • Beim ersten Aufruf kommt meist eine leere Liste zurück. Änderst Du danach einen Datensatz im System (z. B. via XD02) und rufst erneut auf, erhältst Du ausschließlich den geänderten Datensatz.

Vorsicht, Falle: Subscriptions richtig handhaben

Eine der gefährlichsten Stolperfallen bei ODP-basiertem OData ist das versehentliche Zurücksetzen einer Subscription.

  • Das ODP-Framework identifiziert einen Subscriber über User-ID und Service-Namen. Ruft User A den Service auf, bekommt er Subscription 1, User B Subscription 2. Best Practices: Nutze für Drittsystem-Extraktionen immer einen dedizierten generischen Systemnutzer (z. B. ODATA_USER) statt einer persönlichen ID.
  • Rufst Du die Basis-URL ohne Delta-Token auf, interpretiert das System dies als neue Initialisierung – die vorherige Subscription wird beendet, ungelesene Delta-Datensätze gehen für diesen Konsumenten verloren. Die Regel: Sobald Du einen ersten Delta-Token hast, nutze ihn für alle Folgeaufrufe. Die Basis-URL nur aufrufen, wenn Du bewusst neu laden willst.

Steuerung über HTTP-Header – besonders relevant für ETL-Tools:

  • Prefer: odata.track-changes – teilt dem Server explizit mit, dass Du Deltas abonnieren willst, und sorgt dafür, dass ein Delta-Token bereitgestellt wird, auch wenn die Ergebnismenge leer ist.
  • Prefer: odata.maxpagesize=500 – steuert serverseitiges Paging. Bei einer Million Datensätzen verhindert dies Timeouts, da die Antwort in Blöcken von 500 kommt, inklusive Skiptoken für die nächste Seite.

Pro-Tipp für ETL-Loops: Initial Load mit odata.track-changes aufrufen → per Skiptoken paginieren, bis fertig → Delta-Token aus der letzten Seite sicher speichern → beim nächsten Lauf mit genau diesem Token starten.

Phase 4: Troubleshooting

Schlägt ein OData-Aufruf fehl, ist die Browsermeldung ("500 Internal Server Error") selten hilfreich. Diese drei Logs helfen weiter:

  • /IWFND/ERROR_LOG (Gateway/Hub-System): erste Anlaufstelle für jeden HTTP-Fehler. Der Button "Request Context" zeigt genau, welche URI den Fehler ausgelöst hat; "Replay" reproduziert den Aufruf direkt im Gateway Client.
  • /IWBEP/ERROR_LOG (ECC/S4-System): notwendig bei Hub-Deployments, wenn /IWFND/ERROR_LOG nur einen generischen RFC-Fehler zeigt. Hier findest Du Programmabbrüche, Berechtigungsfehler oder Mapping-Probleme aus der Business-Logik.
  • SLG1 (Objekt /IWBEP/): hilfreich bei tieferliegenden Systemproblemen wie Cache-Invalidierung oder inkonsistenten Metadaten.

Häufige Probleme und Lösungen:

Symptom Wahrscheinliche Ursache Fix
HTTP 403 Forbidden Fehlende Berechtigung SU53 prüfen, Service-Gruppe in PFCG zuweisen
HTTP 404 Not Found Service nicht registriert / falscher Alias /IWFND/MAINT_SERVICE prüfen, System-Alias und ICF-Knoten kontrollieren
HTTP 500 Internal Server Error Programmabbruch ST22 prüfen, oft Datentyp-Mismatches
Metadaten laden nicht Cache-Problem /IWFND/CACHE_CLEANUP und /IWBEP/CACHE_CLEANUP ausführen
Keine Daten in ODQMON Standard-OData statt ODP genutzt SEGW-Wizard "Redefine → ODP Extraction" statt manuellem Entity Set verwenden

Fazit: Vom Code zur Architektur

OData in SAP S/4HANA oder ECC zu bauen, ist längst keine reine Programmieraufgabe mehr – es geht um das Verständnis der Architektur. Wir haben den Weg von der Entwicklung in SEGW über die korrekte Delta-Verarbeitung im ODP-Framework bis zur Registrierung in /IWFND/MAINT_SERVICE und der Validierung mit Gateway Client und ODQMON durchlaufen.

Deine wichtigsten Takeaways:

  • Architektur respektieren: Achte darauf, ob Du Embedded oder Hub arbeitest.
  • ODP nutzen: Für die Extraktion zu Drittsystemen ist ODP-basiertes OData der einzige robuste und konforme Weg.
  • Deltas managen: Mach Dich mit der Funktionsweise von wie Subscriptions vertraut. Starte die URL nicht neu, wenn Du Deine Delta-Queue nicht killen willst.
  • Überwachen: Nutze die spezifischen Logging-Tools statt nur die Browser-Konsole.


Du willst über OData hinaus Deine gesamte SAP-Datenintegration modernisieren? Ob Replikation via Datasphere und BDC Connect, Near-Real-Time-Szenarien mit Replication Flows oder eine zukunftssichere Architektur entlang der Business Data Cloud – wir begleiten Dich End-to-End.

Du hast Fragen? Kontaktiere uns

Olaf Bowe

Your contact person

Olaf Bowe

Domain Lead Insights & Information Design

Außenansicht eines Bürogebäudes von b.telligent

Wer ist b.telligent?

b.telligent – das ist Data Analytics, AI, Customer Engagement und Data Visualisation. Das ist Deutschland, Österreich, die Schweiz und Rumänien. Doch das Entscheidende ist unser Team: Menschen mit echter Leidenschaft für Daten, die gemeinsam innovative Lösungen schaffen und Unternehmen nachhaltig voranbringen.

Ähnliche Beiträge

chevron left icon
Vorheriger Beitrag
Nächster Beitrag
chevron right icon

Kein vorheriger Beitrag

Kein nächster Beitrag