About the SAP_COM_O444 and SAP_COM_0382 Communication Scenario

SAP_COM_0444 / Delivery Schedule of Sales Scheduling Agreement

The SAP_COM_0444 / Delivery Schedule of Sales Scheduling Agreement - Receive, Update (B2B) API is released with SAP S/4HANA Cloud 1905.  

This asynchronous inbound service enables you as the supplier using SAP S/4HANA Cloud to automatically create and update delivery schedules of sales scheduling agreements, contains header, item, release, and schedule line nodes. It’s one of several services that facilitate an integration between sales scheduling agreements and an external buyer system. The information is sent in the request as a payload. Messages transferred by this service can be monitored using SAP Application Interface Framework (AIF) Monitoring.   

For details regarding this API, see Delivery Schedule of Sales Scheduling Agreement - Receive, Update (B2B) on SAP Help Portal.  
For details regarding the communication arrangement, see the set-up instructions for scope item 3NR (Sales Scheduling Agreements) in the SAP Best Practices Explorer.

SAP_COM_0382 / Consignment Issue for Sales Scheduling Agreement

The SAP_COM_0382 / Consignment Issue for Sales Scheduling Agreement - Create (B2B) API with SAP S/4HANA Cloud 2005.  

This asynchronous inbound service enables you to create consignment issues for sales scheduling agreement, contains nodes and fields that represent every element of a consignment issue used in sales scheduling agreement processing. The information is sent in the request as a payload. Messages transferred by this service can be monitored using SAP Application Interface Framework (AIF) Monitoring.

For details regarding this API, see Consignment Issue for Sales Scheduling Agreement - Create (B2B) on SAP Help Portal.  
For details regarding the communication arrangement, see the set-up instructions for scope item 4LZ (Sales Scheduling Agreement with Consignment) in the SAP Best Practices Explorer.

Example 

For details regarding the determination logic, see How to determine a sales scheduling agreement in delivery schedule EDI(0444) and consignment issue EDI(0382).

The following example and determination logic are based on SAP S/4HANA Cloud 2005, there may be adjustments. The new release shall prevail.

In SAP S/4HANA Cloud:

There are several sales schedule agreements. Each sales schedule agreement contains one product (that is, material) only.

Sales Scheduling Agreement Customer Reference Sold-To Party Partner Description on Ship-To Party Unloading Point Customer Material
30000001 Example SSA 1 ST00001 P001 AU01 CM0001
30000002 Example SSA 2 ST00001 P001 AU01 CM0002
30000003 Example SSA 3 ST00002 P002 AU01 CM0001
30000004 Example SSA 3 ST00002 P002   CM0001
30000005 Example SSA 4 ST00002 P002 AU01 CM0001
30000006 Example SSA 5 ST00002 P002 AU41 CM0001

In the Assign Sold-To Party App(F3894), the following entities have been configured.

Supplier Partner Description Unloading Point Sold-To Party
SP0001 P001 AU01 ST00001
SP0002 P002   ST00002
SP0002 P002 AU31 ST00002

In the Manage Delivery Schedule Processing App(F3895), the following entities have been configured.

Sold-To Party Unloading Point Check Purchase Order Number Check Unloading Point
SP0001 AU01 PO Number Check (No Update) (X) No Processing
SP0002   PO Number Check (No Update) (X) Unloading Point Check (No Update) (X)
SP0002 AU11 PO Number Check (No Update) (X) No Processing
SP0002 AU41 No Processing Unloading Point Check (No Update) (X)

Example Case 1

The Payload:

Delivery Schedule of Sales Scheduling Agreement

...
<SchedulingAgreement>
    ...
    <PurchasingSchedulingAgreementID>Example SSA 1</PurchasingSchedulingAgreementID>
    ...
    <Party PartyType="Supplier">
        ...
        <BuyerPartyID>SP0001</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="Plant">
        ...
        <BuyerPartyID>P001</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="DepartResp">
        ...
        <BuyerPartyID>AU01</BuyerPartyID>
        ...
    </Party>
    ...
    <Item>
        ...
        <Product>
            ...
            <BuyerProductID>CM0001</BuyerProductID>
            ...
        </Product>
        ...
    </Item>
    ...
</SchedulingAgreement>
...

Consignment Issue for Sales Scheduling Agreement

