Calling ABAP Proxies using SOAP and HTTP Adapters in SAP XI3.0/PI7.0
Recently I come across a situation where in I need to post a message coming from an ERP system to SAP ABAP proxy using SAP XI/PI. Well then we all say we can use XI adapter for the same. However, the business requirement is something different here. Purchase Orders are coming from ERP as a single message and on the SAP ABAP Proxy side, the business needs each purchase order (pertaining to purchase order number) as a separate message for better monitoring/tracking purposes.
Earlier there was a BPM setup (with multimapping concept) for this scenario and its working fine with a performance penalty. And more over these days the transaction numbers have increased in a huge number causing BPM timeouts, performance. So we need an alternate way to avoid this.
The messages (purchase orders) can be split using Multi mapping concept (with BPM or without BPM). But with BPM, it is causing performance. If we go ahead without BPM the fundamental obstacle is XI adapter doesn’t support multimapping as it doesn’t belong to AE.
How about SOAP adapter? Can’t we send a SOAP message to local Integration Engine (IE) of Application System? I searched forum… (As I remember there was already a blog by Stephan for this) Using the SOAP inbound channel of the Integration Engine.
So, I did a trial by sending a message to local IE of Application System using a SOAP client (such as XML Spy). Surprisingly, the message reached local IE. I tried the same from SAP XI/PI using SOAP adapter. With SAP PI Soap Adapter as well, the message reached local IE. But the message is in general SOAP format (i.e., SOAP Header and SOAP Body). Hence this message is failing in Application System. I raised a thread on SDN, and realized that the SAP XI/PI SOAP adapter doesn’t have XI3.0 message protocol capabilities for communicating with ABAP proxies until the release of PI7.1 (Enhancement with PI 7.11, How To Set Up the Communication between ABAP Backend and SOAP Adapter using XI Protocol).
How about HTTP Adapter? Even we can not use HTTP adapter as it doesn’t belong to AE. But using HTTP adapter, at least we can post a message to the ABAP Proxy (Can we? Yes we can). But since HTTP is ABAP based adapter, it doesn’t support multimapping.
So finally, I came up with SOAP adapter with plain HTTP request (Conversion Paramets in SOAP CC, check “Do Not Use SOAP Envelope”). With this, I am able to send messages to HTTP plain adapter of Application system and obviously the SOAP adapter supports multimapping.
Receiver SOAP Communication Channel Parameters
Provide User Authentication information (username and password)
Check “Do Not Use SOAP Envelope”
Check “Keep Headers”
For ABAP Proxy Call with HTTP Adapter , use the same above URL
1. Since we are sending the message to inbound HTTP adapter on local IE of Application system, we can’t send attachements.
2. Message size might be limited for the inbound HTTP adatper (say max. 20 MB per message, this is what as per my test results)
3. Since it is a plain HTTP request (with textual data) to the inbound HTTP adapter on the application system, the SOAP header/body from XI will not be passed to application system. So, the application system can not make use of custom headers such as dynamic configuration etc …including standard SOAP header from XI/PI