Resolve the issue of using IDOC in BPM
Getting an issue when deploying the BPM to the server such as the below screenshot (or the repeat annoy popup with data violation, the difference error is depended on the version of NWDS)
And look at Data Type in NWDS, IDOC messages came with empty namespace is the reason:
The reason is when an IDOC was imported to ESR it was missing 2 attributes targetNamespace and xmlns.
So all we need to do is correcting these 2 missed attributes to the IDOC message.
First step, export IDOC message in ESR to an external wsdl file, then adding 2 attributes to the IDOC schema section <xsd:schema> and xmlns attribute to <wsdl:definition> section.
Second step, import the file to External Definitions in ESR, then edit the Service Interface points to the External Message instead of IDOC.
The last step, delete the WSDL file of the old Service Interface that points to the IDOC and reimport the new Service Interface to NWDS.
Now we are able to see Data Type with the namespace in NWDS
Okay we are good with the BPM, but still has another issue when transfering IDOC messages between SAP ECC and BPM, because IDOC messages send to PI from SAP ECC are missing the namespace which is required by the BPM and it’s the same if there is a route sending IDOC from BPM to SAP ECC it’s required to removed the namespace too.
The External Message is the one we modified to adding 2 attributes above.
To do that I enclosed 2 XSL for adding and removing namespace accordingly, please see the attachments.
Adding the namespace:
Remove the namespace:
Now I’m usng PO 7.5 with NWDS 7.5 SP03. Please refer to SAP note 1414292 for early versions and more general info.
For more detail how to create a BPM to communitcate with PI, refer to this document.