| 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 or A_SalesOrderItem_ActionRequest = CANCELLED exists
- If yes – find the corresponding line item(s) on the sales order from 2a and extract Order Items View data and update line item status as ‘DELETED’
- If no, go to step 4.
Order Items View (To be used in ERP-2326 New Order Modification Fiori App) - should this be in 2326?
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> | NetPrice: VBAP-NETPR " " VBAP-KPEIN | See Line Status Logic |
Line Status Logic
- Check delivery status and rejection status of the sales order line item.
- If VBAP-LFGSA=A (not yet processed), Line status = Modif (can be done manually in SAP)
- If VBAP-LFGSA = B or C, 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)
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 |
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_MaterialByCustomer | VBAP-KDMAT | |
| A_SalesOrderItem_Material | VBAP-MATNR | |
| A_SalesOrderItem_RequestedQuantity | VBAP-KWMENG | X |
| A_SalesOrderItem_RequestedQuantityISOUnit | VBAP-VRKME | X |
| A_SalesOrderHeader_TransactionCurrency | VBAP-WAERK | |
| 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 | Change request date | Changed Field | New Value (from API) | Processed flag |
|---|---|---|---|---|
| 1234 | 01.01.2027 | VBAP-KWMENG | 2300 | x |
| 1234 | 01.01.2027 | VBAP-VRKME | KG | x |
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 |
|---|---|---|
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 |
|---|---|---|---|