...
<SalesSchedulingAgreementConsignmentIssue>
    ...
    <PurchasingSchedulingAgreementID>Example SSA 1</PurchasingSchedulingAgreementID>
    ...
    <Party PartyType="Supplier">
        ...
        <BuyerPartyID>SP0001</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="Plant">
        ...
        <BuyerPartyID>P001</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="DepartResp">
        ...
        <BuyerPartyID>AU01</BuyerPartyID>
        ...
    </Party>
    <Item>
        ...
        <Product>
            ...
            <BuyerProductID>CM0001</BuyerProductID>
            ...
        </Product>
        ...
    </Item>
    ...
</SalesSchedulingAgreementConsignmentIssue>
...

The sales scheduling agreement 30000001 is found. The basic logic as below:  

  1. Use the Supplier Party SP0001 as the Supplier, Plant Party P001 as the Partner Description and DepartResp Party AU01 as the Unloading Point to determine the Sold-To Party, and the Sold-To Party ST00001 is found(The first entity).  
  2. Use the determined Sold-To Party ST00001 and the Unloading Point AU01 to determine the Delivery Schedule Processing Option, and the first process option is found as Check PO number (no update) and no processing for Unloading Point.  
  3. Use the Sold-To Party ST00001, Partner Description P001 and Customer Material CM0001(The BuyerProductID in message payload) to mass search the SSA. Find 30000001.  
  4. According the determined processing option, the Customer Reference in SSA and the PurchasingSchedulingAgreementID in message payload is matched. And the unloading point won’t be checked, option check is passed.  
  5. Further check found sales scheduling agreement. For example, material usage indicator, sales description, sales area, etc. Need to pass all checks.

Example Case 2

The Payload:

Delivery Schedule of Sales Scheduling Agreement

...
<SchedulingAgreement>
    ...
    <PurchasingSchedulingAgreementID>Example SSA 3</PurchasingSchedulingAgreementID>
    ...
    <Party PartyType="Supplier">
        ...
        <BuyerPartyID>SP0002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="Plant">
        ...
        <BuyerPartyID>P002</BuyerPartyID>
        ...
    </Party>
    ...
    <Item>
        ...
        <Product>
            ...
            <BuyerProductID>CM0001</BuyerProductID>
            ...
        </Product>
        ...
    </Item>
    ...
</SchedulingAgreement>
...

Consignment Issue for Sales Scheduling Agreement

...
<SalesSchedulingAgreementConsignmentIssue>
    ...
    <PurchasingSchedulingAgreementID>Example SSA 3</PurchasingSchedulingAgreementID>
    ...
    <Party PartyType="Supplier">
        ...
        <BuyerPartyID>SP0002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="Plant">
        ...
        <BuyerPartyID>P002</BuyerPartyID>
        ...
    </Party>
    <Item>
        ...
        <Product>
            ...
            <BuyerProductID>CM0001</BuyerProductID>
            ...
        </Product>
        ...
    </Item>
    ...
</SalesSchedulingAgreementConsignmentIssue>
...

The sales scheduling agreement 30000004 is found. The basic logic as below:  

  1. Use the Supplier Party SP0002 as the Supplier and Plant Party P002 as the Partner Description to determine the Sold-To Party, the Sold-To Party ST00002 is found (The second entity).
  2. Use the determined Sold-To Party ST00002 to determine the Delivery Schedule Processing Option, and the second process option is found as Check PO number (no update) and Check Unloading Point (No Update).
  3. Use the Sold-To Party ST00002, Partner Description P002 and Customer Material CM0001 (The BuyerProductID in message payload) to mass search the sales scheduling agreement. Find 30000003, 30000004, 30000005 and 30000006.
  4. According to the determined processing option, the Customer Reference in sales scheduling agreement 30000005 and 30000006 doesn't match the PurchasingSchedulingAgreementID in message payload, the 30000005 and 30000006 are filtered out. Only the unloading point in sales scheduling agreement 30000004 matches the DepartResp Party in message payload (Which isn't provided in message payload). Thus, the sales scheduling agreement 30000003 is filtered out too.
  5. Further check found sales scheduling agreement. For example, material usage indicator, sales description, sales area, etc. Need to pass all checks.

Example Case 3

The Payload:

