Skip to Content
Author's profile photo Chandan Bankar

SAP C4C Integration: Customization to achieve the Product Internal ID same as SAP ECC Product ID

This document explains the customization to be made to the standard integration for Product Replication from SAP ECC system to SAP Cloud for Customer to have the Product Internal ID on C4C same as the Product ID on SAP ECC system.

Note:

1. Please note that the Number Ranges on C4C cannot be Alphanumeric. (Either Alphabetical or Numeric is allowed)

2. Similar configuration as mentioned below can also be used for Business Partner Replication.

Kindly check the below documentation which elaborate the same.

SAP C4C Integration: Achieving BP Replication with Account ID equal to Customer ID in SAP ECC

Standard behavior:

In Standard Integration Scenario, Internal ID for Products is assigned using the internal number range in C4C while ECC Product ID will be populated into the External ID field.

Required Behavior:

To achieve Product Replication with Product Internal ID on C4C same as Product ID for SAP ECC.

Customization:

To achieve this, make the below changes in the message mapping of the middleware (SAP PI/SAP HCI) for this interface:

1. Maintain the External Number Ranges for Business Partners in SAP C4C such that it matches the Internal Number Ranges on SAP ECC.

2. In standard mappings, Field MATNR from the SAP ECC IDOC is mapped to the ID field of SAP C4C Web Service.

3. Now add another mapping for this field. Add the mapping from MATNR from SAP ECC IDOC structure to ReceiverID of the SAP C4C.

Refer the below screenshot. Add the highlighted mapping.


ProdID.JPG

4. Save the mapping and test the integration.

Results:

Performing above configurations will result for Product Replication from SAP ECC to C4C with C4C Product Internal ID same as the External ID and Product ID from ECC.

