Hello Everyone !!
Well, it has been a long while I am not blogging in SAP community. So, I hope this blog will help me to fuel myself and gain some momentum to post few blogs in the community
In this blog, I will mainly focus on a new feature - on how to track
Asynchronous IDOC's pushed from SAP CPI to SAP backend ERP over IDOC/SOAP adapters.
Scenario: Source System --> SAP CPI (via IDOC/SOAP Adapter) --> SAP Cloud Connector --> SAP ERP
In our traditional SAP PI/PO middleware case, the SAP PI message Id would be part of SAP Idoc control record EDI archive key i.e., EDI_DC40 -
ARCKEY (shown below). So this means that the standard SAP inbound idoc processing Function Module is considering SAP PI message ID header field
urn:sap.com:msgid=<SAP PI Message ID>
e.g., urn:sap.com:msgid=1B575D45472848AA92CA4588E2E8FDF3
However, in case of SAP CPI we have a different message ID header
SAP_MessageProcessingLogID and hence the CPI message doesn't get logged in SAP ERP idoc control record
ARCKEY (probably the FM module is not designed for this yet). And tt seems like the SAP inbound idoc processing Function module generates a new 32 bit Hex Id
So, the trick is to set standard SAP header:
SapMessageId with a value same as CPI message ID header:
SAP_MessageProcessingLogID. This can be done in the mapping step with a groovy script or with help of a content modifier step as shown below
Of course, the same can be achieved by mapping /IDOC/EDI_DC40/
ARCKEY field with a value
urn:sap.com:msgid=<
CPIMessageID > in CPI message mapping . Please note that static string
urn:sap.com:msgid= (prefix) is required for ARCKEY, otherwise the idoc adapter will throw an error such as the below
org.apache.cxf.binding.soap.SoapFault: E/EA/728/SOAP_MSGID_PREFIX_INVALID (IDoc SOAP Namespace - Violation (SOAP_MSGID_PREFIX_INVALID))
Result:
In CPI Moni,
So, we can search for the corresponding IDOC number in SAP ERP using CPI message Id (Shown below).
Tcode: WE02 (search with
*CPIMessageID )
References:
That's all
. Hope this helps you !!