| Status | |
|---|---|
| Owner | |
| Stakeholders | |
| Jira Request ID | |
| Jira Development ID |
| Implementing System | S4 HANA |
|---|---|
| Invoked by/Invokes | Link to any Integration Process spec which is related to this System Interface, e.g. because it is invoking this interface, or because this interface is sending data to it. |
| 06.10.01.01. Manage 3PL Warehouse Interfaces |
This Functional Specification describes the outbound delivery interface between SAP S/4HANA and Third-Party Logistics providers (3PLs), using SAP Integration Suite (CPI) and the standard OData service API_OUTBOUND_DELIVERY_SRV_0002.
The purpose of this interface is to transmit outbound delivery data from SAP S/4HANA to external 3PL systems to support warehouse execution activities such as picking, packing, and goods issue processing.
Not all outbound deliveries are transmitted; only deliveries that meet specific business criteria are in scope. These criteria are defined through configuration and business rules, such as shipping point, delivery type, and 3PL assignment.
Outbound deliveries may be transmitted to the 3PL even if they are not yet ready for picking. In scenarios where batch determination has not been completed, the outbound delivery is sent with a shipment block indicator. This allows the 3PL to receive early visibility of the delivery while clearly indicating that the delivery is not yet released for picking activities.
Once batch assignment is completed in SAP S/4HANA, the shipment block is removed. A subsequent update of the outbound delivery is then transmitted to the 3PL, informing that the delivery is now released and can be processed for picking. This approach ensures alignment between SAP and the 3PL on delivery readiness while enabling early planning and coordination.
The interface covers all outbound deliveries created or updated in S/4HANA that are relevant for transmission to 3PL systems.

