Skip to Content
Author's profile photo Fatih Pense

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

 

 

Assigned tags

      2 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Jens Schwendemann
      Jens Schwendemann

      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

      Author's profile photo Fatih Pense
      Fatih Pense
      Blog Post Author

      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