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.

Mehr erfahren
  • 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.

  1. Katalog auswählen

    Der Benutzer legt im Einkaufssystem einen Warenkorb oder eine Bestellanforderung an und wählt einen dort hinterlegten externen Katalog aus.

  2. 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.

  3. 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.

  4. 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.

  5. Ü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=CTLG
Vereinfachter Katalogaufruf. Die Namen der Anmeldeparameter (hier USERNAME und PASSWORD) legt der jeweilige Shop fest; HOOK_URL und die Parameter mit Tilde sind standardisiert.

OCI-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.

Auswahl häufig genutzter OCI-Rückgabefelder. [n] steht für den Positionsindex.
FeldInhaltHinweis
NEW_ITEM-DESCRIPTION[n]Kurztext der PositionHöchstens 40 Zeichen; längere Texte gehören in den Langtext
NEW_ITEM-MATNR[n]Materialnummer im SAP-System des KundenNur sinnvoll, wenn der Shop die Kundenmaterialnummern kennt
NEW_ITEM-QUANTITY[n]MengeDezimalpunkt als Trennzeichen
NEW_ITEM-UNIT[n]MengeneinheitISO-Code, zum Beispiel PCE für Stück
NEW_ITEM-PRICE[n]Preis je PreiseinheitDezimalpunkt, keine Tausendertrennzeichen
NEW_ITEM-PRICEUNIT[n]PreiseinheitMenge, auf die sich der Preis bezieht, etwa 1 oder 100
NEW_ITEM-CURRENCY[n]WährungISO-Code, zum Beispiel EUR
NEW_ITEM-LEADTIME[n]LieferzeitIn Tagen
NEW_ITEM-VENDOR[n]Lieferantennummer im System des KundenWichtig bei Katalogen mit mehreren Lieferanten
NEW_ITEM-VENDORMAT[n]Artikelnummer des LieferantenWird in die Bestellung übernommen
NEW_ITEM-MANUFACTCODE[n]HerstellernummerZusammen mit NEW_ITEM-MANUFACTMAT[n], der Herstellerteilenummer
NEW_ITEM-MATGROUP[n]WarengruppeMuss im Einkaufssystem existieren oder dort zugeordnet werden
NEW_ITEM-CONTRACT[n]KontraktnummerMit NEW_ITEM-CONTRACT_ITEM[n] für die Kontraktposition
NEW_ITEM-SERVICE[n]Kennzeichen DienstleistungUnterscheidet Leistungen von Materialpositionen
NEW_ITEM-EXT_PRODUCT_ID[n]Eindeutige Produktkennung im KatalogGrundlage für spätere Detail- und Prüfaufrufe
NEW_ITEM-LONGTEXT_n:132[]Langtext der Position nDer Index steht hier vor dem Doppelpunkt
NEW_ITEM-EXT_SCHEMA_TYPE[n]KlassifikationssystemZusammen mit NEW_ITEM-EXT_CATEGORY_ID[n] für die Zuordnung zu Warengruppen
NEW_ITEM-CUST_FIELD1[n] bis CUST_FIELD5[n]Frei belegbare FelderBedeutung 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>
OCI-Rückgabe als HTML-Formular. Position 1: 200 Stück zu 4,90 EUR je 100 Stück; Position 2: 10 Stück zu 3,45 EUR je Stück. Die Warengruppenwerte sind Platzhalter und müssen im Zielsystem bekannt sein.

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?

KriteriumOCIcXML
HerkunftSAPAriba
DatenformatName-Wert-Paare in URL und HTML-FormularXML-Dokumente
SitzungsaufbauDirekter Aufruf der Katalog-URL mit ParameternPunchOutSetupRequest und PunchOutSetupResponse zwischen den Servern, danach Weiterleitung des Browsers
Rückgabe des WarenkorbsFormular mit NEW_ITEM-Feldern an die HOOK_URLPunchOutOrderMessage
Abgedeckter ProzessKatalogaufruf und WarenkorbrückgabePunchout sowie Bestellung, Bestätigung, Lieferavis und Rechnung als eigene Dokumente
Typisches UmfeldSAP ERP, SAP SRM, S/4HANA und SAP-nahe EinkaufssystemeSAP 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 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

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.