cancel
Showing results for 
Search instead for 
Did you mean: 

WSDL with messages consisting of multiple parts

Former Member
0 Kudos

Hi,

I need to create an ABAP client for a Web Service. In the WSDL of the Service I want to call, there are messages consisting of multiple parts like this one:


  	<message name="AddOrUpdateSeekersIn">
    		<part name="header" element="mh:MonsterHeader"/>
     		<part name="catheader" element="cat:CompanyAuthHeader"/>
   		<part name="body" element="monster:JobSeekers"/>
  	</message>

I've found a document that says this is not supported by the ABAP Proxy Generation wizard.

On the ABAP forum () someone suggested me to ask for advice here on whether I would modify the WSDL so that the message only contains one part. Is this possible and how would I do that?

Thanks,

Tim

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Have u ever know the agile way of building messages for SERVICE by reusing data types in XSDS?

When ever u define a Service and Service Operation you have to define Request, Response, Fault messages for EACH Service operation.

A message is not always same as DATA, however a message is the DATA representation in a SERVICE operation context to address the operation Request, Response and FAULT (Exception)

Always try to build the message requirement of a service operation in such a way so that we can reuse the data types.

So during the service requirement analysis, decompose all DATA REKS such a way so that we can build data entities as

atomic data types

composite data types and

canonical data types in a such a way

atomic data types are part of composite data types

and composite data types are part of canonical data types

and canonical data types map to business service operation request and response

composite or atomic data types map to FAULT messages

This way you will have an agile approach to fullfill the data requirement of messages in services context, also can avoid the technology limitation in service enabled platform such as ABAP R3

PS: there might be a other temp solution, but this should be the way we do in SOA practice.

Thanks

Former Member
0 Kudos

Hi Shaji,

Thanks for your reply. I don't know if I made myself clear, but I'm trying to build a client for an existing service that I don't control. I thought I could modify the WSDL by combining some message parts in one part and making complex types. Is this not possible then?

Thanks,

Tim

Former Member
0 Kudos

hi tim,

the last answer is kind of funny isn't it? )

actually your problem is know as the "document type vs. rpc type WSDL" problem. these are simply two different possibilities on how to organize a WSDL.

now, usually a programming environment should be able to allow the creation of clients for both types of WSDLs. unfortunately ABAP isn't able to create clients for RPC style WSDLs - as well as MS based environments are AFAIK not able to do so, whereas RPC style WSDLs are very common in Java.

as you might have noticed in services within ABAP, in this environment you have the option to display a service definition optionally in RPC or document style. If your existing service's environment allows for this option too, just use the document style variant. if this isn't possible, you might browse the internet and read more about the RPC vs document problem and find some pointer to a said fact, that RPC is a subset of document style and therefore expressable in document style. i have never tried that though and I am not sure if this is correct in general.

my 2 cents, anton

Former Member
0 Kudos

Hi Anton,

Thanks for pointing this out. I am aware of the difference between RPC and document style Services. The service I'm trying to call is document style, though. You can find the WSDL here http://schemas.monster.com/current/wsdl/MonsterBusinessGateway.wsdl

Unfortunately, ABAP proxy generation doesn't support messages consisting of multiple parts. I thought there was a way to bypass this, but obviously there isn't. I'll probably use the BC (no XI here) then.

Cheers,

Tim

Former Member
0 Kudos

Hi Tim,

The link which you have posted containd Document-literal typr web services. it is nor RPC style.

<soapbind:operation soapAction="" style="document" />

and I think think that document style web service is supported by ABAP.

Regards,

Piyush

Former Member
0 Kudos

Guys,

I know the service is document style, as you can read above. The problem is the message consisting of multiple parts which is not supported by ABAP proxy generation.

Former Member
0 Kudos

hi,

currently the type of WSDL required by WAS ABAP for automatic proxy generation is the so called 'wrapped document literal'. Wrapped means that the body element is made to contain one child only. this is understood by a large part of the industry to be necessary to be fully WS-I compliant.

Further info can be found [here|http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/].

Especially read the notes bout 'where is doc/lit wrapped' defined, 'why not use ... all the time' and 'a note about overloaded operations'.

doesn't help much but explain the status quo.

anton

Former Member
0 Kudos

Hi Anton,

Thanks, this was very helpful. Now at least I know where I stand. Looks like I won't be able to use ABAP proxy generation for this service and I need to look for an alternative like the Business Connector.

Cheers,

Tim

0 Kudos

Hi,

Not all features of XSD are supported for ABAP proxy generation. Unfortunately a WSDL message with several parts is not supported when creating an ABAP Proxy. However WSDL messages that contain several parts are supported with Java Proxies.

SAP's development team is planning to include this functionality in future SPS release.

The most up-to-date document regarding XML Schema supported features

in ABAP (and JAVA) Proxy environment can be found at the location

specified in the attached note:

944029 XML Schema supported by ABAP proxy generation

Thanks,

Raj Chintam

LeonardoAraujo
Active Contributor
0 Kudos

Hi,

Could any one you please confirm if the error I am getting is of the same nature of the one of this post?

When generating the PROXY, I get an error:

Proxy generation terminated: WSDL error (<extension> not supported)

Diagnosis

The language element

"<extension>"

was used in the WSDL document.

This language element is not supported by ABAP proxy generation.

[url]

[url]

Thanks in advance.

Leonardo De Araujo

Answers (1)

Answers (1)

NabiZamani
Contributor
0 Kudos

HI all,

I have the same problem!!

What was the result?

Is "<extension>" really not supported???

What is the workaround??

Thanks

Former Member
0 Kudos

hi,

extension is not supported and the workaround obvious though sometimes painful.

e.g. if B extends A by adding C (in pseudocode)


<B>
  <extension base=A>
    <C type=any />
  </extension>
</B>

and A is defined as something like


<A>
  <A1 type=any />
  <A2 type=string />
</A>

then the replacement for B would be


<B>
  <A1 type=any />
  <A2 type=string />
  <C type=any />
</B>