on 01-30-2008 9:58 AM
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
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
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
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
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
HI all,
I have the same problem!!
What was the result?
Is "<extension>" really not supported???
What is the workaround??
Thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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>
User | Count |
---|---|
95 | |
11 | |
11 | |
10 | |
9 | |
8 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.