OCI (Open Catalog Interface): der SAP-Standard für externe Kataloge
Wie der Absprung in den Lieferantenshop und die Rückgabe des Warenkorbs technisch funktionieren
OCI ist die von SAP definierte Schnittstelle, über die ein Einkaufssystem einen externen Webkatalog aufruft und den dort gefüllten Warenkorb als Positionsdaten zurückerhält. Dieser Eintrag erklärt den Ablauf, die Rückgabefelder mit einem konkreten Beispiel und die Abgrenzung zu cXML.
- Aufruf und Rückgabe Schritt für Schritt
- Rückgabefelder mit Beispiel
- OCI-Versionen im Überblick
- Abgrenzung zu cXML
Was ist OCI?
OCI (Open Catalog Interface) ist ein von SAP definierter Standard, mit dem ein Einkaufssystem einen externen Webkatalog aufruft und die dort ausgewählten Artikel als strukturierte Positionsdaten zurückerhält. Der Benutzer springt aus seinem Warenkorb oder seiner Bestellanforderung in den Lieferantenshop, wählt Artikel aus und überträgt sie per Formularrückgabe in das aufrufende System.
Wofür OCI gedacht ist und wofür nicht
OCI regelt genau zwei Dinge: wie das Einkaufssystem den Katalog aufruft und in welcher Form der Katalog die ausgewählten Positionen zurückgibt. Der Standard stammt aus den SAP-Einkaufslösungen (Enterprise Buyer, später SAP SRM) und wird heute auch von SAP ERP, S/4HANA und vielen Einkaufssystemen anderer Hersteller unterstützt.
OCI überträgt keine Bestellungen, Auftragsbestätigungen oder Rechnungen. Die Bestellung entsteht erst im Einkaufssystem, nachdem die zurückgegebenen Positionen dort geprüft und freigegeben wurden, und geht auf einem getrennten Weg an den Lieferanten, etwa per E-Mail, EDI oder cXML. Wer Bestell- und Rechnungsdokumente über dasselbe Protokoll austauschen möchte, landet bei cXML.
Aufruf und Rückgabe: der OCI-Ablauf Schritt für Schritt
Der gesamte Ablauf läuft über den Browser des Benutzers. Zwischen Einkaufssystem und Katalog muss keine direkte Server-Verbindung bestehen, was die Anbindung auch über Unternehmensgrenzen hinweg einfach macht.
Katalog auswählen
Der Benutzer legt im Einkaufssystem einen Warenkorb oder eine Bestellanforderung an und wählt einen dort hinterlegten externen Katalog aus.
Aufruf mit Parametern
Das Einkaufssystem ruft die Katalog-URL auf und übergibt die im Customizing hinterlegten Parameter: Anmeldedaten für den Shop, weitere mit dem Lieferanten vereinbarte Werte und die Rücksprungadresse im Parameter HOOK_URL. Feste Zusatzparameter wie ~OkCode=ADDI, ~target=_top und ~caller=CTLG steuern die Verarbeitung auf SAP-Seite.
Einkaufen im Katalog
Der Katalog meldet den Benutzer anhand der übergebenen Daten an und zeigt Sortiment und kundenindividuelle Preise. Der Benutzer sucht, konfiguriert und legt Artikel in den Warenkorb des Shops.
Rückgabe an die HOOK_URL
Statt im Shop zu bestellen, klickt der Benutzer auf die Übergabe. Der Shop erzeugt ein HTML-Formular mit einem Satz NEW_ITEM-Felder je Position und sendet es über den Browser an die HOOK_URL.
Übernahme im Einkaufssystem
Das Einkaufssystem liest die Felder, legt daraus Positionen im Warenkorb oder in der Bestellanforderung an und ergänzt Kontierung, Werk und Lieferadresse. Danach folgen Freigabe und Bestellung nach den Regeln des Kunden.
https://shop.lieferant.example/oci
?USERNAME=kunde_4711
&PASSWORD=********
&HOOK_URL=https%3A%2F%2Feinkauf.kunde.example%2Foci%2Freturn
&~OkCode=ADDI
&~target=_top
&~caller=CTLGOCI-Beispiel: typische Rückgabefelder
Die Rückgabe besteht aus Name-Wert-Paaren. Jede Position erhält einen fortlaufenden Index in eckigen Klammern, beginnend bei 1. Das folgende Beispiel zeigt einen Warenkorb mit zwei Positionen, wie ihn ein Shop an die HOOK_URL sendet.
| Feld | Inhalt | Hinweis |
|---|---|---|
| NEW_ITEM-DESCRIPTION[n] | Kurztext der Position | Höchstens 40 Zeichen; längere Texte gehören in den Langtext |
| NEW_ITEM-MATNR[n] | Materialnummer im SAP-System des Kunden | Nur sinnvoll, wenn der Shop die Kundenmaterialnummern kennt |
| NEW_ITEM-QUANTITY[n] | Menge | Dezimalpunkt als Trennzeichen |
| NEW_ITEM-UNIT[n] | Mengeneinheit | ISO-Code, zum Beispiel PCE für Stück |
| NEW_ITEM-PRICE[n] | Preis je Preiseinheit | Dezimalpunkt, keine Tausendertrennzeichen |
| NEW_ITEM-PRICEUNIT[n] | Preiseinheit | Menge, auf die sich der Preis bezieht, etwa 1 oder 100 |
| NEW_ITEM-CURRENCY[n] | Währung | ISO-Code, zum Beispiel EUR |
| NEW_ITEM-LEADTIME[n] | Lieferzeit | In Tagen |
| NEW_ITEM-VENDOR[n] | Lieferantennummer im System des Kunden | Wichtig bei Katalogen mit mehreren Lieferanten |
| NEW_ITEM-VENDORMAT[n] | Artikelnummer des Lieferanten | Wird in die Bestellung übernommen |
| NEW_ITEM-MANUFACTCODE[n] | Herstellernummer | Zusammen mit NEW_ITEM-MANUFACTMAT[n], der Herstellerteilenummer |
| NEW_ITEM-MATGROUP[n] | Warengruppe | Muss im Einkaufssystem existieren oder dort zugeordnet werden |
| NEW_ITEM-CONTRACT[n] | Kontraktnummer | Mit NEW_ITEM-CONTRACT_ITEM[n] für die Kontraktposition |
| NEW_ITEM-SERVICE[n] | Kennzeichen Dienstleistung | Unterscheidet Leistungen von Materialpositionen |
| NEW_ITEM-EXT_PRODUCT_ID[n] | Eindeutige Produktkennung im Katalog | Grundlage für spätere Detail- und Prüfaufrufe |
| NEW_ITEM-LONGTEXT_n:132[] | Langtext der Position n | Der Index steht hier vor dem Doppelpunkt |
| NEW_ITEM-EXT_SCHEMA_TYPE[n] | Klassifikationssystem | Zusammen mit NEW_ITEM-EXT_CATEGORY_ID[n] für die Zuordnung zu Warengruppen |
| NEW_ITEM-CUST_FIELD1[n] bis CUST_FIELD5[n] | Frei belegbare Felder | Bedeutung wird zwischen Kunde und Lieferant vereinbart |
<form method="post" action="[HOOK_URL]">
<input type="hidden" name="NEW_ITEM-DESCRIPTION[1]" value="Sechskantschraube M8x40 verzinkt">
<input type="hidden" name="NEW_ITEM-QUANTITY[1]" value="200">
<input type="hidden" name="NEW_ITEM-UNIT[1]" value="PCE">
<input type="hidden" name="NEW_ITEM-PRICE[1]" value="4.90">
<input type="hidden" name="NEW_ITEM-PRICEUNIT[1]" value="100">
<input type="hidden" name="NEW_ITEM-CURRENCY[1]" value="EUR">
<input type="hidden" name="NEW_ITEM-LEADTIME[1]" value="3">
<input type="hidden" name="NEW_ITEM-VENDORMAT[1]" value="SK-M8X40-ZN">
<input type="hidden" name="NEW_ITEM-MATGROUP[1]" value="NORMTEILE">
<input type="hidden" name="NEW_ITEM-DESCRIPTION[2]" value="Schutzbrille klar, EN 166">
<input type="hidden" name="NEW_ITEM-QUANTITY[2]" value="10">
<input type="hidden" name="NEW_ITEM-UNIT[2]" value="PCE">
<input type="hidden" name="NEW_ITEM-PRICE[2]" value="3.45">
<input type="hidden" name="NEW_ITEM-PRICEUNIT[2]" value="1">
<input type="hidden" name="NEW_ITEM-CURRENCY[2]" value="EUR">
<input type="hidden" name="NEW_ITEM-LEADTIME[2]" value="2">
<input type="hidden" name="NEW_ITEM-VENDORMAT[2]" value="PSA-4711">
<input type="hidden" name="NEW_ITEM-MATGROUP[2]" value="ARBEITSSCHUTZ">
</form>In der Praxis braucht jede Position mindestens einen Kurztext oder eine Materialnummer sowie Menge und Mengeneinheit. Bei Positionen ohne Kundenmaterialnummer erwarten Einkaufssysteme zusätzlich Preis und Währung. Neben der Formularvariante definiert die Spezifikation auch eine XML-Variante der Rückgabe; verbreitet ist die Übergabe als HTML-Formular.
Zusatzfunktionen: Detailanzeige, Prüfung und Suche
Neben dem normalen Katalogaufruf beschreibt OCI optionale Funktionen, die über den Parameter FUNCTION angesteuert werden. Mit FUNCTION=DETAIL öffnet das Einkaufssystem die Detailansicht eines bereits übernommenen Artikels, mit FUNCTION=VALIDATE lässt es Preis und Verfügbarkeit einer Position erneut prüfen, zum Beispiel wenn ein gespeicherter Warenkorb später wiederverwendet wird. Beide Funktionen identifizieren den Artikel über die Produktkennung, die der Shop zuvor in NEW_ITEM-EXT_PRODUCT_ID geliefert hat. FUNCTION=SOURCING startet den Katalog direkt mit einem Suchbegriff.
Nicht jeder Shop unterstützt diese Funktionen. Klären Sie vor der Anbindung, welche davon Ihr Einkaufssystem nutzt und welche der Lieferant anbietet.
OCI-Versionen
SAP hat die Spezifikation in mehreren Versionen veröffentlicht, darunter 2.0, 3.0, 4.0 und 5.0. Die oben gezeigten Kernfelder der Rückgabe sind über die Versionen hinweg stabil geblieben; neuere Versionen haben vor allem Felder und Zusatzfunktionen ergänzt. Lieferantenshops geben in der Regel an, welche Version sie unterstützen, meist 4.0 oder 5.0.
Für ein Anbindungsprojekt ist weniger die Versionsnummer entscheidend als die Frage, welche Felder das Einkaufssystem tatsächlich auswertet und welche der Shop füllen kann. Diese Abstimmung gehört in jedes Feld-Mapping.
OCI oder cXML?
| Kriterium | OCI | cXML |
|---|---|---|
| Herkunft | SAP | Ariba |
| Datenformat | Name-Wert-Paare in URL und HTML-Formular | XML-Dokumente |
| Sitzungsaufbau | Direkter Aufruf der Katalog-URL mit Parametern | PunchOutSetupRequest und PunchOutSetupResponse zwischen den Servern, danach Weiterleitung des Browsers |
| Rückgabe des Warenkorbs | Formular mit NEW_ITEM-Feldern an die HOOK_URL | PunchOutOrderMessage |
| Abgedeckter Prozess | Katalogaufruf und Warenkorbrückgabe | Punchout sowie Bestellung, Bestätigung, Lieferavis und Rechnung als eigene Dokumente |
| Typisches Umfeld | SAP ERP, SAP SRM, S/4HANA und SAP-nahe Einkaufssysteme | SAP Ariba und andere Einkaufsplattformen |
Viele Lieferanten bieten beide Protokolle an. Die Wahl richtet sich deshalb meist nach dem Einkaufssystem des Kunden und nicht nach den Vorlieben des Lieferanten.
Verwandte Begriffe und passende Ovenca-Module
- OCI-Schnittstelle einrichten
Aufrufstruktur, Feld-Mapping, Tests und typische Fehler bei der technischen Anbindung.
- OCI-Katalog
Was ein OCI-Katalog aus Sicht von Einkauf und Lieferant ist und wann er sich gegenüber einem statischen Katalog lohnt.
- Punchout-Katalog
Das Prinzip des Absprungs in den Lieferantenshop, unabhängig vom Protokoll.
- cXML
Das XML-basierte Gegenstück zu OCI mit zusätzlichem Belegaustausch.
- Katalog-Shop mit zentralem Punchout-Warenkorb
Importierte Kataloge und Punchout-Shops in einer Suche und einem Warenkorb.
- Katalogbeschaffung mit SAP S/4HANA
Wie Ovenca per OCI, cXML oder API an S/4HANA angebunden wird.
OCI in vier Punkten
Was Einkauf und IT über den Standard wissen sollten
Aufruf aus dem Einkaufssystem
Der externe Katalog wird im Einkaufssystem als Webdienst hinterlegt. Beim Aufruf gehen Anmeldedaten und die Rücksprungadresse HOOK_URL an den Shop.
- Katalog-URL und Parameter im Customizing
- HOOK_URL als Rücksprungadresse
- Ablauf über den Browser des Benutzers
Rückgabe als Positionsdaten
Der Shop sendet den Warenkorb als Formular mit NEW_ITEM-Feldern zurück. Daraus entstehen Positionen im Warenkorb oder in der Bestellanforderung.
- Ein Feldsatz je Position
- Kurztext, Menge, Einheit, Preis, Währung
- Lieferantenartikelnummer und Warengruppe
Bestellung bleibt im Einkaufssystem
OCI endet mit der Übergabe der Positionen. Kontierung, Freigabe und Bestellung laufen nach den Regeln des Kunden im eigenen System.
- Freigabe nach Wertgrenzen
- Bestellung auf getrenntem Weg
- Keine Belege über OCI
Abstimmung statt Programmierung
Die meiste Arbeit steckt im Abgleich von Mengeneinheiten, Warengruppen und Zeichensätzen zwischen Shop und Einkaufssystem.
- Mengeneinheiten als ISO-Codes
- Warengruppen-Mapping
- Tests mit echten Warenkörben
Wie Ovenca OCI einsetzt
Ovenca nutzt OCI in beide Richtungen: zur Anbindung externer Lieferantenshops an den Katalog-Shop und zur Anbindung des Katalog-Shops an Ihr ERP.
- Lieferantenshops per OCI einbinden
- Externe Shops werden per OCI-Punchout angebunden. Die OCI-Parameter je Lieferant verwalten Sie im Adminbereich.
- Ein Warenkorb für alle Quellen
- Positionen aus importierten Katalogen und aus Punchout-Shops landen in einem zentralen Warenkorb und durchlaufen dieselbe Freigabe.
- OCI und cXML nebeneinander
- Ovenca unterstützt OCI und cXML als gleichwertige Punchout-Protokolle. Sie müssen sich nicht für ein Protokoll entscheiden.
- Anbindung an SAP
- Ovenca lässt sich per OCI-Punchout, cXML oder API an SAP ERP und S/4HANA anbinden.
- Zugriff gezielt steuern
- Welche Benutzer welche Punchout-Kataloge nutzen dürfen, legen Sie über Rollen und Rechte fest.
- Betrieb nach Ihren Vorgaben
- Ovenca läuft On-Premise, in der Private Cloud oder hybrid und ist bei LANXESS weltweit im Einsatz; die Zusammenarbeit besteht seit 2014.
OCI: Fragen und Antworten
Weiterführende Seiten
OCI-Kataloge in Ihrer Systemlandschaft einsetzen
Wir zeigen Ihnen, wie Lieferantenshops per OCI und cXML in einen zentralen Katalog-Shop eingebunden und an Ihr ERP übergeben werden.