Step | Description | Comment |
|---|---|---|
1 | Delivery created/updated in S/4HANA | |
2 | S/4 raises an internal event. | |
3 | The standard business event will be consumed in S/4HANA through business event consumption and the following checks will be performed accordingly | |
3.1 | System checks the 3PL assignment table | To determine if the interface is active and retrieve the 3PL assigned |
3.2 | System checks the DELIVERIES_3PL table | To determine if the delivery type, shipping point and event is relevant for transmission |
4 | Relevant custom event is published to SAP Event Mesh | If previous steps are successful |
5 | S/4 updates Monitoring Table | Using System date and time |
6 | CPI consumes the event and retrieves full delivery using API | CPI will also get the 3PL partner from the 3PL assignment table for routing purposes |
7 | 3PL consumes and send an Ack back | |
8 | S/4 updates Monitoring Table | for the Ack received |
N/A
For tracing the transmission in the monitoring table
The table defined in this development should be included in the configuration Dashboard for 3PLs.
3PL assignment and activation table
Standard authorizations apply as FIORI app Change outbound deliveries.
N/A
N/A
APIs to be consumed:
API_OUTBOUND_DELIVERY_SRV_0002 – Outbound Delivery (OData service)
API_CUSTOMER_RETURNS_DELIVERY_SRV_0002 - Customer returns Deliveries (OData service)
Outbound deliveries will be relevant for transmission only for specific shipping points (the ones related to a 3PL), delivery types and at certain event.
This criteria may change between 3PLs so a custom table is needed to save this parameters and should be checked by Event Mesh before publishing the event for consumption.
Parameter table structure:
| Field | Data Type | Description | Mandatory | KEY |
|---|---|---|---|---|
| VSTEL | like LIKP-VSTEL | Shipping point | X | X |
| LFART | like LIKP-LFART | Delivery type | X | X |
| EVENT | CHAR 10 | Event | X | |
| API | CHAR 50 | API to be used | ||
The following standard events are triggered whenever there are changes in Outbound Delivery as documented in Event References:
Since derived events and metadata extension is either not possible or not useful for the requirement, the following events will be consumed in S/4HANA through Business Event Consumption with the custom filter logic and a custom event will be published to Event Mesh with additional information.
The following information should be retrieved for the document (LIKP-VBELN) using the following services:
Example:
GET <host>/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV;v=2/A_OutbDeliveryHeader(DeliveryDocument='80000001')?$expand=to_DeliveryDocumentItem HTTP/1.1Example:
GET <host>/sap/opu/odata/sap/API_CUSTOMER_RETURNS_DELIVERY_SRV;v=2/A_ReturnsDeliveryHeader(DeliveryDocument='84000001')?$expand=to_DeliveryDocumentItem HTTP/1.1Fields from the standard API will be used.
1) Relevance and activation checks
For each outbound delivery considered for transmission, the system evaluates whether the delivery is relevant for a 3PL interface based on configuration and business rules.
The following checks are performed sequentially:
Every time a new event is raised from a Delivery document, the event is consumed via business event consumption and a subsequence event should be published for transmission if the following criteria is met:
If an entry exists and the field INTERFACE_ACT = ‘X’, the delivery is considered relevant for transmission and the assigned 3PL is determined.
If no active entry is found, the delivery is considered not relevant for transmission and no further processing is performed.
The custom table DELIVERIES_3PL is validated using: Shipping point (LIKP-VSTEL), Delivery type (LIKP-LFART), Event type.
If a matching entry exists, the delivery is eligible for transmission and the API specified in the configuration entry is used to extract the outbound delivery data.
If no entry is found, the delivery is not transmitted.
2) Monitoring and traceability
If the delivery is successfully identified as relevant for transmission, an entry is created or updated in the outbound monitoring table to ensure traceability of the transmission to the 3PL. The monitoring table structure is defined in .
DOC_TYPE=DELIVERY
DOC_ID= LIKP-VBELN
DATE_SENT = System date
TIME_SENT = System time
If an entry already exists for the same DOC_TYPE and DOC_ID, the record is updated with the current DATE_SENT and TIME_SENT to reflect the latest transmission.
Interface Alert & Monitoring
Monitoring will be handled by and
N/A
DELIVERIES_3PL table should be included in the Configuration Dashboard and should be visible by business users.
N/A
Average: 85 documents per day
N/A
Error handling should be don at AIF level, if there is an error sending the data to the 3PL, the interface should be retriggered.
Please provide some guidance and/or test data to help the developer unit test the interface. Please include both positive and negative testing (to validate error situations handling)
The developer will need to test repeatedly, so where appropriate provide instructions to reverse the actions performed so the test may be run again, or explain how to create new input data to the test. In particular, the developer will need logons for test users representing the various roles within the approval process.
| ID | Condition | Expected Results |
|---|---|---|
| 1 | Create an outbound delivery for a relevant Shipping Point (VSTEL) where interface is active (ERP-845: DOC_TYPE=DELIVERY, INTERFACE_ACT=X) and DELIVERIES_3PL has an entry for (VSTEL, LFART, Event=CREATE) | Event is published for transmission. CPI extracts data using the API specified in DELIVERIES_3PL. Monitoring entry is created/updated with DOC_TYPE=DELIVERY, DOC_ID=VBELN, DATE_SENT/TIME_SENT. |
| 2 | Create a delivery for a Shipping Point (VSTEL) with no active interface (ERP-845 missing or INTERFACE_ACT ≠ X) | Delivery is not relevant. No transmission event is published. |
| 3 | Create a delivery for an active Shipping Point but no matching DELIVERIES_3PL rule (missing LFART and/or Event configuration) | No transmission event is published. Delivery is not sent. |
| 3 | Create different delivery types (e.g., Outbound Delivery, Customer Returns) where each type has a different DELIVERIES_3PL configuration/API | For each delivery type, the correct event is published and CPI uses the correct API as per DELIVERIES_3PL. Monitoring entry created/updated accordingly. |
| 4 | Change an existing relevant outbound delivery (Event=CHANGE), with matching DELIVERIES_3PL rule | Update event is published. CPI sends updated payload using configured API. Monitoring entry for same DOC_ID is updated with latest DATE_SENT/TIME_SENT. |
| 5 | Shipment block scenario – initial send: Create/Change delivery where batches are not assigned yet and shipment block indicator is set | Delivery is transmitted with shipment block indicator. 3PL receives it as not released for picking. Monitoring updated. |
| 6 | Shipment block scenario – release: Assign batches in SAP and shipment block is removed; trigger subsequent update | Update event is transmitted reflecting released status. 3PL can proceed with picking. Monitoring updated with new DATE_SENT/TIME_SENT. |
| 7 | Deletion of delivery document (or delivery cancelled in SAP as per process) | A deletion/cancellation notification event is published to CPI (as designed). 3PL receives the deletion/cancellation signal. Monitoring updated. |
| 8 | Multi-3PL routing: create deliveries for two different relevant shipping points assigned to different 3PLs | Each delivery is routed to the correct assigned 3PL as per ERP-845 configuration. Monitoring shows correct DOC_ID and timestamps. |
The solution must be tested in conjunction with the developments listed in the Dependencies section.
End-to-end validation will include the participation of the relevant 3PL partners to ensure the completeness of the outbound delivery transmission flow across ERP, middleware, and target logistics platforms.
| Package Name | Parent Package |
|---|---|
Other Development Objects
| Object Type | Object Name | Purpose/High Level Logic | Design Rationale Reference |
|---|---|---|---|
Insert links and references to other documents which are relevant when trying to understand this decision and its implications. Other decisions are often impacted, so it's good to list them here with links. Attachments are also possible but dangerous as they are static documents and not updated by their authors.
