In heterogeneous system landscape master data replication can be quite complex. Key of a business object (e.g. Product Master) in one system can be different than that in the other system. Also there may be cases that in one system key is generated in a different way than the key generated in other system. For e.g. key of a Product in S/4 is "Product Number" which is of length 18 and in your 3rd party system the key of Product is "UUID" which are not compatible to each other.
In such scenarios, Product SOAP service in S/4HANA offers you key mapping capabilities which can be used to do seamless data replication of Product Master with different keys in different systems. Product SOAP service utilizes key mapping framework in S/4HANA to store the key mapping information of Products among different systems in your landscape. By default key mapping is not enabled in the communication arrangement, to enable it you should configure it while creating communication arrangement for integration scenario SAP_COM_0009 as shown below. Select value "2" for the field "Product Number Harmonization". This will enable the key mapping in Product SOAP service.
Product SOAP service interface has below key fields (Product Identifiers) which plays important role when key mapping is enabled:
The fields ProductInternalID, UnformattedProductInternalID, ProductUUID denotes Product identifier in the consumer system whereas fields ReceiverProductInternalID and UnformattedReceiverProductInternalID denotes Product identifier in S/4 system.
Note: 3rd party system will be referred as "Consumer" and S/4HANA system will be referred as "S/4".
1. Create scenario - You send a payload as below:
Here, since no value is passed in the ReceiverProductInternalID and UnformattedReceiverProductInternalID fields, S/4 will search for any existing key mapping and if it don't not find anything then it will create a Product by generating an internal number for it. S/4 will also write the key mapping of Product.
Note: If you want to see the key mapping information you can use the app "Manage Key Mapping" as shown below. You can also modify the key mapping manually using this app.
Here ABC is the consumer system ID and XYZ is the provider system ID.
Once the Product is created, Product SOAP service will send a confirmation message which would look like below:
You can see that the Product number created in S/4 would be sent in the ReceiverProductInternalID and UnformattedReceiverProductInternalID back to consumer so that consumer can also store this mapping information.
Note: In the confirmation message ReceiverProductInternalID and UnformattedReceiverProductInternalID denote the Product number in S/4.
2. Update Scenario - You send the same payload:
This time S/4 will look for any existing key mapping entries for the Product "DEMO_PRODUCT_001" and obviously it will find the Product number "1234" and subsequently the Product "1234" would be updated and a confirmation message would be sent to consumer.
Note: No new product would be created this time because there is already key mapping for Product "DEMO_PRODUCT_001".
3. Update Scenario - You send the ReceiverProductInternalID and UnformattedReceiverProductInternalID in payload as shown below:
In this case S/4 will not look for any existing key mapping and directly update the Product "1234". In case the Product "1234" does not exist in system then S/4 will throw error message. S/4 will also write the key mapping in case it does not already exist. And as before, S/4 would send a confirmation message.
Product UUID - Suppose your 3rd party system store Products with key as "UUID" and not "Product Number", in such case you can utilize the ProductUUID field in SOAP service. You send payload as below:
In this case as already mentioned above, S/4 will look for any existing key mapping and if it don't find any then S/4 will create a new Product by generating an internal number e.g. "1234". S/4 will also save this key mapping information.
S/4 will send confirmation which would look like below:
If you send the same Product "9418820a-c0a9-1eea-89bf-d7ea935b90ab" again then S/4 will find the key mapping which was written previously and the Product "1234" would be updated in S/4 and confirmation message would be sent.