Assigned Tags

      14 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Former Member
      Former Member

      Hi,

      We have implemented this solution. And for initial replication of the product from ECC to C4C it works fine and the internal ID and external ID of the C4C product is filled correctly. However, when we do a delta update of the same product from ECC to C4C we get this error message: "Solve Configuration Issue in ID Mapping for Element ID-CONTENT".

      Why is that?

      Br,

      Anders

      Author's profile photo Chandan Bankar
      Chandan Bankar
      Blog Post Author

      Hello Anders,

      Check the below discussion. (Comment from Shrikant Kamble)

      Extracting Internal ID vs External ID for Products

      Hope this helps

      Regards,

      Chandan

      Author's profile photo Former Member
      Former Member

      Thanks for the fast reply. Actually, I already checked that thread. We are using numerical number ranges only so therefore we always pass values (both internal C4C ID and External C4C ID) with leading zeros. But still we get the error.

      Author's profile photo Former Member
      Former Member

      Do not append External ID with leading zeros. Also check the Administration -> Edit ID Mapping for Integration. Search for the material and check the C4C ID and External ID. Compare that with your payload.

      - Shrikant

      Author's profile photo Alexandre Kaminagakura
      Alexandre Kaminagakura

      Hello Shrikant!

      I'm also getting the 'Solve Configuration Issue in ID Mapping for Element ID-CONTENT' error in Material replication. The material is created successfully but fails when is updated.

      Anders was using numerical number ranges and you said 'Do not append External ID with leading zeros'. In the other post (Extracting Internal ID vs External ID for Products) you said 'If Material range is numeric, it should pass material number appending with leading zeros.'. Which one is correct?

      I've tried using both numerial and alphanumerical ranges with leading zeros and without zeros, but the error persists.

      Here is my XML request:

        <MaterialMassReplicationRequest>

          <BasicMessageHeader>

            <ID>0000000014015310</ID>

          </BasicMessageHeader>

          <Material actionCode="04" descriptionListCompleteTransmissionIndicator="true">

           <SenderSequenceNumberValue>20160201105245</SenderSequenceNumberValue>

            <ID>4600231</ID>

            <IDTypeCode>20</IDTypeCode>

            <ReceiverID>4600231</ReceiverID>

            <ProductCategoryID>9100</ProductCategoryID>

            <ProductCategoryIDTypeCode>923</ProductCategoryIDTypeCode>

            <BaseMeasureUnitCode>UN</BaseMeasureUnitCode>

            <Description actionCode="04">

              <Description languageCode="PT">TEST</Description>

            </Description>

            <TextCollection actionCode="04" textListCompleteTransmissionIndicator="true">

              <Text actionCode="04">

                <TypeCode>10006</TypeCode>

                <ContentText languageCode="PT">BLABLA</ContentText>

              </Text>

            </TextCollection>

            <ProductStatusCode>

              <LifeCycleStatusCode>2</LifeCycleStatusCode>

            </ProductStatusCode>

            <Usage>

              <ProductUsageTypeCode>00</ProductUsageTypeCode>

            </Usage>

          </Material>

        </MaterialMassReplicationRequest>

      Is it right? Do you have an example to share?

      Thanks in advance.

      Alexandre.

      Author's profile photo Shrikant Kamble
      Shrikant Kamble

      For numeric number range, you should append leading zeros. The field length is 40 char. So if you have material length as 8, append 32 zeros to the field.

      For alphanumeric number range, you should pass the ID as is. It act as a string.

      -Shrikant

      Author's profile photo Alexandre Kaminagakura
      Alexandre Kaminagakura

      In resume,

      I set the material number range to numeric.

      The ProductInternalID in C4C has length 40 and in ECC has length 18. So, our PI created a mask to append leading zeros.

            <ID>0000000000000000000000000000000004600444</ID>

            <ReceiverID>0000000000000000000000000000000004600444</ReceiverID>

      It works!

      Thanks Shrikant!

      Alexandre.

      Author's profile photo Former Member
      Former Member

      Hi,

      we have a non-stock material item which has item cat TAX and item cat group NLAG.

      but when I am trying to create sales quote and request external pricing it is displaying error "Item category TAX is not defined for non-material items".

      How to solve this error.

      Thanks

      Author's profile photo Ankur Godre
      Ankur Godre

      Harish,

      Try to simulate Sales Quote creation manually in your connected ECC system and then see if you get the same error of pricing there as well as you see it in C4C. This may be something on your ECC side itself which might need either correction or adjustment.

      BR
      Ankur

      Author's profile photo Jens Schwendemann
      Jens Schwendemann

      I have a related question regarding leading zeros:

      We have products in ERP including leading zeros like “01800180”. I followed this blog and ended up with an internal ID in C4C of “1800180”, while the external ID is the correct “01800180”.

      We are particularly struggling with the fact that by default all screens, searches and the like show the internal ID. For products with leading zero they show the “wrong” product number.

       

      Is saw discussions where the advice was given to modify the screens and the like to always show external ID. I think this method would only bring us so far and we would end up with lots of work an customization and an half-baked user experience.

       

      Is there (as of October 2017) a more elegant way to deal with this?

       

      Happy to start a discussion, but wanted to keep a reference here, too.

      Cheers

      Jens

      Author's profile photo Bharath Raj
      Bharath Raj

      Hi Chandan Bankar ,

      Based on my understanding, it will work only for single ERP integration and not for Multiple ERP Integration Scenario where overlapping number range exists.  Is my understanding is correct?

      Regards,
      Bharathraj

      Author's profile photo Alessandra Magri
      Alessandra Magri

      Dear all,

      anybody had to implement this change *after* a golive (so after initial load has already been done, transactional data are in the system, ...)?

      Did you manage in any way to do it? (I cannot really see how but if you did it and tell me, you'll be my hero forever).

      Thanks!

      BR,

      Alessandra

      Author's profile photo Andreea Patru
      Andreea Patru

      Not sure if you still need it, but basically you need to remove the ID mapping for integration, map the old materials against a dummy ID, replicate again the materials and set the old materials to Obsolete. Of course, you need to check if they are used somewhere and replace them.

      Author's profile photo Alessandra Magri
      Alessandra Magri

      Thank you Andreea! I will try in my test tenant, if that works I'll owe you a dinner!

      (Just a bit unsure about the "replacing" in the transactions. But I guess I can try.)