Delivery Schedule of Sales Scheduling Agreement

...
<SchedulingAgreement>
    ...
    <PurchasingSchedulingAgreementID>Example SSA 4</PurchasingSchedulingAgreementID>
    ...
    <Party PartyType="Supplier">
        ...
        <BuyerPartyID>SP0002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="Plant">
        ...
        <BuyerPartyID>P002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="DepartResp">
        ...
        <BuyerPartyID>AU11</BuyerPartyID>
        ...
    </Party>
    ...
    <Item>
        ...
        <Product>
            ...
            <BuyerProductID>CM0001</BuyerProductID>
            ...
        </Product>
        ...
    </Item>
    ...
</SchedulingAgreement>
...

Consignment Issue for Sales Scheduling Agreement

...
<SalesSchedulingAgreementConsignmentIssue>
    ...
    <PurchasingSchedulingAgreementID>Example SSA 4</PurchasingSchedulingAgreementID>
    ...
    <Party PartyType="Supplier">
        ...
        <BuyerPartyID>SP0002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="Plant">
        ...
        <BuyerPartyID>P002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="DepartResp">
        ...
        <BuyerPartyID>AU11</BuyerPartyID>
        ...
    </Party>
    <Item>
        ...
        <Product>
            ...
            <BuyerProductID>CM0001</BuyerProductID>
            ...
        </Product>
        ...
    </Item>
    ...
</SalesSchedulingAgreementConsignmentIssue>
...

The sales scheduling agreement 30000005 is found. The basic logic as below:  

  1. Use the Supplier Party SP0002 as the Supplier, Plant Party P002 as the Partner Description and DepartResp Party AU01 as the Unloading Point to determine the Sold-To Party.
    1. There's no matches entity for Supplier SP0002, Partner Description P002 and Unloading Point AU01.
    2. Use the Supplier SP0002 and Partner Description P002 to redetermine the Sold-To party, and the Sold-To Party ST00002 is found(The second entity).
  2. Use the determined Sold-To Party ST00002 and Unloading Point AU11 to determine the Delivery Schedule Processing Option, and the third process option is found as Check PO number (no update) and no processing for Unloading Point.
  3. Use the Sold-To Party ST00002, Partner Description P002 and Customer Material CM0001 (The BuyerProductID in message payload) to mass search the sales scheduling agreement. Find 30000003, 30000004, 30000005 and 30000006.
  4. According the determined processing option, only the Customer Reference in sales scheduling agreement 30000005 matches the PurchasingSchedulingAgreementID in message payload, the 30000003, 30000005 and 30000006 are filtered out. And the unloading point won't be check because the processing even it doesn't match between the sales scheduling agreement and message payload.
  5. Further check found sales scheduling agreement. For example, material usage indicator, sales description, sales area, etc. Need to pass all checks.

Example Case 4

The Payload:

Delivery Schedule of Sales Scheduling Agreement

...
<SchedulingAgreement>
    ...
    <PurchasingSchedulingAgreementID>Example SSA 5</PurchasingSchedulingAgreementID>
    ...
    <Party PartyType="Supplier">
        ...
        <BuyerPartyID>SP0002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="Plant">
        ...
        <BuyerPartyID>P002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="DepartResp">
        ...
        <BuyerPartyID>AU41</BuyerPartyID>
        ...
    </Party>
    ...
    <Item>
        ...
        <Product>
            ...
            <BuyerProductID>CM0001</BuyerProductID>
            ...
        </Product>
        ...
    </Item>
    ...
</SchedulingAgreement>
...

Consignment Issue for Sales Scheduling Agreement

...
<SalesSchedulingAgreementConsignmentIssue>
    ...
    <PurchasingSchedulingAgreementID>Example SSA 5</PurchasingSchedulingAgreementID>
    ...
    <Party PartyType="Supplier">
        ...
        <BuyerPartyID>SP0002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="Plant">
        ...
        <BuyerPartyID>P002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="DepartResp">
        ...
        <BuyerPartyID>AU41</BuyerPartyID>
        ...
    </Party>
    <Item>
        ...
        <Product>
            ...
            <BuyerProductID>CM0001</BuyerProductID>
            ...
        </Product>
        ...
    </Item>
    ...
</SalesSchedulingAgreementConsignmentIssue>
...

