Realizing Web Services Inter-Operability using SAP PI 7.1
I was struck by the general opinion coming from the Architect Review Meeting while we were defining the Integration architecture for a client : “So in short SAP PI cannot expose web services that other applications can understand. We need to look for other options to expose the functionality over the intranet.”
The opinion sounded too hard to believe and made me immediately board the train of thoughts – what should be done to ensure inter-operability of SAP with the non-SAP world? Traditionally many architects have been looking at SAP PI as more suitable for SAP-centric Integration than non-SAP-centric one. How to convince at least the ones around me that SAP PI is capable of providing a completely inter-operable Web-Service Solution ?
While working towards getting web services from SAP PI into enterprise-wide SOA platform running on IBM and Oracle products (WebSphere Service Registry and Repository and AmberPoint respectively), I got an opportunity to demystify some less known capabilities and features of SAP PI. The journey was as interesting as a treasure hunt game with the next clue coming only after you have solved the earlier one. In this series of three blogs, I plan to share my experiences as I progressed in the venture.
We are using SAP PI 7.1 here. The Initial procedure ( configuring a SOAP-to-RFC scenario and generating the WSDL from Sender Agreeement ) is no-brainer.
The real challenge lies in meeting the “Thou-shalt-not-bypass-them” pre-requisites for publishing the WSDL.
Clue No. 1. The Service Name in the WSDL published should be a meaningful name
The WSDL generated from Sender Agreement contains a cryptic GUID by default.
Inter-operability requires that the Service name is more meaningful and is able to describe the functionality.
The solution is to choose a meaningful name for the Service Interface in ESR and then update the exchange profile setting the parameter com.sap.aii.ibdir.wsdl.servicename.bitfield as 0. This will bring about the change in the XML tag in the WSDL.
You can also set the parameter to accept Sender or Receiver – Party or Service name, or even their combination. The details can be found in SAP Note 1377281.