cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP --> XI --> IDoc, How-To

Former Member
0 Kudos

Hello all,

I have the following requirement:

A stored procedure should return status information on a database operation to the SOAP Sender Channel and writing status data into a Message Interface (status code, IDoc Number) This data should then be mapped to a SYSTAT IDoc and sent to an SAP System.

I have already created the Sender Interface (MI_SOAP_SENDER) and a SOAP Sender Adapter:

1. Taken the GetStockQuote as example for a SOAP Call from a stored procedure how should I replace the values to deliver the fields to the message interface SOAP_SENDER (I have already added MI_SOAP_SENDER)?

T_CMD_SOAP := soap_api.new_request(p_method => 'ns1:getQuote',

p_namespace => 'xmlns:ns1="urn:xmethods-delayed-quotes"');

soap_api.add_parameter(p_request => MI_CMD_SOAP,

p_name => 'returnCode',

p_type => 'xsd:string',

p_value => statuscode);

l_response := soap_api.invoke(p_request => MT_CMD_SOAP,

p_url => server name:52400/XISOAPAdapter/MessageServlet?channel=:CMD_D:CMD_SOAP_SENDER',

p_action => 'urn:xmethods-delayed-quotes#getQuote');

l_price := soap_api.get_return_value(p_response => l_response,

p_name => 'Result',

p_namespace => 'xmlns:ns1="urn:xmethods-delayed-quotes"');

2. When I want to create a WebService from Integration Directory and press "Finish" I see that the "red wheel" is runnin but nothing happens even after 5 minutes. What could be the reason for this?

Thank you for your comments and help for this scenario

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Florian,

I don't understand: A stored procedure should return the information to SOAP sender channel??

How is this possible?

There must be SOAP client on the sender side..

Peter

Former Member
0 Kudos

Hello,

maybe my request was a little bit misleading.

I wanted to use the soap_api ( with methods new_request, add_parameter, soap_api.invoke ...) from Oracle side.

The question is what service should be invoked in case of an asynchronous soap --> IDoc scenario.

Requirement is just to deliver some parameters to the sender messsage interface, map them into a SYSTAT IDoc and send it.

Former Member
0 Kudos

Floarian,

when you want to call XI as Web Service server, you must call:

a, MessageServlet of AE - for SOAP sender adapter

b, if no attachments are used, you can call Integration Engine directly..

SO:

create async outbound interface first which uses the data structure, which will be used as SOAP request

then you can make:

a, call to AE like:

http://<ae-host>:<port>/XISOAPAdapter/MessageServlet?channel=<party>:<bs>:<communication_channel>;

ex:

http://crmides:50000/XISOAPAdapter/MessageServlet?channel=:XIMAC_XID:CC_Cutomer_Detail_For_SAOP

or do direct call to IE:

see <a href="/people/stefan.grube/blog/2006/09/21/using-the-soap-inbound-channel-of-the-integration-engine target="d">this</a>

Peter

Former Member
0 Kudos

Thank you for this information.

Ok this is the URL for sending a request message.

Now the question is how I can hand over the data using the soap_api of Oracle.

One method of the soap api is "invoke" however in an asynchronous scenario there is no service to invoke I think? Is this correct?

Former Member
0 Kudos

Florian,

of course there is a service to be invoked.. Difference between async and sync outbound interface using SOAP is, that in async you get empty soap response..

I don't know how oracle's soap invoke works, so I can't help you.. Normally you create WSDL on XI which is imported to SOAP client and this WSDL is in client used to send appriopriate SOAP request to sender..

Can you import WSDL into Oracle?

Peter

Former Member
0 Kudos

Hello,

as far as I know I cannot import a WSDL into oracle but have to add the parameters manually (WSDL creation does not work either on SAP XI side for me as after clicking the "finish" button the WSDL creation procedure is running but without any result).

In Oracle there is one method api.invoke that takes the

- request message

- URL

- action (service to invoke)

as input parameter

as request message I would include the message interface and as URL you proposed but I do not know what kind of action to specifiy in the asynchronous scenario.

What kind of action is normally specified if I use the "define web service.." wizard in the Integration Directory?

As said, this wizard does not work in my case

l_response := soap_api.invoke(p_request => l_request,

p_url => 'http://64.124.140.30:9090/soap',

p_action => 'urn:xmethods-delayed-quotes#getQuote');

Former Member
0 Kudos

florian,

action would be seen in the wsdl... Hmmm... Strange, it is not workung for you..

And is your interface correctly activated?

Peter

Former Member
0 Kudos

Hello,

yes, I think the critical point is that I cannot create the WSDL which would be important as I would see all necessary parameters in there.

I have created a simple outbound MI which is also correctly activated as well as the Sender SOAP channel.

However the "define webservice" wizard does not work. It just runs without giving back any error message. I really do not know what is happening there or what else I could try to do......

Former Member
0 Kudos

Florian, try to export your interface and import it into another XI environment.. Try the wizard there..

so if it is not woking in DEV, try the wizard in Q or PRO

Peter

Former Member
0 Kudos

Yes, this would be an idea, however I do not have access to Q or P environment. Is there a way to check alternatively which action should be invoked in an asynchronous scenario?

Former Member
0 Kudos

Florian, try this:

Action: http://sap.com/xi/WebService/soap1.1

it is soapAction generated from my WSDL when I tried it in Define Web Service tool.

Peter

Former Member
0 Kudos

Hello,

this is great! I will try it. What is defined as outpout parameters in your WSDL in case it is only an asynchronous scenario?

Thank you!

Former Member
0 Kudos

it will return empty SOAP document... (message)

Peter