The sales scheduling agreement  30000006 is found. The basic logic as below:  

  1. Use the Supplier Party SP0002 as the Supplier, Plant Party P002 as the Partner Description and DepartResp Party AU41 as the Unloading Point to determine the Sold-To Party.
    1.    There's no matches entity for Supplier SP0002, Partner Description P002 and Unloading Point AU41.
    2.    Use the Supplier SP0002 and Partner Description P002 to redetermine the Sold-To party, and the Sold-To Party ST00002 is found (The second entity).
  2. Use the determined Sold-To Party ST00002 and Unloading Point AU41 to determine the Delivery Schedule Processing Option, and the fourth process option is found, no processing for PO number and check Unloading Point (No Update).
  3. Use the Sold-To Party ST00002, Partner Description P002 and Customer Material CM0001 (The BuyerProductID in message payload) to mass search the SSA. Find 30000003, 30000004, 30000005 and 30000006.
  4. According the determined processing option, the Customer Reference will not be check. only the unloading point in 30000006 sales scheduling agreement matches the DepartResp in the message payload. Thus, the sales scheduling agreement 30000003, 30000004 and 30000005 are filtered out.
  5. Further check found sales scheduling agreement . For example, material usage indicator, sales description, sales area, etc. Need to pass all checks.

Example Case 5

The Payload:

Delivery Schedule of Sales Scheduling Agreement

...
<SchedulingAgreement>
    ...
    <PurchasingSchedulingAgreementID>Example SSA 5</PurchasingSchedulingAgreementID>
    ...
    <Party PartyType="Supplier">
        ...
        <BuyerPartyID>SP0002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="Plant">
        ...
        <BuyerPartyID>P002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="DepartResp">
        ...
        <BuyerPartyID>AU00</BuyerPartyID>
        ...
    </Party>
    ...
    <Item>
        ...
        <Product>
            ...
            <BuyerProductID>CM0001</BuyerProductID>
            ...
        </Product>
        ...
    </Item>
    ...
</SchedulingAgreement>
...

Consignment Issue for Sales Scheduling Agreement

...
<SalesSchedulingAgreementConsignmentIssue>
    ...
    <PurchasingSchedulingAgreementID>Example SSA 5</PurchasingSchedulingAgreementID>
    ...
    <Party PartyType="Supplier">
        ...
        <BuyerPartyID>SP0002/BuyerPartyID>
        ...
    </Party>
    <Party PartyType="Plant">
        ...
        <BuyerPartyID>P002</BuyerPartyID>
        ...
    </Party>
    <Party PartyType="DepartResp">
        ...
        <BuyerPartyID>AU00</BuyerPartyID>
        ...
    </Party>
    <Item>
        ...
        <Product>
            ...
            <BuyerProductID>CM0001</BuyerProductID>
            ...
        </Product>
        ...
    </Item>
    ...
</SalesSchedulingAgreementConsignmentIssue>
...

None sales scheduling agreement will be found. The basic logic as below:  

  1. Use the Supplier Party SP0002 as the Supplier, Plant Party P002 as the Partner Description and DepartResp Party AU00 as the Unloading Point to determine the Sold-To Party.
    1.    There's no matches entity for Supplier SP0002, Partner Description P002 and Unloading Point AU00.
    2.    Use the Supplier SP0002 and Partner Description P002 to redetermine the Sold-To party, and the Sold-To Party ST00002 is found (The second entity).
  2. Use the determined Sold-To Party ST00002 and Unloading Point AU00 to determine the Delivery Schedule Processing Option
    1.    There's no matches entity for Sold-To Party ST00002 and Unloading Point AU00.
    2.    Use the Sold-To Party ST00002 to redetermine the processing option, the second process option is found as Check PO number (no update) and Check Unloading Point (No Update).
  3. Use the Sold-To Party ST00002, Partner Description P002 and Customer Material CM0001 (The BuyerProductID in message payload) to mass search the sales scheduling agreement. Find 30000003, 30000004, 30000005 and 30000006.
  4. According the determined processing option, only the Customer Reference in sales scheduling agreement 30000006 matches the PurchasingSchedulingAgreementID in message payload, the sales scheduling agreement 30000003, 30000004 and 30000005 are filtered out. But the unloading point in sales scheduling agreement 30000006 isn't matches the DepartResp Party in message payload, the 30000006is filtered out too.
  5. None sales scheduling agreement is found.

