SAP PO IFlow: using Operation Mapping with non-XML Interfaces
You want to use Java Mapping for a non-XML file message. You are using IFlows because that is the future of PI/PO. You need a dummy interface? Wait, don’t modify the generated ICO to remove Software Component Version! There is a cleaner solution 🙂
I have found a way after long hours of dealing with NWDS. But after then I came across Stefan Grube’s gold comment by chance. I will present it first since I think it is a better solution.
Error:
Exception: com.sap.aii.adapter.xi.routing.RoutingException: Unable to parse XML message payload to extract operation for receiver determinationorg.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
For a better understanding here is a bird’s-eye view of ESR:
Solution #1
Make your outbound interface XI30-Compatible
I thought whether or not to write this post but decided to continue in order to increase the visibility of this solution. I think most popular solution among PI consultants is still removing “Software Component Version”
Solution #2
If you can not change Software Interface for any reason, welcome to the hair-splitting world of NWDS user interface! I’m your tour guide.
For better monitoring logs define dummy interface as it is a normal interface:
Here is the tricky part if you automatically press yes, you have to start from scratch. Also, It is hard to understand that you can press “No” and get away with it.
If you haven’t chosen a specific operation this IFlow can be activated, deployed and it will work as expected.
Reason
The main reason for the error is PI runtime tries to determine the operation of the service interface. And It has to look XML root element (or SOAP Body element) of the message.
For example, if you defined Dummy Interface, below example will activate, pass the checks but give an error during deployment. Because it has an operation.
Deployment error: “change list could not be activated”
But this example is OK:
Also notice that if you choose the first solution and make your interface XI30-Compatible, you cannot specify an operation:
Thanks for reading,
Fatih
Thanks Fatih,
however, how did you exactly manage to get your mapping into the solution #2? For me this is always empty.
Basically I want to have a dummy sender and receiver interface (though I could make the receiver side "real") and use a java mapping in between
Cheers
Jens
Hello Jens,
You can manually enter Operation Mapping name and namespace, then it should work fine 😄 Let me know if that doesn't work.
Glad the post was helpful for you, years later.
Best regards,
Fatih
That is just great, thanks for sharing. Hitting "YES" in that popup actually messed up everything.
In IB it was much easier and less tricky to handle, but NWDS is full of suprises...! 🙂
Cheers
Alex