cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP Sender - XI - RFC

Former Member
0 Kudos

Hi,

I am planning to expose one of my rfc as soap service to outside .

I have imported the RFC into XI.and created a wsdl from the ID.

But I don't how to create a message type for the sender soap request.the rfc takes some input parameter and return some value.so i guess my soap sender will have an export/import parameter in the oppposite way.But my problem how do i create a datatype for it since it involves a request/response.I guess i have to use the wsdl for the soap request/response in the external defintion.but is there a tool which i can use to generate this.

And I planning to use stylus studio for making webservice call / simulating a soap request.

ANy input will be appreciated.

THnks

Accepted Solutions (1)

Accepted Solutions (1)

moorthy
Active Contributor
0 Kudos

Hi,

You need to use wsdl for the sender Side. How you have created a wsdl here? without data Type/Message type..

Create 2 data types/messages types as Req and Resp. and then proceed

Check these-

/people/riyaz.sayyad/blog/2006/05/07/consuming-xi-web-services-using-web-dynpro-150-part-i

/people/siva.maranani/blog/2005/03/01/testing-xi-exposed-web-services

/people/siva.maranani/blog/2005/09/03/invoke-webservices-using-sapxi

Regards,

Moorthy

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi Chinna,

If you're on WAS 6.20 and up, you can expose an RFC as a webservice directly from WAS.

Or if you’re on Basis layer 4.6D, you'll need to use XI (or some other integration tool) to expose the RFC as a webservice.

To do this in XI you'll need to:

Integration Repository

1) Import the RFC

2) Define a message and datatype for the SOAP interface

3) Create inbound and outbound interfaces

4) Create maps between the RFC and SOAP messages

5) Create an interface map

Integration Directory

1) Create an RFC Receiver Channel

2) Create a SOAP Sender Channel

3) Generate the WSDL (Tools->Define Web Service)

You can then handoff the WSDL and a login username and password to your developer and they will have everything they need to make the WS call.

Here are answers to a few doubts u might have:

1) Do I need to actually create a WS that calls the RFC ? Isn’t the virtual interface exposed by the XI sufficient?

Yes, you need to create a WS in XI that calls the RFC.

2) If I really have to create the WS and deploy it in order to expose it with the XI, then what is my benefit of exposing it with the XI, why not just exposing it as a normal WS ?

You don't have WAS 6.20 or up. Even if you did, you may still want to expose it using XI in order to have all of your integration go through the same application.

3) If I expose my web service through the XI, how does the client application executes one of its methods? To which url does it have to access (the XI or the actual WS)?

You expose a SOAP interface in XI by generating a WSDL file. This file contains all of the information a developer will need to call the webservice including the URL.

You actually specify the URL when you generate the WSDL. Be sure to read the documentation to get the correct format because the URL that the wizard suggests isn't correct.

Regards,

Abhy

Former Member
0 Kudos

Hi,

In scenarios like yours SOAP -> RFC, one would usually create an interface in XI, say requestUserLookup, with message types

request : UserLookupRequest

response : UserLookupResponse.

Now map this inteface to the RFC that you have imported into IR say Z_RFC_USER_DETAILS

Map the corresponding request and response objects.

UserLookupRequest => Z_RFC_USER_DETAILS.request

Z_RFC_USER_DETAILS.response => UserLookupResponse

In Configuration Directory you will have to generate WSDl of the interface requestUserLookup that you created in IR.

Cheers,

Naveen