Troubleshooting 

During the determination of the sales scheduling agreement, there are some common errors. Refer to the following error messages and checkpoints.

  1. Sold-to party assignment not found for supplier.
    • Check if the Sold-To Party Assignment is configured correctly. The corresponding mapping relationship as below:
      Field in Message Payload Field in Sold-To Party Assignment Priority
      The *Supplier* Party under SchedulingAgreement Supplier N/A
      The *Plant* Party under SchedulingAgreement Partner Description Low
      The *DepartResp* Party under SchedulingAgreement Unloading Point Low
      The PurchasingReceivingPlant under Item Partner Description High
      The PurchasingUnloadingPoint under Item Unloading Point High
      When the higher priority field isn't empty, it overwrites the lower priority field. For Example, in the Delivery Schedule of Sales Scheduling Agreement EDI message payload:
      ...
      <SchedulingAgreement>
          ...
          <Party PartyType="Supplier">
              ...
              <BuyerPartyID>SP0001</BuyerPartyID>
              ...
          </Party>
          <Party PartyType="Plant">
              ...
              <BuyerPartyID>P001</BuyerPartyID>
              ...
          </Party>
          <Party PartyType="DepartResp">
              ...
              <BuyerPartyID>AU01</BuyerPartyID>
              ...
          </Party>
          ...
          <Item>
              ...
              <PurchasingReceivingPlant>P002</PurchasingReceivingPlant>
              <PurchasingUnloadingPoint></PurchasingUnloadingPoint>
              ...
              <Product>
                  ...
                  <BuyerProductID>CM0001</BuyerProductID>
                  ...
              </Product>
              ...
          </Item>
          ...
      </SchedulingAgreement>
      ...
      The determine logic uses the Supplier as SP0001, Partner Description as P002 and Unloading Point as AU01.
      Only the Delivery Schedule of Sales Scheduling Agreement EDI contain the PurchasingReceivingPlant and PurchasingUnloadingPoint fields under item.
  2. Delivery schedule processing option not found for sold-to party  
    • Check if the processing option is configured correctly, the corresponding mapping relationship is same as the 1 error.
  3. No sales scheduling agreement found
    • Check if the Sold-To Party Assignment is configured correctly.
    • Check if the processing option is configured correctly.
    • Check if the corresponding sales scheduling agreement is rejected.
    • Check whether the corresponding material usage indicator and sales description match the message payload.
    • Check if the Partner Description on Ship-To Party in sales scheduling agreement matchs the EDI payload.
    • Check if the logic in the Search for Sales Scheduling Agreements in EDI Processing Cloud BAdI is correct.  
  4. Multiple sales scheduling agreements found for sold-to party
    • Check if the message payload contains all the information used for determination.
    • Check the system for duplicate sales scheduling agreements.
  5. Invalid release type &1. It must be 1 or 2.
    • The release type only can be 1 or 2. 1 is the Forecast Delivery Schedule and 2 is the Just-In-Time Delivery Schedule.
  6. The old delivery schedule * isn't identical with delivery schedule *.
    • Check if the old delivery schedule ID in message payload matches sales scheduling agreement delivery schedule ID. 
    • Some old messages may not be processed, check all the related messages in Message Dashboard APP, and reprocess the skipped or error messages.  
  7. No forecast delivery schedule in sales scheduling agreement *.  
    • In order to create the JIT delivery schedule for sales scheduling agreement, there needs to create the FDS firstly.  
  8. Unloading point * doesn't match in sales scheduling agreement *.  
    • Check if the Unloading point is correctly in message payload.  
    • Check if the processing option is configured correctly.  
  9. Customer reference * in * doesn't match purchase order number *.  
    • Check if the Purchasing Scheduling Agreement ID in message payload matchs in related sales scheduling agreement header or item.  
    • Check if the processing option is configured correctly.  
  10. Material usage indicator * not matched in sales scheduling agreement *.
    • Check if the material usage indicator is correctly in message payload.  
  11. Zero or multiple items received.  
    • Both APIs support one item only per message payload.  
  12. Zero or multiple delivery schedules received.  
    • The Delivery Schedule of Sales Scheduling Agreement EDI only support one release per message payload.