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.
SAP OData in der Praxis: Der komplette Guide von SEGW bis zur Service-Aktivierung
Samuel Krieg
Samuel Krieg
Senior Consultant
Samuel ist Consultant mit Schwerpunkt auf SAP-basierter Datenarchitektur und -provisionierung.
Er verfügt über mehrere Jahre Erfahrung in der nativen SAP HANA-Entwicklung (insbesondere HANA SQL) und hat sich zunehmend auf die Anbindung und Bereitstellung von Daten aus SAP-Quellsystemen (ECC 6.0 und S/4HANA, u. a. via CDS-Views und OData) spezialisiert.
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
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):
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 Model → Redefine → ODP 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
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.
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
Your contact person
Olaf Bowe
Domain Lead Insights & Information Design
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.
SAP-Datenintegration ist komplex: Performance-Probleme, Speichergrenzen und die Integration von Drittsystemen fordern Unternehmen heraus. Mit unserem flexiblen Framework schaffst Du eine leistungsstarke und skalierbare Lösung, die SAP BW und S/4HANA optimal ergänzt – effizient, zukunftssicher und kostengünstig.
Mit der neuen Funktion AUSDRUCKERSETZEN bietet arcplan 7 die Möglichkeit, Einfluss auf das automatisch generierte SQL und MDX Statement zu nehmen. Dies hat den Vorteil, dass weiterhin ein Design mittels „Pfeilen“ erfolgen kann und man nicht auf Formeln beschränkt ist. Mit diesem Mittel sind aktuell nur einfache Anpassungen an der Abfrage möglich, jedoch mit einem großen Impact auf die daraus entstehenden Möglichkeiten.
Mit dem Q2 2023 Update „New Optimized Story Experience – Unified Stories and Applications“ bietet die SAP Analytics Cloud Nutzer:innen neue Wege, um noch flexibler und leichter in einer integrierten Designumgebung Berichte und Dashboards zu entwickeln. Wir zeigen Dir hier, welche neuen Features das Update mit sich bringt und wie es Dich beim Erstellen von Berichten unterstützt.