# SAP S/4HANA (on-premise and Private Edition)

> How an on-premise SAP S/4HANA or a Private Edition hands serial numbers to BatteryPass.

> [!NOTE]
> This page describes an integration pattern. BatteryPass ships no connector for SAP S/4HANA and has no partnership
> with SAP; nothing here is a vendor approval.

The `OP_` APIs of the SAP Business Accelerator Hub mirror the cloud APIs: `OP_API_MATERIALSERIALNUMBER_0001` for
serial numbers, `OP_API_BATCH_SRV_0001` for batches and `OP_API_PRODUCTION_ORDER_2_SRV_0001` for production orders.
The middleware usually reaches the system through SAP Cloud Connector or a reverse proxy in the plant network; the
SAP system itself is never exposed to the internet. Only the middleware talks to BatteryPass, with its own key.

For [units from production](https://passport.kabin.sh/docs/en/integrations/workflows/units-from-production) the middleware reads the serial
numbers of a batch and writes a file with the `sap-serial-numbers` preset (material number, serial number, posting
date of the goods receipt). It assumes the model identifier in BatteryPass is the SAP material number.

Changes to the material master can arrive as `MATMAS` IDocs through ALE change pointers, or as RAP business events
through SAP Event Mesh. `SERDAT` is the ALE serialisation message, not a serial number IDoc: serial numbers come
through the OData APIs. Passport links flow back as in the [passport links workflow](https://passport.kabin.sh/docs/en/integrations/workflows/passport-links-to-erp).

## Interfaces and how they were checked

- **Vendor:** SAP
- **On-premise:** On-premise and Private Edition with the OP\_ APIs of the SAP Business Accelerator Hub

The OP\_ APIs mirror the cloud APIs; the middleware usually reaches the system through SAP Cloud Connector or a reverse proxy in the plant network, never directly from the internet.

An integration pattern, not a connector: BatteryPass ships no ERP connector and holds no vendor certification.

| Interface                                                                                                                       | Protocol | Sign-in                                         | Events                       | Objects                                   | Checked                                         |
| ------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------- | ---------------------------- | ----------------------------------------- | ----------------------------------------------- |
| [`OP_API_PRODUCT_SRV_0001`](https://api.sap.com/api/OP_API_PRODUCT_SRV_0001/overview) (Product master)                          | OData V2 | Basic auth, X.509 certificate                   | none                         | Product/material master                   | checked in the vendor documentation, 24/10/2026 |
| [`OP_API_MATERIALSERIALNUMBER_0001`](https://api.sap.com/api/OP_API_MATERIALSERIALNUMBER_0001/overview) (Serial numbers)        | OData V4 | Basic auth, X.509 certificate                   | none                         | Batch/serial number                       | checked in the vendor documentation, 24/10/2026 |
| [`OP_API_BATCH_SRV_0001`](https://api.sap.com/api/OP_API_BATCH_SRV_0001/overview) (Batches)                                     | OData V2 | Basic auth, X.509 certificate                   | none                         | Batch/serial number                       | checked in the vendor documentation, 24/10/2026 |
| [`OP_API_PRODUCTION_ORDER_2_SRV_0001`](https://api.sap.com/api/OP_API_PRODUCTION_ORDER_2_SRV_0001/overview) (Production orders) | OData V2 | Basic auth, X.509 certificate                   | none                         | Production order                          | checked in the vendor documentation, 24/10/2026 |
| [`OP_CUSTOMERRETURN_0001`](https://api.sap.com/api/OP_CUSTOMERRETURN_0001/overview) (Customer returns)                          | OData V4 | Basic auth, X.509 certificate                   | none                         | Return                                    | checked in the vendor documentation, 24/10/2026 |
| `MATMAS` (IDoc for the material master)                                                                                         | IDoc     | Basic auth, X.509 certificate                   | Business events (not signed) | Product/material master                   | checked in the vendor documentation, 24/10/2026 |
| `RAP business events` (Business events of the RAP model)                                                                        | REST     | OAuth 2.0 client credentials, X.509 certificate | Business events (not signed) | Product/material master, Production order | checked in the vendor documentation, 24/10/2026 |

**Notes**

- `MATMAS`: SERDAT is the ALE serialisation message, not a serial number IDoc; serial numbers come through the OData APIs. ALE distribution sends MATMAS through change pointers whenever a material changes.
- `RAP business events`: Through SAP Event Mesh or Advanced Event Mesh; thin events, the middleware reads the data afterwards.

**Import presets: SAP serial number list** (`sap-serial-numbers`): A list of serial numbers from SAP S/4HANA as a middleware assembles it from the serial number API or the goods receipt from production. Assumes that the battery model's model identifier in BatteryPass is the SAP material number. The posting date of the goods receipt stands in for the manufacturing date; the plant stays unmapped (choose the facility in the import options).

| Column in the export                               | Field in BatteryPass                                     |
| -------------------------------------------------- | -------------------------------------------------------- |
| `Material` (also Product, Materialnummer, Produkt) | Model identifier / SKU `identification.model_identifier` |
| `SerialNumber` (also Serial Number, Serialnummer)  | Serial number `identification.serial_number`             |
| `PostingDate` (also Posting Date, Buchungsdatum)   | Manufacturing date `identification.manufacturing_date`   |

**Import presets: Generic CSV file** (`generic-csv`): For any ERP and for files a middleware writes itself: GTIN, serial number, manufacturing date, facility (name or GLN), model version and battery status, with German and English column names.

| Column in the export                                          | Field in BatteryPass                                      |
| ------------------------------------------------------------- | --------------------------------------------------------- |
| `GTIN` (also EAN, GTIN-13, GTIN-14)                           | GTIN (GS1) `identification.gtin`                          |
| `Serial number` (also Seriennummer, serial_number)            | Serial number `identification.serial_number`              |
| `Manufacturing date` (also Herstelldatum, manufacturing_date) | Manufacturing date `identification.manufacturing_date`    |
| `Facility` (also Produktionsstätte, Facility GLN, Werk-GLN)   | Place of manufacture `identification.manufacturing_place` |
| `Model version` (also Modellversion, model_version)           | Model version `model_version`                             |
| `Battery status` (also Batteriestatus, battery_status)        | Battery status `identification.battery_status`            |

## Workflows

- [Units from production](https://passport.kabin.sh/docs/en/integrations/workflows/units-from-production.md): Serial numbers from the production confirmation or goods receipt are staged as an import; members review, commit and approve before any passport appears. Key scopes: import
- [Passport links back into the ERP](https://passport.kabin.sh/docs/en/integrations/workflows/passport-links-to-erp.md): The middleware follows the change feed and writes the GS1 Digital Link and the passport status to the serial number record in the ERP, so labels and delivery papers carry it. Key scopes: read
- [Condition data from BMS and service](https://passport.kabin.sh/docs/en/integrations/workflows/condition-from-bms.md): A battery management system or a service tool reports measurements such as capacity fade or cycles; BatteryPass accepts newer measurements and publishes according to the organisation's policy. Key scopes: read, condition
- [Returns and repairs as lifecycle events](https://passport.kabin.sh/docs/en/integrations/workflows/returns-and-repairs.md): Completed repairs, inspections and component replacements from service or return orders appear as events in the unit's history. Key scopes: read, condition
- [Product change leads to a new model version](https://passport.kabin.sh/docs/en/integrations/workflows/product-change.md): A change to the product master in the ERP triggers a notification; a member creates a new model version in BatteryPass. Declared data is never written automatically. Key scopes: read
