Can SAP handle RPC/encoded WSDLs

I am not sure whether this is the right forum for this question, but i'll give it a try:
I have a WSDL file (web service decription) from a 3rd party tool, which is RPC/encoded, and I tried to generated an ABAP proxy class (SAP Basis 7.01). During the generation I get a couple of different errors, and the one that bothers me most is
"incorrect value for attribute use: "encoded"".
When I replace all occurrences of "use="encoded"" with "use="literal"", then the proxy generation will work, but in this case, the web service call will not work anymore (probably because the encoded response from the webservice cannot be read by the proxy class).
What can I do?
Any hints are welcome.

Hi,
It seems only RPC with literal will be supported in future.
Quote from wiki Please see this:
"Some of these combinations are rarely used in practice, such as document/encoded. In general, the literal use is gaining importance, and as far as RPC/encoded is concerned, the Web Services Interoperability Organization (WS-I) in its Basic Profile Version 1.0a of August 2003 ruled out the use of SOAP encoding with web services. Document/literal and RPC/literal will be the only allowed style/use combinations in the future."
Detail wiki is available here: http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/c018da90-0201-0010-ed85-d714ff7b7019
Regards,
Gourav
Edited by: Gourav Khare on Oct 13, 2009 12:28 AM

Similar Messages

  • Problem with RPC/encoded WSDL

    I'm having trouble calling a web service that is based on an RPC-encoded WSDL. I've already made slight changes to the WSDL, so that I get a work-able message type for mapping purposes. These changes are based on <a href="http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html#refinement16556272"><b>soapenc:Array</b> recommendations in WSDL 1.1 Section 2.2</a> for declaration of array types.
    Here's a snippet of the WSDL:
    <wsdl:definitions ...> 
      <wsdl:types>   
        <schema ...>
          <complexType name="ArrayOf_tns1_ServiceOption">
            <complexContent>
              <restriction base="soapenc:Array">
                <attribute ref="soapenc:arrayType"
                  wsdl:arrayType="tns1:ServiceOption[]"
                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
              </restriction>
            </complexContent>
          </complexType>
        </schema>
        <schema ...>
          <complexType name="ServiceOption">
            <sequence>
              <element name="key" nillable="true"
                        type="xsd:string"/>
              <element name="value" nillable="true"
                        type="xsd:string"/>
            </sequence>
          </complexType>
        </schema>
      </wsdl:types>
    </wsdl:definitions>
    I've changed it to:
    <wsdl:definitions ...> 
      <wsdl:types>   
        <schema ...>
          <complexType name="ArrayOf_tns1_ServiceOption">
            <sequence>
              <element name="ServiceOption"
                        type="tns1:ServiceOption"
                        minOccurs="0" maxOccurs="unbounded"/>
            </sequence>
          </complexType>
        </schema>
        </schema>
        <schema ...>
          <complexType name="ServiceOption">
            <sequence>
              <element name="key" nillable="true"
                        type="xsd:string"/>
              <element name="value" nillable="true"
                        type="xsd:string"/>
            </sequence>
          </complexType>
        </schema>
      </wsdl:types>
    </wsdl:definitions>
    The above changes have allowed me to make message mappings. But the I still get an error when sending a request to the web service. It seems that it requires the <b>xsi:type</b> and <b>soapenc:arrayType</b> attributes for arrays.
    <b>How can I create these attributes? How does XI handle RPC-encoded WSDLs?</b> I haven't encountered these problems with document-literal WSDLs.
    Thanks in advance.

    Hi Lorenzo,
    the extended support of rpc-style does <b>not</b> include the support of soapenc:array. It just addresses the root of the message and its direct children (as discussed in the thread where I added this hint).
    In the documentation of External Definitions you can find a hint where to find a list of supported XSD/DTD/WSDL-features. However, also there you will find no hint on the fact that soapenc:array is not supported. The reason for this is, that soapenc:array is specified in none of these standards. It is some artifact that SOAP smuggled into XSD. For good reasons WS-I prohibits the use of this artifact.
    Hence, if you need support for argumentation I can only point out the WS-I document I already linked.
    Greetings
    Stephan

  • How to read/use RPC/Encoded WSDL in BPEL

    Hi All,
    We are developing a new application using Oracle BPEL and interface with an existing application.
    The existing application (in mainframes) sends us the wsdl in rpc/encoded format.
    How to read thie wsdl into BPEL? What we found so far is that we can use document/literal wsdl only.
    Is there a way to read rpc/encoded wsdl in bpel?
    Or a way to convert rpc/encoded wsdl into doucment/literal format wsdl so that it can be used in bpel?
    Or any java code in between which can do this transformation?
    Please help.
    Thanks
    Shiva

    Steve,
    You need to do the following in order to get file and folder names from File/FTP adapter.
    1. fileAdapterInboundHeader.wsdl, FTPAdapterInboundHeader.wsdl files does have header structure for file and FTP adapter respectively. These files have the following Header definition:
    <types>
    <schema attributeFormDefault="qualified" elementFormDefault="qualified"
    targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/file/"
    xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:FILEAPP="http://xmlns.oracle.com/pcbpel/adapter/file/">
    <element name="InboundFileHeaderType">
    <complexType>
    <sequence>
    <element name="fileName" type="string"/>
    <element name="directory" type="string"/>
    </sequence>
    </complexType>
    </element>
    </schema>
    </types>
    <!-- Header Message -->
    <message name="InboundHeader_msg">
    <part element="tns:InboundFileHeaderType" name="inboundHeader"/>
    </message>
    2. You need to create a variable of message type InboundHeader_msg.
         2.a. Open variable creation dialog box. Choose Message Type as type and open the Type Chooser.
         2.b. Expend Message Type and then expend Project WSDL Files.
         2.c. You will see fileAdapterInboundHeader.wsdl/ftpAdapterInboundHeader.wsdl there.
         2.d. Expend the wsdl file and select message type InboundHeader_msg.
    3. Now you have your header variable, double click on Receive activity and go to Adapter tab.
    4. Select header variable you have created using above steps as Header Variable.
    5. Add an assign activity to get fileName and directory from the header variable you have created.
    6. Your header variable will be populated while adapter reads the file.
    Regards,
    Dharmendra
    http://soa-howto.blogspot.com

  • How to handle rpc/encoded style messages using BizTalk?

    I am integrating with a lot of services and one of our customers has a service with rpc/encoded style
    I could consume and generate schema from their wsdl file via BizTalk consume WCF wizard.
    Once I am trying to call the service with request message that generated from the schema, it is giving an error that can not desterilize the first element of the message. 
    No Deserializer found to deserialize a 'FieldName' using encoding style 'null'
    I compared the stub xml request message from SaopUI and I noticed that the xml expecting the data type with the element like this .
    <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsb="WSBanka">
    <soapenv:Header/>
    <soapenv:Body>
    <wsb:bnkBorcsorgulama soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <sozlesmeNo xsi:type="xsd:string">?</sozlesmeNo>
    <bankaKodu xsi:type="xsd:string">?</bankaKodu>
    <anahtar xsi:type="xsd:string">?</anahtar>
    </wsb:bnkBorcsorgulama>
    </soapenv:Body>
    </soapenv:Envelope>
    On the other hand, I got the request of the message from Fiddler using the BizTalk , and the generate xml of the BizTalk schema without the data type.
    <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsb="WSBanka">
    <soapenv:Header/>
    <soapenv:Body>
    <wsb:bnkBorcsorgulama>
    <sozlesmeNo>?</sozlesmeNo>
    <bankaKodu>?</bankaKodu>
    <anahtar>?</anahtar>
    </wsb:bnkBorcsorgulama>
    </soapenv:Body>
    </soapenv:Envelope>
    In SoapUi, if I remove a datatype from the message, I will get same error from the BizTalk request.
    I read some articles that rpc/encoded style are not supported but I am not sure and these articles are not clear.
    I also read that it was supported with Soap adapter but now it is deprecated.
    So, Is there any one has an experience in rpc/encoded style messages and how to handle these message in BizTalk or is there any work around to handle these messages?
    Your inputs really appreciate it.
    Thanks in advance,
    When you see answers and helpful posts, please click Vote As Helpful, Propose As Answer, and/or Mark As Answer

    Hi,
    Please refer to the document which might help you:
    #RPC/Encoded Style
    http://www.c-sharpcorner.com/UploadFile/martinkropp/DesigningInteroperableWebService11232005044847AM/DesigningInteroperableWebService.aspx

  • How to create RPC encoded wsdl for the bpel project created in jdeveloper?

    Hi,
    I have to create a bpel project in jdeveloper with the wsdl of the project in rpc encoded format. By default when we create a bpel project in jdeveloper it creates a wsdl file of document literal format, but i need the wsdl to be rpc encoded format. Please let me know how can i achieve this.
    Thanks.

    Hi Nico,
    Thanks for your reply.
    You mentioned to specify type in place of element, from where do you get this type and what more changes we need to do for the entire project to compile well with out errors.
    As suggested by you, I changed the element to type and tried to compile, it is giving the below error.
    Error:
    [Error ORABPEL-10902]: compilation failed
    [Description]: in "bpel.xml", XML parsing failed because "undefined part type.
    In WSDL at "file:/D:/indu/jdevstudio10134/jdev/mywork/TimerApplication/SelectDB/bpel/SelectDB.wsdl", message part type "SelectDBProcessRequestType" is not defined in any of the schemas.
    Please make sure the spelling of the type QName is correct and the WSDL import is complete.
    [Potential fix]: n/a.
    Please let me know what are all the changes that need to be done to complie the project successfully.
    Thanks and Regards.

  • Can XI handle RPC based web services ?

    Is it possible with XI 3.0 to work with RPC based webservices rather than Document based services.
    If it can, can some one send me sample configuration for SOAP Receiver and SOAP Sender.
    I have successfully configured an  SOAP Receiver to access external web service on internet which is a document based but I am having difficulty in accessing rpc based webservice on intranet.
    We are on XI 3.0 SP 14. Appreciate your comments on this topic.
    Thanks
    Prasad

    Hi John!
    > Is using RPC style web services supported out of the
    > box within XI? I have read some forums that suggest
    > only document style are and would like a definitive
    > answer.
    I have opened an OSS message regarding this topic and I was told that RPC-style Web Services are not supported within the XI SOAP adapter. Our current workaround which adds the missing Web Service operation using an additional XSLT mapping is not sufficient. Instead we have to change our WSDL from RPC-style into document-literal style.
    Regards, Tanja

  • Can SAP handle intercompany transactions?

    If yes how? For example I want my advance tax return to reflect intercomany transactions. Is this possible?

    Hi,
    There are options for this. It me not really clear what you want. Have in look in the documentation  to "Plants Abroad" if this fit what you want
    Paul

  • Supports ORACLE PM RPC/encoded ?

    Hello !
    Is it possible, that the Process Manager can't handle RPC/encoded style ?
    Axis send multirefs, when RPC/encoded style is used by webservices ! The ORACLE PM can't handle multirefs. Is a webservice send a message to a BPEL process, deployed on a oracle PM, and the message from the webservice contains multirefs, the Oracle PM gives a fault like NullPointerException !
    Have anybody similar experiences ? Is it posible to configure the Oracle PM handle multiref or RPC/encoded style correct ?
    Thanks

    I have a bug logged against this issue, bug # is 5990259. However, the service I was calling is no longer available, so development can't reproduce it... If you gave them your example as well maybe they could progress this bug? Anyway BPEL does work with RPC/Encoded, it just doesn't like those multi refs. The company we were interacting with was using WebObjects, which was behaving exactly as in your example, and they changed an option on the web service to get rid of the multi refs and it worked (was still RPC/Encoded).

  • RPC/encoded style

    Hi Experts,
    I have read it in some forum thread stating that, we can't use RPC/encoded style in XI. Even if we get RPC style wsdl files from other platforms we have to first convert it into Document style to access XI.
    Question:
    When we create wsdl thro' XI also, it automatically creates with document style. Do we have any option to create a wsdl file with RPC style? If it is not possible with XI then, is there any other way to create RPC style wsdl file for the XI service.
    Regards
    Sara

    Yes its possible,
    Please check following :-
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/c018da90-0201-0010-ed85-d714ff7b7019
    RPC WSDL in XI
    Vishal
    Reward points for useful Help

  • Generate Client Proxy from a RPC-Style encoded WSDL

    Hi Experts,
    I was just trying to consume a RPC-Style encoded WSDL,
    but the creation of the client proxy failed with the following error message:
    Exception occurred in library handler     
    Incorrect value: Unknown Namespace http://schemas.xmlsoap.org/soap/encoding/     
    Does anyone know, if it's possible to consume a RPC-Style encoded Web Service?
    Thanks in advance!

    Hi Sandeep,
    Could you try invoking clientgen [1] directly to see if this properly
    consumes your WSDL?
    Thanks,
    Bruce
    [1]
    http://e-docs.bea.com/wls/docs81/webserv/anttasks.html#1080160
    Sandeep wrote:
    >
    Hi,
    I am using Weblogic 8.1 SP1. I created a webservice which takes a XMLBean object
    as parameter and returns another XMLBean object. The web service works fine when
    tested using the workshop's test browser but when i am trying to generate a client
    proxy trough the workshop's test browser, it displays this warning:
    Failed to generate client proxy from WSDL definition for this service
    and does not generate the proxy.
    I'll appreciate any thoughts on this.
    Thanks
    Sandeep

  • SOAP adapter and WS with rpc/encoded

    Hi All,
    Does anyone know if and how the SAP XI 3.0 SOAP Adapter supports WebServices which expects XML messages in rpc/encoded.
    Cheers,
    FRank

    Hi Frank,
    I have the same issue and I got a reply from OSS:
      This problem is caused by the diversification of the WSDL binding
    styles.
      A Web service is described by a WSDL document. A WSDL binding
    describes how the service is bound to a messaging protocol, particularly
    the SOAP messaging protocol. A WSDL SOAP binding can be either an RPC
    style binding or a document style binding. A SOAP binding can also have
    an encoded use or a literal use. This gives us four style/use models:
    - RPC/encoded
    - RPC/literal
    - document/encoded(It will probably disappear from future versions of
    WSDL.)
    - document/literal
      RPC styled web services have serious interoperability problems. This
    is the reason that the rpc style is not in the basic profile
    specification of the web interoperability and also it has been
    deprecated in the current soap specification. For these reason, the
    integration directory does not currently support the RPC style! I would
    suggest you to use other document style web service provider if possible
    . It's the best way to solve this problem. But if you persist in using
    this RPC web service provider, we still have a workaround solution:
    you need to convert your RPC wsdl to a document styled wsdl and import
    it to  the directory and if necessary, you need to add some mapping to
    solve some RPC interoperability problems.
      In your case,
    1. The WSDL file you used is RPC style.
    2. The XI SOAP adapter doesn't support the RPC style. It only sends the
    document/literal SOAP message which can't be understand by your web
    service provider.
      One of the significant differences between the SOAP message of RPC
    style and that of the document style: the operation name is contained in
    the RPC style SOAP message but not in the document's.
      However, you can't solve this problem by simply specify a method
    name. What you should do is convert your RPC wsdl to a document styled
    wsdl. RPC turns out to be a subset of document/literal. This
    means for any given RPC WSDL, you can create a completely
    equivalent document/literal WSDL that would describe the same wire
    messages. Here are the steps for doing this (mostly schema element
    declarations).
    Solution:
    For each RPC operation:
    1. For each part in the input and output messages of that operation,
    declare a type with the contents described in step 2.
    2. Declare an element with the name of the part, the type referenced by
    type=". The element form must be unqualified.
    3. Declare a global element with the operation name and the namespace
    from soap:body/@namespace in the binding. Make the type of this element
    the one defined in step 1 for the input message.
    4. Declare a global element with the operation name and the word
    Response appended to it and the namespace from soap:body/@namespace in
    the binding. Make the type of this element the one defined in step 1 for
    the output message.
    5. Change the input message to contain one part and reference the
    element you declared in step 3.
    6. Change the output message to contain one part and reference the
    element you declared in step 4.
    7. Change the style to document in the binding.
      After that, import the new WSDL file to the integration directory. You
    will find the "method name" appears in the document style SOAP message.
    But actually it's the name of the input element which is the same as
    the name of the operation. It's just a little trick.
    Cheers Stefan

  • Import RPC-style WSDL

    Hello!
    I currently implement a RFC -> RFC adapter -> XI -> SOAP adapter -> Web Service scenario. I have imported the WSDL of the Web Service as External Definition into the Integration Repository to use it for the RFC <-> Web Service mapping within the graphical mapping tool.
    Until now I only have imported document-style WSDL and there never have been any problems. Now the WSDL is RPC-style which means that the messages described by the <wsdl:types>...</wsdl:types> part should be enclosed by an additonal structure describing the Web Service operation to be executed.
    However, in the graphical mapping tool the structure for  the Web Service operation is missing and thus the Web Service call cannot be executed. How can I solve this problem without changing the WSDL or creating an additional XLST or Java mapping?
    It seems that there is no problem with the WSDL. When I loaded it with the Web Service Navigator test tool of the SAP Web Application Server the structure describing the Web Service operation has been generated in the request message.
    Regards, Tanja Schättler

    Hi Tanja
    Check this note 856597, it even has some examples of WSDL documents and sample SOAP messages that illustrate how one can write an equivalent WSDL in another style.
    A snippet from the note,
    "Q: Can I convert an RPC styled WSDL to a document styled WSDL?
                A: It is difficult to answer yes or no because the answer depends on the WSDL instance and the implementation of the code that binds the XML instance to some native object. The problem comes from the fact that these two styles describe web services in different layers. The document style WSDL describes how one can bind an XML document to the SOAP message format. In contrast, the RPC style WSDL describes how one can bind an object to the SOAP message format. One can imagine that this works in two steps: first representing the object as an XML document and then binding this XML document to the SOAP message format. How this first step works is controlled by the SOAP encoding name. For the standard encoding specified in the SOAP specification, most objects can be easily described in an equivalent XML schema. Some special objects such as references and arrays must be represented by some special rules and some additional meta information in XML. This implies that these additional attributes and elements must also be described in the XML schema and the document style based proxy must set these values in the instance appropriately.
                One must however note that even if one has an equivalent document style WSDL, this does not automatically guarantees the interoperability. Some RPC styled service implementations have significant interoperability problems such as requiring the xsi:type attribute for every element or the SOAP encoding attribute at some particular element. If one has to call such non conformant SOAP service, one must adjust the message accordingly.
               Attachment wsdl_style_samples. zip contains some examples of WSDL documents and sample SOAP messages that illustrate how one can write an equivalent WSDL in another style.
                Related Questions "Does the RPC or Document style in WSDL play a role in the SOAP adapter?"
    cheers
    Sameer

  • ESB and Webserivces RPC/ encoded

    Hi,
    i know i can not handle Webserivce with RPC/encoded format on BPEL without a BPEL proxy - how it looks on the ESB - exist here the same problem?
    Best regards
    Thomas

    ESB only supports single part WSDL and document literal in 10.1.3.1. I don't know of any workarounds but it is working in AS11 prototype but that likely won't comfort you much. Sorry.

  • What is the general way to invoke a rpc/encoded webservice?

    Hi,
    I have some confusion in invoking webservices, ok, let me explain my question in detail:
    Usually, we access a web service througt its wsdl file, for a rpc/encoded style, for example, in Axis enviroment, I will need the java object for the complex message types, how can I get these java files? If I use the Sun provided WSDP tool to compile the wsdl file and get these java files, do they work? If I am not in the Axis enviroment, maybe I will compose the SOAP request directly, so, what is the general way?
    Thanks.

    Hello,
    When you want to invoke a Web Services (RPC or Document style) you generally as you said create a set fo Java class to: map the messages information to Java code, and create a proxy/stub to do the call.
    Using Oracle Application Server Web Service framework you have several way of creating this client classes:
    - using Oracle JDeveloper just do a File>New>Web Services>Web Service Proxy
    - using the command line tool, and associated Ant tasks (WSA:Web Service Assembler), see the Web Services Developer Guide
    Regards
    Tugdual Grall

  • Any Workaround for unsupported rpc/literal wsdl feature in weblogic8.1.6.

    I need to call the service which expects the rpc/literal format of soap request using weblogic workshop. But the problem is the current verison of weblogic server(8.1.6) that i am using to build won't support this WSDL feature. The generated request has xsi:type associated with the element which is in rpc/encoded format. I need to find workaround to generate request that confirms to rpc/literal format. Please guide me how can i go about this issue.
    Please let me know does this question makes any sense.
    Thanks in advance,
    Mkiran.
    Edited by: user11300130 on Jun 24, 2009 11:53 PM

    Please let me know my question sense or not.

Maybe you are looking for

  • How to delete a trasonported query?

    Dear Friends, I have transported a query to production, but now i want to delete it in production. But, i do not have access to production. Is there a way to transport "deleted query". Thanks in anticipation.

  • Calling java from csh scripts

    I have recently come across certain projects where Java has being used as an alternative for scripting purposes. What I am trying to say here is that making calls to java programs from csh scripts and these Java programs are merely doing trivial/sql

  • Doubt on BSEG table

    hi , why sap stored BSEG table as cluster table , is there any specific reason . plz tell me if any body knows , thanks in advance , regards , srinivas

  • Why my iph is saying every word i touch on screen

    i hv no idea what i did bcoz now my iph is repeating every single word i touch on the screen followed by a square on that word or app. i m not sure if its some kind of help or its related to siri. plz assisst me if someone else had the same problem n

  • Issues by using external ntp time source on domain controller

    Hello i have done the following on my 2012 R2 domain in a command promt net stop w32time w32tm /config /syncfromflags:manual /manualpeerlist:"0.dk.pool.ntp.org" w32tm /config /reliable:yes net start w32time and when i type: w32tm /query /configuratio