cancel
Showing results for 
Search instead for 
Did you mean: 

Call external webservice : Problems with creating proxy based on WSDL

Former Member
0 Kudos

Hi guys,

I'm trying to create a clientproxy to call a webservice. The wsdl i use contains one function i can call, and as the response an xsd is used... I think sap has a problem with this :).

Well, this is a part of the wsdl :


      <s:element name="SapPlanningOphalenResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="SapPlanningOphalenResult">
              <s:complexType>
                <s:sequence>
                  <s:any namespace="http://tempuri.org/dsPlanningSap.xsd" />
                </s:sequence>
              </s:complexType>
            </s:element>
          </s:sequence>
        </s:complexType>
      </s:element>

When the proxy is generated, i have an extra tabfolder with a warning message :

Structure ZWSSAP_PLANNING_OPHALEN_SOAP_O

<any>,<anyAttribute> not supported

I think there is a problem with the link to the xsd file, wich only contains a description of the structure i should get back...

This is the part of the xsd with the structure of the response.


 <xs:element msdata:IsDataSet="true" msdata:UseCurrentLocale="true" name="dsPlanningSap">
   <xs:complexType>
     <xs:choice minOccurs="0" maxOccurs="unbounded">
       <xs:element name="WachtDiensten">
         <xs:complexType>
           <xs:sequence>
             <xs:element minOccurs="0" name="PERNR">
               <xs:simpleType>
                 <xs:restriction base="xs:string">
                   <xs:maxLength value="8" /> 
                 </xs:restriction>
               </xs:simpleType>
             </xs:element>
             <xs:element minOccurs="0" name="BEGDA" type="xs:string" /> 
             <xs:element minOccurs="0" name="ENDDA" type="xs:string" /> 
             <xs:element minOccurs="0" name="BEGUZ" type="xs:string" /> 
             <xs:element minOccurs="0" name="ENDUZ" type="xs:string" /> 
           </xs:sequence>
         </xs:complexType>
       </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>

Is there a solution for this or does anyone know what the problem can be and how to solve it?

Thanks in advance,

Kind Regards,

Tom

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Tom,

I was answering some other question and then came across to this one.

Hope similar info is required.

According to the links provided in ABAP proxy supported types, it supports 'any' element but with warnings . Go through these links.

http://help.sap.com/saphelp_nw04/helpdata/en/de/705c3c3806af06e10000000a11402f/content.htm

If you want to know the supported WSDLand XSD types by ABAP, go through this link.

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/c0abcc5a-1569-2a10-e6b7-8e5d108a...

The above link is for PI 7.0. Similar document is available for PI 7.1 also

This PDF document contains doesn't contain any info but it contains a link where you can download the excel.

Regsrds,

Piyush

Former Member
0 Kudos

Piyush,

the Excel you provided (indirectly) states that 'any' is Ignored with Warning on ABAP.

anton

Former Member
0 Kudos

Yes Anton,

You are right.But they are not saying that it is not supported. For non-supporting types, they have clearly marked it as "Not-Supported".

Are you able to draw difference between both?

Help will be appreciated

Regards,

Piyush

Former Member
0 Kudos

well, i am no linguist but for me if a feature is ignored with or without warning it has the same effect than if the feature were not supported.

anton

Answers (1)

Answers (1)

Former Member
0 Kudos

as far as I know SAP does not support xsd:any or xsd:anyType. One probable reason is that it is not WS-I compliant.

In my opinion xsd:any aims to support a polymorphism which does make sense in a closed environment but does not make sense in a SOA and therefore it is a good move not to support it.

if you know the WSDL fragment anyway, just fake the complete WSDL and create a service consumer from it; your service consumer will then create valid XMLs until someone changes the piece behind 'any'.

regards,

anton

Former Member
0 Kudos

thanks for the awnser i did not want to hear... :).

I can fake the wsdl, but then the next problem arises :(.

<xs:choice minOccurs="0" maxOccurs="unbounded">

With that part there is a problem in SAP, but there is a note to solve that problem. When i want to implement that note, there are a lot of other problems with snote. If i can't solve those problems, i come back :).

thanks again,

Tom

Former Member
0 Kudos

for the record:

youd did probably mean note [1131786|https://service.sap.com/sap/support/notes/1131786] and the succeeding note [1139475|https://service.sap.com/sap/support/notes/1139475].

nice. didn't know they did include xsd:choice.

Former Member
0 Kudos

yes, that are the notes :).

I'm currently busy with implementing those notes, but this is just hell. (sorry for my words ).

Other notes should be implemented first, 0001119284 for instance, but the methods that should be changed, are on our system completely different from those methods in the note :(.

the changing methods are :

create_attr_group_node

create_dom

create_group_node

From the class: cl_proxy_abap2wsdl

How can i find out what the content of those methods should be after implementing that note?

Thanks already for the awnsers!

Kind regards,

Tom