Introduction:
The following document implies for all the inbound interfaces
which have Proxy call at source in SAP system and Receiver is a Web service
which can give response to the method(soap action) called.
Inbound Interface:
A scenario that makes a Request
from SAP to WebService through PI with certain Request input fields like
- TokenID
- ClientTransactionID
In Return accepts the Response from WebService with
Response output fields like
- TransactionID
- ClientTransactionID
- RecordsReceived
- RecordsPosted
- RecordsFailed
Using PROXY to SOAP Synchronous Scenario
Here is the step by step walk
through how to achieve this.
Step 1. Creation of Data Types. We need to create 2
Data types.
1 for request message structure and other for
Response structure.
Request structure:
Response Structure:
These structures are visible in SAP (ECC) at
Transaction SPROXY like below
Using ABAP required coding need to
be done for request & response of messages.
Now, Create MessageTypes .Best
practice is to give same names prefixed with DT_ for data types and MT_ for
MessageTypes.
We have to create 2 Message types
and give Data types used as the ones you created above respectively.
Create Message Interfaces in IR(if PI 7.0 as in this case)
Our Sender message interface
name is MI_GetTransactionkeyStatus
Which is OUTBOUND and SYNCHRONOUS
Here, the exact method which we are
going to call in WebService is
GetTransactionKeyStatus_InputMessage
We will receive the response
from another method called GetTransactionKeyStatus_OutputMessage
What we are giving below are
Message types created by us.
Our Receiver Message Interface name
is MI_GetTransactionKeyStatus_Response
Which is INBOUND and SYNCHRONOUS
You can import these two
methods from External Definition which will be provided by Receiver system. The
NameSpace will be from the Webservice org. Here
Now, Creating Message mappings.
We need 2 message mappings one for
making request and one for taking the Response.
MI_GetTransactionkeyStatus Check here the request is ClientTransactionID, Constant & first
node to Node mapping as-is this changes on various requirements.
2nd mapping for
capturing response from SOAP and passing it to SAP MM_GetTransactionKeyStatus_Response
The values we get here as given
above in response structure.
We will be having only one
Interface mapping as request & response
Provide the Message interfaces you
created source side as Request and Target side as Response and give the Message
mapping we created first as it is the
request & click on Read interfaces button you will get the Source &
target Messages on either side.
Now you will see Response tab
popping up and provide the Message mapping program name for it which end with
MM_***Response.Click Read interfaces.
You will see a different source
& target for your confirmation.(actually not different but already defined)
You are done with IR part of your
Synchronous Proxy to SOAP interface design.
CONFIGURATION :
You need two communication channels
in order to make a request and capture response back.
Sender Comm channel adapter for Proxy is
XI
Security check for Incoming
messages select [ HTTP ]
Receiver
Comm Channel adapter for WebService is SOAP
In the receiver comm channel
at Connection Parameters provide the Target URL [ provided by the webservice ]
Importantly,
Provide the Soap Action for the method you are calling. You will get this in
SoapUI.
One important catch here for those who are facing issues in adding soap Envelop to source message and removing
that soap envelop while taking response from Webservice. You need to add the
below module name as-it-is . That will solve the problem. Else we need to
incorporate and xslt mapping to do that work for us adding it in our Interface
mapping which may be hectic.
Module name :
Create Receiver
Determination: You will be giving Sender
as SAP and interface name as the one you created for request message. Which is GetTransactionKeyStatus
Interface Determination : You will
be passing the Sender details as above in receiverdetermination. If you are
using PI7.0 version as in this eg: Fisrt you need to give interface mapping
select from drop down, then Inbound Interface name which is GetTransactionKeyStatus
Now create Receiver Agreement as
below & provide the Receiver CommChannel.[ CC_SOAP_GetTransactionKeyStatus_Response
]
With this your Synchronous
interface is complete and make sure you activated all objects and clear SLD data Cache from Environment
in the menu.
Trigger the Proxy from SAP side
with relavent data. You will be receiving the response from WebService.
We don’t have sender Agreement
being Proxy Sender.