Status

Owner
Stakeholders
Jira Request ID

Jira Development ID

High- Level Specification

Implementing SystemS4 HANA
Invoked by/InvokesLink 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


Functional Overview

This Functional Specification describes the Outbound Delivery Interface between SAP S/4HANA and CPI using SAP standard OData API API_OUTBOUND_DELIVERY_SRV_0002. 

Scope and Objectives

The interface covers all outbound deliveries created or updated in S/4HANA that are relevant for transmission to 3PL systems.

Process Flow Diagram

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

Assumptions

N/A

Dependencies

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


Security, Integrity and Controls

To detail the security requirements for processing this object, any data integrity issues associated with the object and the teams that will be responsible for processing the object, i.e. authorization/roles required to who can execute the interface, encryption requirement, etc.

Configuration Requirements

Specify the configuration requirements for this object. Like in case of substitution/ routine specify the configuration needed

Special Requirements

Specify any special requirements or considerations that may impact the interface based on specific locations, regulatory compliance or system limitations. Clearly outline requirements e.g. localization rules for countries like China

If the interface interacts with third-party systems such as Icertis, describe any additional integration, security or authentication considerations that must be taken into account.


Design Rationale

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:

FieldData TypeDescriptionMandatoryKEY
VSTELlike LIKP-VSTELShipping pointXX
LFARTlike LIKP-LFARTDelivery typeXX

EVENTCHAR 10Event X
APICHAR 50API to be used


The following standard events are triggered whenever there are changes in Outbound Delivery as documented in Event References:

  • Outbound delivery created
  • Outbound delivery changed
  • Outbound delivery deleted
  • Outbound delivery block changed
  • Outbound delivery picking status changed
  • Outbound delivery packing status changed
  • Outbound delivery GI status changed
  • Outbound delivery Item Created
  • Outbound delivery Item Changed
  • Outbound delivery Item Deleted

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. 

API Use


API_OUTBOUND_DELIVERY_SRV_0002 or API_CUSTOMER_RETURNS_DELIVERY_SRV_0002 will be consumed if the criteria described in the Processing logic section is met

The following information should be retrieved for the document (LIKP-VBELN) using the following services:


  • API_OUTBOUND_DELIVERY_SRV_0002 : Retrieve Single Outbound Delivery Including All Outbound Delivery Items 

Example:

GET <host>/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV;v=2/A_OutbDeliveryHeader(DeliveryDocument='80000001')?$expand=to_DeliveryDocumentItem HTTP/1.1
  • API_CUSTOMER_RETURNS_DELIVERY_SRV_0002: Retrieve a single customer returns delivery including all customer returns delivery items:

Example: 

GET <host>/sap/opu/odata/sap/API_CUSTOMER_RETURNS_DELIVERY_SRV;v=2/A_ReturnsDeliveryHeader(DeliveryDocument='84000001')?$expand=to_DeliveryDocumentItem HTTP/1.1


Data Structure

Fields from the standard API will be used.

Processing Logic

1) 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:

      • Interface is activated: Check 3PL assignment table included in with ORG_TYPE = VSTEL, ORG_VALUE=LIKP-VSTEL and DOC_TYPE="DELIVERY". If there is an entry, and the field INTERFACE_ACT = X, retrieve the 3PL assigned and continue to next check, otherwise the delivery is Not relevant for transmission.
      • Check the custom table DELIVERIES_3PL with LIKP-VSTEL, LIKP-LFART and the event raised. If there is an entry the event should be published for consumption and the API detailed in that entry should be used to extract the data. 

2) If previous step is successful, an entry should be logged into the monitoring table to trace the correct transmission to the 3PL. This table is detailed in .

DOC_TYPE=DELIVERY

DOC_ID= LIKP-VBELN

DATE_SENT = System date

TIME_SENT = System time

If an entry exists for the DOC_TYPE, it should be updated with the current DATE_SENT and TIME_SENT.

Interface Alert & Monitoring

Monitoring will be handled by and

Language Requirements

N/A

User Interface Requirements

DELIVERIES_3PL table should be included in the Configuration Dashboard  and should be visible by business users. 
 

Sequencing

Please describe delivery requirements driven by message sequencing, i.e. specific order, impact of disruption of sequence, are duplicates allowed, etc.


Volumetrics

Average: 85 documents per day


Performance Consideration

Specify if there are any specific performance factors that need to be taken into consideration during development i.e. interface must be able to handle 100 posting per-hour, etc.

Error Handling

Error handling should be don at AIF level, if there is an error sending the data to the 3PL, the interface should be retriggered.


Testing

How to Test

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.

Test Conditions and Expected Results

IDConditionExpected Results
1Create different delivery types (Customer returns, Outbound delivery)Send at the defined Event with the API retrieved from the Custom table
2Change delivery documentsInformation is sent according to the set up in the custom table
3Deletion of documentsNotification is sent to CPI through an event

Test Considerations/Dependencies

List any considerations essential for application test planning (e.g., test this before ABC along with DEF separate from GHI). If the development encompasses a user interface, explain how to test it. List any insights as to how this component could be tested the most efficiently.


Other Information


Development Details

Package

Package NameParent Package




Other Development Objects

Object TypeObject NamePurpose/High Level LogicDesign Rationale Reference









Appendix

See also

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.


Change log