Skip to content
SyncMyShop

PunchOut

PunchOut catalog for SAP

SAP SRM, SAP ERP purchasing and SAP S/4HANA open a supplier's catalog over OCI: the buyer's browser calls your store with the parameters the SAP administrator entered, and the cart comes back as NEW_ITEM form fields. SAP SRM checks every unit against its own ISO code table and drops a line it cannot match. We build the OCI login, the cart and the order route on your existing store and run them.

What moves between SAP and your store

SAP has several products that open a supplier's catalog, and they do not all speak the same protocol. Facts on this page were checked against SAP's help portal on October 3, 2026.

SAP product Where the buyer opens the catalog Protocol Where the cart lands
SAP SRM the shopping cart OCI an SRM shopping cart for approval
SAP ERP and S/4HANA purchasing the Catalog button in ME51N and ME21N OCI purchase requisition or purchase order items
SAP S/4HANA self-service requisitioning the Fiori requisition apps OCI 4.0, OCI 5.0 for imported catalogs a draft item of a self-service requisition
SAP Ariba the catalog in SAP Ariba Buying cXML a requisition in SAP Ariba

The first three run the OCI session described on OCI PunchOut: the browser calls your store with login parameters and a return address, and posts the cart back as NEW_ITEM-<field>[n] form fields. SAP Ariba has its own page, PunchOut for Ariba. Neither OCI flow carries the purchase order; that follows on a separate route.

SAP SRM drops a cart line whose unit has no ISO code in table T006 SAP opens the store through the buyer's browser with the call structure. The cart of 3 lines, 1,468.75 USD, is posted back to HOOK_URL. SAP SRM checks each unit in T006, rejects line 3 with unit PK and creates a shopping cart of 2 lines, 1,450.00 USD. SAP SRM at the buyer Browser buyer Your store OCI login catalog URL and call structure POST USERNAME, CUSTOMER, HOOK_URL catalog at prices of customer 10432 Cart: 3 lines, 1,468.75 USD. Line 3 is 5 packs of cable ties, unit PK. form with NEW_ITEM fields POST to HOOK_URL NEW_ITEM-UNIT in T006? PK is not an ISO Code Incomplete items in catalog. Shopping cart: 2 lines, 1,152.00 + 298.00 = 1,450.00 USD. The 18.75 for line 3 is gone.
SAP SRM checks the unit of every line against its own table. A line that fails is left out of the cart.

What the SAP administrator enters: the call structure

In SAP ERP and S/4HANA the catalog is a web service, set up in Customizing under Materials Management, Purchasing, Environment Data, "Web Services: ID and Description", or in S/4HANA in the Fiori app Settings for Web Services. In S/4HANA Cloud the communication scenario is SAP_COM_0046, OCI Integration. Each row of the call structure has a sequence number, a parameter name, a value and a type:

Type Use Example row
0, URL the catalog URL; several URL rows are joined empty name, https://store.example.com/oci/login
1, SAP Field a value SAP fills at runtime from a system field USERNAME = SY-UNAME
2, Fixed Value sent exactly as entered CUSTOMER = 10432
4, Return URL only for the return address HOOK_URL, value left empty

SAP's notes on the configuration add rules that change what your store receives. Parameters needed for login come before HOOK_URL in the sequence. The "Use HTTP GET" flag is set only when the catalog does not support POST. A web service with an empty description in the user's logon language opens a blank page. A buyer calling from Fiori needs a specific HOOK_URL value, described in SAP Note 2375333.

A call for customer 10432, decoded:

USERNAME=JDEVRIES
CUSTOMER=10432
HOOK_URL=https://s4.bakker.example/sap/bc/gui/sap/its/oci?sap-client=100

USERNAME here is the SAP user name of the person at the buyer, filled from SY-UNAME. Your store has never seen that name, so it identifies the company by the fixed CUSTOMER value and keeps the user name for the cart. SAP's own security guidance for S/4HANA advises against a catalog password stored in Customizing and recommends authentication per user through single sign-on or certificates; S/4HANA also supports OAuth 2.0 for OCI 4.0 catalogs.

Which system owns what

Data System of record Direction When
Items, descriptions, contract prices your store or ERP to SAP in the cart per session
Unit of measure codes the buyer's SAP, table T006 your cart has to match it agreed per buyer, before go-live
Material group the buyer's SAP your cart sends a value from their list agreed per buyer
Purchase requisition, approval the buyer's SAP stays there after the cart
Purchase order the buyer's SAP to you over EDI, IDoc, XML or email after approval
Confirmation, ship notice, invoice your ERP to the buyer per order

Units: the ISO code has to exist in SAP

The OCI specification defines NEW_ITEM-UNIT as an ISO code maintained in the buyer's system, and SAP SRM enforces it on arrival. The function UNIT_OF_MEASURE_ISO_TO_SAP takes the value of NEW_ITEM-UNIT as an ISO code and looks for a row in table T006 with that ISO code marked as primary. When it finds none, the buyer sees two messages: "Unit of Measure XX sent from catalog is not an ISO Code" and "Incomplete items in catalog. Only complete items were transferred". The line is deleted from the cart and the rest goes through.

The cart of Bakker Installatie B.V. has three lines: 120 receptacles at 9.60, 2 panelboards at 149.00 and 5 packs of cable ties at 3.75. The cable ties go out with unit PK. In this buyer's SAP system no unit has PK as its ISO code, so line 3 is dropped:

