| Status | Approved |
|---|---|
| Owner | ABOLAJI-ext, Luqman |
| Stakeholders | |
| Jira Request ID | ERP-1424 - Getting issue details... STATUS |
| Jira Development ID | ERP-2324 - Getting issue details... STATUS |
High- Level Specification
| Implementing System | SAP S/4HANA |
|---|---|
| Invoked by/Invokes | ERP-2325 OrderChange Message from Elemica - Integration Process |
| Business Process Reference | 02.04.02.01. Manage Standard Sales Order |
Functional Overview
The functional design of the system interface defines the API to be provided or consumed.
EDI customers sends their Sales Order change message through Elemica to Syensqo. Elemica sends the OrderChange XML to SAP CPI which a custom API which compares the OrderChange fields (or a subset of) with the existing Sales Order fields (or a subset of) and identifies the fields that the OrderChange message is requesting to change. The Sales Order and the fields where new values are sent in the OrderChange message are then sent to the Order Modification Fiori App for CSR review and approval / rejection. A notification is also sent to the CSR on the sales order with the changes requested by the customer.
The purpose of this functional specification is to create the custom API for the identification of the changes to a sales order requested by the customer and sending notification of the changes to the CSR. This will be done by using
- data directly available in the Elemica XML
- data derived from S/4HANA based on data in the Elemica XML (e.g. using the Purchase Order Number in Elemica XML to find the Sales Order Number in S/4HANA)
- data directly pulled from S/4HANA (e.g. Sales Order Number and specific sales order fields)
Scope and Objectives
This System Interface, a custom implementation in SAP S/4HANA,
- consumes the OrderChange data from SAP CPI
- maps this data into a structure to compare with existing sales order in SAP S/4HANA
- transform some data OrderChange message from SAP CPI into the Sales Order structure in S/4HANA
- performs lookup of specified data (as applicable) in S/4HANA
- stage certain data from OrderChange message from SAP CPI into a S/4HANA custom table
The standard SAP Sales Order Change API is unable to support the above functions, hence the need for a custom API.
Process Flow Diagram
Step | Description | Comment |
|---|---|---|
1 | Elemica sends OrderChange message to SAP CPI via API Management |
|
2 | SAP CPI receives the OrderChange XML message from Elemica and maps to SAP Sales Order in S/4HANA. To identify the fields on the sales order the OrderChange message wants to make, SAP CPI calls the custom API | This is covered in Integration Process functional specification ERP-2325 OrderChange Message from Elemica - Integration Process |
3 | The Sales Order to be changed in SAP S/4HANA is identified based on the custom API calling SAP S/4HANA. The API also collates the fields in the sales order than needs to be changed and sends this to both the Order Modification Fiori App and as a Fiori Launchpad notification to the CSR | Order Modification Fiori App to be built in ERP-2326 New Order Modification Fiori App |
Assumptions
- The custom Sales Order Change API will be called from SAP CPI and be able to lookup data from SAP S/4HANA to feed the target structure of the sales order
- The source object and S/4HANA System target field mappings, including custom fields, will be updated based on mapping requirements in S/4HANA System.
- The Custom API should be able to map all source and target mappings to successfully create a sales order
- The custom API should be able to send Fiori launchpad notifications to CSR identified on the sales order
Dependencies
- All configurations in S/4HANA from where the custom API should look up values should already be implemented before the interface is deployed.
- Connection between SAP CPI and S/4HANA already set up
- Required master data in S/4HANA already loaded
Security, Integrity and Controls
- Required authorisations to execute the custom API need to be defined.
- Existing secure connectivity for communication between SAP S/4HANA and SAP CPI will be applied.
Configuration Requirements
N/A
Special Requirements
N/A
Design Rationale
API Use
Custom API based on API_SALES_ORDER_SRV_0001
Data Structure
The following fields will be used to provide the required data structure of the interface:
| A_SalesOrderHeader | 1 | ||||
| DocumentIdentifier | N | String | |||
| DocumentIdentifierDateTime | N | DateTime | |||
| RequestingDocumentIdentifier | N | String | |||
| RequestingDocumentDateTime | N | DateTime | |||
| SenderPartnerName | Y | String | |||
| SenderDUNS | Y | String | |||
| SenderContactName | N | String | |||
| SenderContactDescription | N | String | |||
| SenderTelephoneNumberTelecomCountryCode | N | String | |||
| SenderTelephoneNumberTelecomAreaCode | N | String | |||
| SenderTelephoneNumberPhoneNumber | N | String | |||
| SenderFaxNumberTelecomCountryCode | N | String | |||
| SenderFaxNumberTelecomAreaCode | N | String | |||
| SenderFaxNumberPhoneNumber | N | String | |||
| SenderEmailAddress | N | String | |||
| SenderAlternativeCommunicationMethod | N | String | |||
| SenderAddressLine | N | String | |||
| SenderCityName | N | String | |||
| SenderStateProvince | N | String | |||
| SenderPostalCode | N | String | |||
| SenderPostalCountry | N | String | |||
| SenderLocationCode | N | String | |||
| SenderTaxIdentifierNumber | N | String | |||
| SenderJurisdiction | N | String | |||
| SenderTaxCertificateType | N | String | |||
| SenderTaxCertificateNumber | N | string | |||
| SenderTaxBasis | N | string | |||
| SenderTaxRate | N | string | |||
| SenderSenderURL | N | string | |||
| ReceiverPartnerName | Y | string | |||
| ReceiverDUNS | Y | String | |||
| ReceiverContactName | N | String | |||
| ReceiverContactDescription | N | String | |||
| ReceiverTelephoneNumberTelecomCountryCode | N | String | |||
| ReceiverTelephoneNumberTelecomAreaCode | N | String | |||
| ReceiverTelephoneNumberPhoneNumber | N | String | |||
| ReceiverFaxNumberTelecomCountryCode | N | String | |||
| ReceiverFaxNumberTelecomAreaCode | N | String | |||
| ReceiverFaxNumberPhoneNumber | N | String | |||
| ReceiverEmailAddress | N | String | |||
| ReceiverAlternativeCommunicationMethod | N | String | |||
| ReceiverAddressLine | N | String | |||
| ReceiverCityName | N | String | |||
| ReceiverStateProvince | N | String | |||
| ReceiverPostalCode | N | String | |||
| ReceiverPostalCountry | N | String | |||
| ReceiverLocationCode | N | String | |||
| ReceiverTaxIdentifierNumber | N | String | |||
| ReceiverJurisdiction | N | String | |||
| ReceiverTaxCertificateType | N | String | |||
| ReceiverTaxCertificateNumber | N | String | |||
| ReceiverTaxBasis | N | String | |||
| ReceiverTaxRate | N | String | |||
| ReceiverSenderURL | N | String | |||
| PurchaseOrderTypeCode | Y | String | |||
| CustomerPurchaseOrder | Customer reference number that the customer uses to uniquely identify a purchasing document (for example, a sales inquiry or a purchase order) | Y | String | ||
| CustomerPurchaseOrderDate | Y | DateTime | |||
| TransactionCurrency | The currency that applies to the sales order | N | String | ||
| ContractNumber | Customer reference number that the customer uses to uniquely identify a purchasing document (for example, a sales inquiry or a purchase order) | N | String | ||
| LanguageCode | N | String | |||
| RevisionNumber | N | String | |||
| ReleaseNumber | N | String | |||
| IncotermsClassification | Commonly used trading terms that comply with the standards established by the International Chamber of Commerce (ICC) | N | String | ||
| IncotermsLocation1 | Provides additional information for the primary Incoterm | N | String | ||
| CustomerPaymentTerms | N | String | |||
| DiscountPercentage | N | String | |||
| DiscountAmount | N | String | |||
| DiscountDaysDue | N | String | |||
| DiscountsDueDate | N | DateTime | |||
| DeferredAmount | N | String | |||
| DeferedDueDate | N | DateTime | |||
| PercentDeferredPayable | N | String | |||
| Penalty | N | String | |||
| ShipWithPurchaseOrder | N | String | |||
| CountryOfFinalDestination | N | String | |||
| MarketPlaceIdentifier | N | String | |||
| MarketPlaceDocumentIdentifier | N | String | |||
| MarketPlaceReferenceItem | N | String | |||
| MarketPlaceSellerIdentifier | N | String | |||
| InvoiceCommunicationMode | N | String | |||
| BillingScheduleCode | N | String | |||
| BuyerPartnerName | The customer who orders the goods or services. The sold-to party is contractually responsible for sales orders. | Y | String | ||
| BuyerPartnerCode | Y | String | |||
| BuyerContactName | N | String | |||
| BuyerContactDescription | N | String | |||
| SellerPartnerName | N | String | |||
| SellerPartnerCode | Y | String | |||
| SellerContactName | N | String | |||
| SellerContactDescription | N | String | |||
| ShiptoPartnerName | N | String | |||
| ShipToPartnerCode | Y | String | |||
| PayerPartnerName | N | String | |||
| PayerPartnerCode | N | String | |||
| BilltoPartnerName | N | String | |||
| BillToPartnerCode | N | String | |||
| ShipperPartnerName | N | String | |||
| ShipperPartnerCode | N | String | |||
| ShipFromPartnerName | N | String | |||
| ShipFromPartnerCode | N | String | |||
| CarrierPartnerName | N | String | |||
| CarrierPartnerCode | N | String | |||
| BuyerTelephoneNumberTelecomCountryCode | N | String | |||
| BuyerTelephoneNumberTelecomAreaCode | N | String | |||
| BuyerTelephoneNumberPhoneNumber | N | String | |||
| BuyerFaxNumberTelecomCountryCode | N | String | |||
| BuyerFaxNumberTelecomAreaCode | N | String | |||
| BuyerFaxNumberPhoneNumber | N | String | |||
| BuyerEmailAddress | N | String | |||
| BuyerAlternativeCommunicationMethod | N | String | |||
| BuyerAddressLine | N | String | |||
| BuyerCityName | N | String | |||
| BuyerStateProvince | N | String | |||
| BuyerPostalCode | N | String | |||
| BuyerPostalCountry | N | String | |||
| BuyerLocationCode | N | String | |||
| BuyerExternalReference | N | String | |||
| BuyerTaxIdentifierNumber | N | String | |||
| BuyerJurisdiction | N | String | |||
| BuyerTaxCertificateType | N | String | |||
| BuyerTaxCertificateNumber | N | String | |||
| BuyerTaxBasis | N | String | |||
| BuyerTaxRate | N | String | |||
| BuyerSenderURL | N | String | |||
| ShipToTelephoneNumberTelecomCountryCode | N | String | |||
| ShipToTelephoneNumberTelecomAreaCode | N | String | |||
| ShipToTelephoneNumberPhoneNumber | N | String | |||
| ShipToFaxNumberTelecomCountryCode | N | String | |||
| ShipToFaxNumberTelecomAreaCode | N | String | |||
| ShipToFaxNumberPhoneNumber | N | String | |||
| ShipToEmailAddress | N | String | |||
| ShipToAlternativeCommunicationMethod | N | String | |||
| ShipToAddressLine | N | String | |||
| ShipToCityName | N | String | |||
| ShipToStateProvince | N | String | |||
| ShipToPostalCode | N | String | |||
| ShipToPostalCountry | N | String | |||
| ShipToLocationCode | N | String | |||
| ShipToExternalReference | N | String | |||
| ShipToTaxIdentifierNumber | N | String | |||
| ShipToJurisdiction | N | String | |||
| ShipToTaxCertificateType | N | String | |||
| ShipToTaxCertificateNumber | N | String | |||
| ShipToTaxBasis | N | String | |||
| ShipToTaxRate | N | String | |||
| ShipToSenderURL | N | String | |||
| PayerTelephoneNumberTelecomCountryCode | N | String | |||
| PayerTelephoneNumberTelecomAreaCode | N | String | |||
| PayerTelephoneNumberPhoneNumber | N | String | |||
| PayerFaxNumberTelecomCountryCode | N | String | |||
| PayerFaxNumberTelecomAreaCode | N | String | |||
| PayerFaxNumberPhoneNumber | N | String | |||
| PayerEmailAddress | N | String | |||
| PayerAlternativeCommunicationMethod | N | String | |||
| PayerAddressLine | N | String | |||
| PayerCityName | N | String | |||
| PayerStateProvince | N | String | |||
| PayerPostalCode | N | String | |||
| PayerPostalCountry | N | String | |||
| PayerLocationCode | N | String | |||
| PayerExternalReference | N | String | |||
| PayerTaxIdentifierNumber | N | String | |||
| PayerJurisdiction | N | String | |||
| PayerToTaxCertificateType | N | String | |||
| PayerTaxCertificateNumber | N | String | |||
| PayerTaxBasis | N | String | |||
| PayerTaxRate | N | String | |||
| PayerSenderURL | N | String | |||
| AccountHolderName | N | String | |||
| AccountNumber | N | String | |||
| FinancialInstitution | N | String | |||
| FinancialInstitutionDFINumber | N | String | |||
| CreditCardNumber | N | String | |||
| CreditCardType | N | String | |||
| CreditCardExpirationDate | N | DateTime | |||
| BillToTelephoneNumberTelecomCountryCode | N | String | |||
| BillToTelephoneNumberTelecomAreaCode | N | String | |||
| BillToTelephoneNumberPhoneNumber | N | String | |||
| BillToFaxNumberTelecomCountryCode | N | String | |||
| BillToFaxNumberTelecomAreaCode | N | String | |||
| BillToFaxNumberPhoneNumber | N | String | |||
| BillToEmailAddress | N | String | |||
| BillToAlternativeCommunicationMethod | N | String | |||
| BillToAddressLine | N | String | |||
| BillToCityName | N | String | |||
| BillToStateProvince | N | String | |||
| BillToPostalCode | N | String | |||
| BillToPostalCountry | N | String | |||
| BillToLocationCode | N | String | |||
| BillToExternalReference | N | String | |||
| BillToTaxIdentifierNumber | N | String | |||
| BillToJurisdiction | N | String | |||
| BillToTaxCertificateType | N | String | |||
| BillToTaxCertificateNumber | N | String | |||
| BillToTaxBasis | N | String | |||
| BillToTaxRate | N | String | |||
| BillToSenderURL | N | String | |||
| ShipFromTelephoneNumberTelecomCountryCode | N | String | |||
| ShipFromTelephoneNumberTelecomAreaCode | N | String | |||
| ShipFromTelephoneNumberPhoneNumber | N | String | |||
| ShipFromFaxNumberTelecomCountryCode | N | String | |||
| ShipFromFaxNumberTelecomAreaCode | N | String | |||
| ShipFromFaxNumberPhoneNumber | N | String | |||
| ShipFromEmailAddress | N | String | |||
| ShipFromAlternativeCommunicationMethod | N | String | |||
| ShipFromAddressLine | N | String | |||
| ShipFromCityName | N | String | |||
| ShipFromStateProvince | N | String | |||
| ShipFromPostalCode | N | String | |||
| ShipFromPostalCountry | N | String | |||
| ShipFromLocationCode | N | String | |||
| ShipFromExternalReference | N | String | |||
| ShipFromTaxIdentifierNumber | N | String | |||
| ShipFromJurisdiction | N | String | |||
| ShipFromTaxCertificateType | N | String | |||
| ShipFromTaxCertificateNumber | N | String | |||
| ShipFromTaxBasis | N | String | |||
| ShipFromTaxRate | N | String | |||
| ShipFromSenderURL | N | String | |||
| CarrierTelephoneNumberTelecomCountryCode | N | String | |||
| CarrierTelephoneNumberTelecomAreaCode | N | String | |||
| CarrierTelephoneNumberPhoneNumber | N | String | |||
| CarrierFaxNumberTelecomCountryCode | N | String | |||
| CarrierFaxNumberTelecomAreaCode | N | String | |||
| CarrierFaxNumberPhoneNumber | N | String | |||
| CarrierEmailAddress | N | String | |||
| CarrierAlternativeCommunicationMethod | N | String | |||
| CarrierAddressLine | N | String | |||
| CarrierCityName | N | String | |||
| CarrierStateProvince | N | String | |||
| CarrierPostalCode | N | String | |||
| CarrierPostalCountry | N | String | |||
| CarrierLocationCode | N | String | |||
| CarrierExternalReference | N | String | |||
| CarrierTaxIdentifierNumber | N | String | |||
| CarrierJurisdiction | N | String | |||
| CarrierTaxCertificateType | N | String | |||
| CarrierTaxCertificateNumber | N | String | |||
| CarrierTaxBasis | N | String | |||
| CarrierTaxRate | N | String | |||
| CarrierSenderURL | N | String | |||
| ShipperTelephoneNumberTelecomCountryCode | N | String | |||
| ShipperTelephoneNumberTelecomAreaCode | N | String | |||
| ShipperTelephoneNumberPhoneNumber | N | String | |||
| ShipperFaxNumberTelecomCountryCode | N | String | |||
| ShipperFaxNumberTelecomAreaCode | N | String | |||
| ShipperFaxNumberPhoneNumber | N | String | |||
| ShipperEmailAddress | N | String | |||
| ShipperAlternativeCommunicationMethod | N | String | |||
| ShipperAddressLine | N | String | |||
| ShipperCityName | N | String | |||
| ShipperStateProvince | N | String | |||
| ShipperPostalCode | N | String | |||
| ShipperPostalCountry | N | String | |||
| ShipperLocationCode | N | String | |||
| ShipperExternalReference | N | String | |||
| ShipperTaxIdentifierNumber | N | String | |||
| ShipperJurisdiction | N | String | |||
| ShipperTaxCertificateType | N | String | |||
| ShipperTaxCertificateNumber | N | String | |||
| ShipperTaxBasis | N | String | |||
| ShipperTaxRate | N | String | |||
| ShipperSenderURL | N | String | |||
| A_SalesOrderText | 1 to many | ||||
| CustomerRequiredInstructions | N | String | |||
| ShipperInstructions | N | String | |||
| ConsigneeInstructions | N | String | |||
| CarrierInstructions | N | String | |||
| ImportInstruction | N | String | |||
| CustomerServiceInstructions | N | String | |||
| RoutingInstruction | N | String | |||
| A_SalesOrderItem | 1 | ||||
| LineItemNumber | N | String | |||
| PurchaseOrderLineItemNumber | N | String | |||
| LineItemHandlingInstruction | N | String | |||
| MaterialByCustomer | Y | String | |||
| MaterialByCustomerDescription | N | String | |||
| ProductDescription | N | String | |||
| ProductGradeDescription | N | String | |||
| Material | M | String | |||
| MaterialDescription | N | String | |||
| ProductDescription | N | String | |||
| ProductGradeDescription | N | String | |||
| CustomerPurchaseOrderNumber | N | String | |||
| ReferenceItem | N | String | |||
| RequestedQuantity | The number or volume of materials specified for an item | N | String | ||
| RequestedQuantityISOUnit | N | String | |||
| PackagingQuantity | N | String | |||
| PackagingQuantityISOUnit | N | String | |||
| EngineeringChangeOrderIdentifier | N | String | |||
| BatchNumber | N | String | |||
| CountryOfOriginCode | N | String | |||
| IncotermsClassification | N | String | |||
| IncotermsLocation1 | N | String | |||
| TransportMethodCode | N | String | |||
| LineItemPurposeCode | N | String | |||
| BalanceItemFlag | N | String | |||
| ActionRequest | N | String | |||
| DeliveryTolerancesLowerLimit | N | String | |||
| DeliveryTolerancesUpperLimit | N | String | |||
| DeliveryTolerancesUnitofMeasure | N | String | |||
| ItemShiptoPartnerName | N | String | |||
| ItemShipToPartnerCode | Y | String | |||
| ItemBilltoPartnerName | N | String | |||
| ItemBillToPartnerCode | N | String | |||
| ItemShipperPartnerName | N | String | |||
| ItemShipperPartnerCode | N | String | |||
| ItemShipFromPartnerName | N | String | |||
| ItemShipFromPartnerCode | N | String | |||
| ItemCarrierPartnerName | N | String | |||
| ItemCarrierPartnerCode | N | String | |||
| ItemShipToTelephoneNumberTelecomCountryCode | N | String | |||
| ItemShipToTelephoneNumberTelecomAreaCode | N | String | |||
| ItemShipToTelephoneNumberPhoneNumber | N | String | |||
| ItemShipToFaxNumberTelecomCountryCode | N | String | |||
| ItemShipToFaxNumberTelecomAreaCode | N | String | |||
| ItemShipToFaxNumberPhoneNumber | N | String | |||
| ItemShipToEmailAddress | N | String | |||
| ItemShipToAlternativeCommunicationMethod | N | String | |||
| ItemShipToAddressLine | N | String | |||
| ItemShipToCityName | N | String | |||
| ItemShipToStateProvince | N | String | |||
| ItemShipToPostalCode | N | String | |||
| ItemShipToPostalCountry | N | String | |||
| ItemShipToLocationCode | N | String | |||
| ItemShipToExternalReference | N | String | |||
| ItemShipToTaxIdentifierNumber | N | String | |||
| ItemShipToJurisdiction | N | String | |||
| ItemShipToTaxCertificateType | N | String | |||
| ItemShipToTaxCertificateNumber | N | String | |||
| ItemShipToTaxBasis | N | String | |||
| ItemShipToTaxRate | N | String | |||
| ItemShipToSenderURL | N | String | |||
| ItemBillToTelephoneNumberTelecomCountryCode | N | String | |||
| ItemBillToTelephoneNumberTelecomAreaCode | N | String | |||
| ItemBillToTelephoneNumberPhoneNumber | N | String | |||
| ItemBillToFaxNumberTelecomCountryCode | N | String | |||
| ItemBillToFaxNumberTelecomAreaCode | N | String | |||
| ItemBillToFaxNumberPhoneNumber | N | String | |||
| ItemBillToEmailAddress | N | String | |||
| ItemBillToAlternativeCommunicationMethod | N | String | |||
| ItemBillToAddressLine | N | String | |||
| ItemBillToCityName | N | String | |||
| ItemBillToStateProvince | N | String | |||
| ItemBillToPostalCode | N | String | |||
| ItemBillToPostalCountry | N | String | |||
| ItemBillToLocationCode | N | String | |||
| ItemBillToExternalReference | N | String | |||
| ItemBillToTaxIdentifierNumber | N | String | |||
| ItemBillToJurisdiction | N | String | |||
| ItemBillToTaxCertificateType | N | String | |||
| ItemBillToTaxCertificateNumber | N | String | |||
| ItemBillToTaxBasis | N | String | |||
| ItemBillToTaxRate | N | String | |||
| ItemBillToSenderURL | N | String | |||
| ItemShipFromTelephoneNumberTelecomCountryCode | N | String | |||
| ItemShipFromTelephoneNumberTelecomAreaCode | N | String | |||
| ItemShipFromTelephoneNumberPhoneNumber | N | String | |||
| ItemShipFromFaxNumberTelecomCountryCode | N | String | |||
| ItemShipFromFaxNumberTelecomAreaCode | N | String | |||
| ItemShipFromFaxNumberPhoneNumber | N | String | |||
| ItemShipFromEmailAddress | N | String | |||
| ItemShipFromAlternativeCommunicationMethod | N | String | |||
| ItemShipFromAddressLine | N | String | |||
| ItemShipFromCityName | N | String | |||
| ItemShipFromStateProvince | N | String | |||
| ItemShipFromPostalCode | N | String | |||
| ItemShipFromPostalCountry | N | String | |||
| ItemShipFromLocationCode | N | String | |||
| ItemShipFromExternalReference | N | String | |||
| ItemShipFromTaxIdentifierNumber | N | String | |||
| ItemShipFromJurisdiction | N | String | |||
| ItemShipFromTaxCertificateType | N | String | |||
| ItemShipFromTaxCertificateNumber | N | String | |||
| ItemShipFromTaxBasis | N | String | |||
| ItemShipFromTaxRate | N | String | |||
| ItemShipFromSenderURL | N | String | |||
| ItemCarrierTelephoneNumberTelecomCountryCode | N | String | |||
| ItemCarrierTelephoneNumberTelecomAreaCode | N | String | |||
| ItemCarrierTelephoneNumberPhoneNumber | N | String | |||
| ItemCarrierFaxNumberTelecomCountryCode | N | String | |||
| ItemCarrierFaxNumberTelecomAreaCode | N | String | |||
| ItemCarrierFaxNumberPhoneNumber | N | String | |||
| ItemCarrierEmailAddress | N | String | |||
| ItemCarrierAlternativeCommunicationMethod | N | String | |||
| ItemCarrierAddressLine | N | String | |||
| ItemCarrierCityName | N | String | |||
| ItemCarrierStateProvince | N | String | |||
| ItemCarrierPostalCode | N | String | |||
| ItemCarrierPostalCountry | N | String | |||
| ItemCarrierLocationCode | N | String | |||
| ItemCarrierExternalReference | N | String | |||
| ItemCarrierTaxIdentifierNumber | N | String | |||
| ItemCarrierJurisdiction | N | String | |||
| ItemCarrierTaxCertificateType | N | String | |||
| ItemCarrierTaxCertificateNumber | N | String | |||
| ItemCarrierTaxBasis | N | String | |||
| ItemCarrierTaxRate | N | String | |||
| ItemCarrierSenderURL | N | String | |||
| ItemShipperTelephoneNumberTelecomCountryCode | N | String | |||
| ItemShipperTelephoneNumberTelecomAreaCode | N | String | |||
| ItemShipperTelephoneNumberPhoneNumber | N | String | |||
| ItemShipperFaxNumberTelecomCountryCode | N | String | |||
| ItemShipperFaxNumberTelecomAreaCode | N | String | |||
| ItemShipperFaxNumberPhoneNumber | N | String | |||
| ItemShipperEmailAddress | N | String | |||
| ItemShipperAlternativeCommunicationMethod | N | String | |||
| ItemShipperAddressLine | N | String | |||
| ItemShipperCityName | N | String | |||
| ItemShipperStateProvince | N | String | |||
| ItemShipperPostalCode | N | String | |||
| ItemShipperPostalCountry | N | String | |||
| ItemShipperLocationCode | N | String | |||
| ItemShipperExternalReference | N | String | |||
| ItemShipperTaxIdentifierNumber | N | String | |||
| ItemShipperJurisdiction | N | String | |||
| ItemShipperTaxCertificateType | N | String | |||
| ItemShipperTaxCertificateNumber | N | String | |||
| ItemShipperTaxBasis | N | String | |||
| ItemShipperTaxRate | N | String | |||
| ItemShipperSenderURL | N | String | |||
| A_SalesOrderItemText | 1 to many | ||||
| CustomerRequiredInstructions | N | String | |||
| ShipperInstructions | N | String | |||
| ConsigneeInstructions | N | String | |||
| CarrierInstructions | N | String | |||
| ImportInstruction | N | String | |||
| CustomerServiceInstructions | N | String | |||
| RoutingInstruction | N | String | |||
| A_SalesOrderItemPrElement | 1 | ||||
| PricePerUnit | N | String | |||
| PriceCurrencyCode | N | String | ||
| PriceBasis | N | String | ||
| PriceBasisUnitofMeasure | N | String | ||
| A_SalesOrderScheduleLine | 1 |
| |||
ScheduleDateRequestedDeliveryOn | N | DateTime | |||
ScheduleDateConfirmedPickUpOn | N | DateTime |
Calculation and Validation
eDocument mapping
| General | Syensqo XML (Intermediate Target) | SAP eDoc Standard Mapping (Source) | Custom Mapping (Source) | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| S-NR | Flow (SD/FI/MM/ALL) | Target Field | Target Field Details | Condition | Syensqo XML Node | Syensqo XML Field | SAP eDoc Standard Node | SAP eDoc Standard Field | Fixed Value | Custom Logic |
Processing Logic
- Receive OrderChange API
- Look up the sales order number of the change using the Purchase Order number in OrderChange API (see Sales Order Look Up Logic)
- If sales order is found, go to step 3
- if sales order is not found, generate error message ‘no sales order found for PO number’ and update in AIF. Follow Error Handling procedure
- For each line item (A_salesOrderItem_ PurchaseOrderLineItemNumber) on the OrderChange API, check if A_SalesOrderItem_ActionRequest = DELETED exists
- If yes – find the corresponding line item(s) on the sales order from 2a, extract Order Items View data and update Line Status as ‘DELETED’
- If A_SalesOrderItem_ActionRequest = DELETED does not exists, go to step 4.
4. For each line item (A_salesOrderItem_ PurchaseOrderLineItemNumber) on the OrderChange XML, find the corresponding sales order line item and compare the data as per ‘Fields for Comparison’ table. If there are differences between them, populate the ‘Staging table'
Sales Order Look Up Logic using Purchase Order Number
| Purchase Order Field in API structure | Logic to Fetch Sales Order |
|---|---|
| A_SalesOrderHeader_CustomerPurchaseOrder | Sales Order = VBAK-VBELN where VBAK-BSTNK = A_SalesOrderHeader_CustomerPurchaseOrder |
Order Items View (To be used in ERP-2326 New Order Modification Fiori App)
Line | Product Details | Quantity in PU | Due Date | Pricing | Line Status |
VBAP-POSNR | Buyer: <VBAP-KDMAT> Seller: <VBAP-MATNR> | VBAP-KWMENG " " VBAP-VRKME | <VBEP-EDATU> where: VBEP-VBELN = VBAK-VBELN VBEP-BMENG <> 0 or blank
| NetPrice: VBAP-NETPR " " VBAP-KPEIN | See Line Status Logic |
Line Status Logic
- Check delivery status of the sales order line item.
- If VBAP-LFGSA=A (not yet processed), set Line status = Modif (can be done manually in SAP)
- If VBAP-LFGSA = B or C, set Line status = Modif (delivery already done in SAP)
- Check rejection if the sales order line item is rejected or not (VBAP-ABGRU = blank)
- if the sales order line item is not rejected, VBAP-ABGRU = blank, Modif (can be done manually in SAP)
- if the sales order line item is rejected, VBAP-ABGRU is not blank, Modif (item is rejected in SAP)
How to find changes requested from the OrderChange XML from Elemica
Comparison is made between a subset of the OrderChange XML fields and their corresponding values in the Sales Order. For the fields where the activation flag is ticked, where there is a difference, these fields are collated into a staging table (a database table) and passed into the Order Modification Fiori App (ERP-2326 New Order Modification Fiori App) structured into both a Fiori Launchpad notification (see notification logic section) and to update the App with the specific data of the sales order that needs to be changed
Fields for Comparison: OrderChange API vs Sales Order Line Item Fields
| API Field | Sales Order Field | Activation Flag |
|---|---|---|
| A_SalesOrderItem_RequestedQuantity | VBAP-KWMENG | X |
| A_SalesOrderItem_RequestedQuantityISOUnit | VBAP-VRKME | X |
| A_SalesOrderItemPrElementPricePerUnit | VBAP-NETPR | X |
| A_SalesOrderItemPrElementPriceCurrencyCode | VBAP-KPEIN | X |
| A_SalesOrderScheduleLine_ScheduleDateRequestedDeliveryOn | VBEP-EDATU | X |
Staging table
This will be a database table, not user maintained but programmatically maintained with the sales order and the new values of the fields to be changed. This will be used by the ERP-2326 New Order Modification Fiori App to generate the sales orders where customer has requested changes and the new values
Content of this table older than 30 (tbc) days should be automatically deleted (program to do this to be defined by Technical team as part of general house keeping)
| Sales Order Number | Sales Order Line Item | Change request date | Changed Field | New Value (from API) | Processed flag | Processed Date | Line Status | Line Status Rejection Reason text |
|---|---|---|---|---|---|---|---|---|
| 1234 | 10 | 01.01.2027 | VBAP-KWMENG | 2300 | x | 02.01.2027 | Modif: Processed | |
| 1234 | 10 | 01.01.2027 | VBAP-VRKME | KG | x | 02.01.2027 | Modif: Rejected | Delivery created |
Notification Logic
For every OrderChange message received, trigger a Fiori Launchpad notification to the CSR
Logic to find CSR for a sales order
Read VBPA-PERNR (get SAP user ID from this) where::
VBPA-VBELN = Sales order number
VBPA-PARVW = 'SE' for Sales Employee
Notification text:
Title: EDI Order Modification Notice
Subtext: A modification for Order <Sales Order> has been received
Clicking on the notification should take CSR into the details of the requested change (details in ERP-2326 New Order Modification Fiori App)
Delta or Full Load Requirements
Interface Alert & Monitoring
Language Requirements
User Interface Requirements
N/A
Sequencing
N/A
Volumetrics
Performance Consideration
Error Handling
Error handling for this interface to align with the error handling process for interfaces as defined for SyWay (exact approach / process yet to be defined and below are indicative only to be refined based on the defined approach)
Integration errors:
All errors occurring during mapping rule execution and during posting to be added to the application log and AIF in a readable and user understandable format. These errors should trigger incident creation in SyRa (tbc)
Data errors or errors in S4 during translation, logic execution etc:
These should trigger a Fiori launchpad notification to the CSR highlighting the error in an understandable format in addition to logging the error in AIF (to be defined exactly how users will access and reprocess these failed messages)
Testing
How to Test
Test Conditions and Expected Results
| ID | Condition | Expected Results |
|---|---|---|
| 1 | OrderChange XML received from SAP CPI | Custom API processes received OrderChange XML into the specified data structure |
| 2 | OrderChange XML from SAP CPI maps to Custom API structure | Custom API structure is mapped successfully from received OrderChange XML |
| 3 | Custom API executes defined logics and lookups in S/4HANA and returns a sales order | Defined logics and lookups in S/4HANA executed correctly and sales order is found and returned |
| 4 | OrderChange XML received for a sales order not yet created in SAP S/4HANA | Look up logic executed but no sales order is returned. Follow error handling procedure for sales order not found |
| OrderChange XML received having line with ActionRequest = DELETED | Order Item View generated with line status set as DELETED | |
| Sales Order found from OrderChange message has line items that is not rejected | In Order Item View, Line Status is set as Modif (can be done manually in SAP) | |
| Sales Order found from OrderChange message has line items that is rejected | In Order Item View, Line Status is set as Modif (item is rejected in SAP) | |
| Sales Order found from OrderChange message has line items that is delivered | In Order Item View, Line Status is set as Modif (delivery already done in SAP) | |
| Sales Order found from OrderChange message has line items that is not yet delivered | In Order Item View, Line Status is set as Modif (can be done manually in SAP) | |
Test Considerations/Dependencies
Other Information
Development Details
Package
| Package Name | Parent Package |
|---|---|
Other Development Objects
| Object Type | Object Name | Purpose/High Level Logic | Design Rationale Reference |
|---|---|---|---|