Line NEW_ITEM-UNIT Found in T006 Line value
1 EA yes 120 x 9.60 = 1,152.00
2 EA yes 2 x 149.00 = 298.00
3 PK no 5 x 3.75 = 18.75, dropped

The shopping cart holds 1,152.00 + 298.00 = 1,450.00 USD instead of 1,468.75. The buyer orders without the cable ties, and the missing 18.75 never reaches you as an error. Two fixes work: the store sends a code the buyer's system knows, or the buyer's administrator assigns the ISO code in transaction CUNI or converts it in the BAdI BBP_CATALOG_TRANSFER. SAP's support notes describe the usual mistake: an ISO code created in CUNI and never assigned to a unit. Which code a buyer's SAP accepts for a piece differs per system, so the integration keeps a unit table per buyer. The general problem is on Units of measure.

Material groups and field mapping

NEW_ITEM-MATGROUP is 10 characters and refers to a product category in the buyer's system. In SAP SRM it has to match a unique entry in table COMM_CATEGORY. If it does not, SRM silently assigns the user's default category, and the item lands on the wrong approval path or G/L account. The alternative is NEW_ITEM-EXT_CATEGORY with a code from a standard schema such as UNSPSC or eCl@ss, together with NEW_ITEM-EXT_SCHEMA_TYPE; SRM then maps it through its own Customizing.

In SAP ERP and S/4HANA purchasing, the standard program LMEGUICK3 maps the OCI fields to the requisition and order tables EBAN and EKPO. The five fields NEW_ITEM-CUST_FIELD1 to CUST_FIELD5 have no fixed meaning; the buyer maps them in the BAdI ME_CATALOG_INTERFACE_CUST. In S/4HANA Cloud a key user does the same in Custom Logic with the business context "OCI, Purchasing catalogs". Whatever the buyer maps there is what your cart has to fill, so the field list is agreed per buyer and kept in the integration's mapping.

Price validation in S/4HANA

Settings for Web Services has three price validation options for self-service requisitions:

Option When the price in your catalog has changed
Disable price validation the draft is saved with the latest catalog price
Enable price validation the draft cannot be saved; the user sees a pop-up
Update price from catalog the draft is saved and keeps the old price

With validation enabled, a price change between the session and the save blocks the requisition. A price change in your ERP at 10:00 on a cart from 09:40 shows up at the buyer as a requisition that will not save. The integration publishes price changes to the catalog at a fixed moment agreed with the buyer, so a running session is not hit by one.

When it goes wrong

What the buyer sees Cause Handling
A blank page instead of the catalog no description for the web service in the logon language, or the store refuses to load in a frame description per language at the buyer; the store allows SAP's host as a frame ancestor
"Incomplete items in catalog" a unit with no ISO code assignment in T006 unit table per buyer, checked before go-live
Item on the wrong approval path MATGROUP not in COMM_CATEGORY, default category used material group list per buyer
An empty cart in SAP parameters of the return URL left in the form action strip them into hidden fields
Colleagues see each other's items one login for all users in the call structure one cart per call-up
No purchase order arrives the order goes out by email or IDoc to an address nobody reads the order route agreed and tested with the first order

The full OCI field list and its lengths are on OCI PunchOut, the store-side items on the supplier checklist. The PunchOut set-up for other buyers, such as Coupa, is cXML and is compared in cXML vs OCI. What the whole flow looks like with your ERP is on the PunchOut hub. Tell us which SAP system your customer runs.

Frequently asked questions

Does SAP use OCI or cXML for PunchOut?

SAP SRM, purchasing in SAP ERP and SAP S/4HANA use OCI. SAP Ariba uses cXML through SAP Business Network. When an S/4HANA buyer runs its catalogs through SAP Ariba, the session is cXML and the rules on PunchOut for Ariba apply.

Which OCI version does SAP S/4HANA support?

The app Settings for Web Services gives access to catalogs on OCI 4.0, with OAuth 2.0 as an option, and imports catalog data from catalogs on OCI 5.0. Plant maintenance and project systems that call the catalog through their own Customizing route support OCI 3.0 and below; they can also use a web service defined in Settings for Web Services.

What does the SAP administrator need from me?

The catalog URL, the names and values of the login parameters, the name of the return parameter if it is not HOOK_URL, and whether your login accepts POST. SAP sets GET only when the catalog does not support POST. Add the list of unit codes and material groups your cart sends, so the administrator can check them against their system before the first test.

Can every buyer at the customer log in with their own name?

Yes, if your store supports it. SAP's security guidance for S/4HANA advises against storing the catalog login in Customizing, because every user sends the same name and password, and recommends individual authentication through single sign-on, certificates or a login per user. With one shared login, the store has to keep the cart per call, not per account.

How does the purchase order reach me?

Not through OCI. SAP S/4HANA sends purchase order output over EDI, email, IDoc, print or XML, set per supplier by the buyer's output determination. For an order that arrives as a PDF by email, the integration reads it and matches it to the cart; for an IDoc or EDI order it maps the message to a sales order.

Tell us what you need

Tell us which systems you use and what needs to work better. We reply personally within one working day. We help you define the work, then agree the price and timing before you commit.

  • You know the price and the timeline before you commit to anything
  • We work out the connection that takes the work off your hands
  • We handle the build, hosting, monitoring and maintenance
  • Your team has less information to retype and fewer discrepancies to chase

Suppliers, products, orders per day, a rough estimate is fine.

Or email directly: carsten@syncmyshop.com