Export Dictionary structure definitions to WSDL or XSD

Hi all,
I need to export some structure definitions from CRM 2007 to a XI instance. I have been told by the XI responsible that the ideal mechanism is that I provide him some WSDL or XSD files so he can import them.
The point is: how do I export my ABAP Dictionary definitions to a WSDL?.
I have tryed to do it already in an indirect way creating an ABAP Proxy, but I always get plenty of errors there and I am sure that has to be a faster and more elegant way to do it.
Thanks in advance, lot of points for the one who solve it ;-).
Best Regards,
Luis V. de P.

Hi Gonzalo,
I dont think even if you convert into xsd it will go. The best would be to use XMLAnonymizerBean in your sender communication channel. Please see stefans blog for this:
/people/stefan.grube/blog/2007/02/02/remove-namespace-prefix-or-change-xml-encoding-with-the-xmlanonymizerbean
Regards,
---Satish

Similar Messages

  • How do I include XSD definition inside WSDL?

    Hello,
    I am pasting the WSDL and XSD (They were sent as a seperate files)
    The Name space that was mentioned in the WSDL is different from where I am currently developing .
    I would like to do the following 3 things
    1. Include XSD inside WSDL definition
    2. Change the existing Name space to the ones created now.
    (the current name space is *http://abcd.com/SPAG*)
    3. Is there any other free software that works like XML SPY?
    The reference in the WSDL to the XSD is provided at "schema....... "
    If I copy the XSD in place of <xsd schema></xsd schema> tabs
    its generating me no message present  or null exception
    please help ....
    The WSDL and XSD are as follows :
    *WSDL* :
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
                 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                 xmlns:n="http://www.abcd.com/application/ws/network"
                 xmlns:svc="http://www.abcd.com/application/ws/network/service"
                 targetNamespace="http://www.abcd.com/application/ws/network/service">
         <types>
              <xsd:schema>
                   <xsd:import namespace="http://www.abcd.com/application/ws/network" schemaLocation="../schema/Network.xsd"/>
              </xsd:schema>
         </types>
         <message name="NetworksRequest">
              <part name="request" element="n:Networks"/>
         </message>
         <portType name="NetworkPortType">
              <operation name="importNetworks">
                   <input message="svc:NetworksRequest"/>
              </operation>
              <operation name="deleteNetworks">
                   <input message="svc:NetworksRequest"/>
              </operation>
         </portType>
         <binding name="NetworkBinding" type="svc:NetworkPortType">
              <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
              <operation name="importNetworks">
                   <soap:operation soapAction="importNetworks"/>
                   <input><soap:body use="literal"/></input>
              </operation>
              <operation name="deleteNetworks">
                   <soap:operation soapAction="deleteNetworks"/>
                   <input><soap:body use="literal"/></input>
              </operation>
         </binding>
         <service name="Network">
              <port name="NetworkPort" binding="svc:NetworkBinding">
                   <soap:address location="http://localhost:8080/axis/services/Network"/>
              </port>
         </service>
    </definitions>
    XSD :
    <schema xmlns="http://www.w3.org/2001/XMLSchema"
              xmlns:n="http://www.abcd.com/application/ws/network"
              xmlns:nt="http://www.abcd.com/application/ws/networkType"
            xmlns:att="http://www.abcd.com/application/ws/entityAttribute"
            targetNamespace="http://www.abcd.com/application/ws/network"
            elementFormDefault="qualified">
         <import namespace="http://www.abcd.com/application/ws/entityAttribute" schemaLocation="../schema/EntityAttribute.xsd"/>
         <import namespace="http://www.abcd.com/application/ws/networkType" schemaLocation="../schema/NetworkType.xsd"/>
         <!-- Global Element Declarations -->
         <element name="Networks" type="n:Networks"/>
         <!-- Complex Types -->
         <complexType name="Networks">
              <sequence>
                   <element name="Network" type="n:Network" minOccurs="0" maxOccurs="unbounded"/>
              </sequence>
         </complexType>
         <complexType name="Network">
              <sequence>
                   <element name="description" type="n:descriptionString" minOccurs="0"/>
                   <element name="CustomAttributes" type="n:CustomAttributes" minOccurs="0"/>
              </sequence>
              <attribute name="name" type="n:nameString" use="required"/>
              <attribute name="type" type="nt:nameString" default="General"/>
              <attribute name="indenture" type="int"/>
         </complexType>
         <complexType name="CustomAttributes">
              <sequence>
                   <element ref="att:CustomAttribute" minOccurs="0" maxOccurs="8"/>
              </sequence>
         </complexType>
         <!-- Simple Types -->
         <simpleType name="descriptionString">
              <restriction base="string">
                   <maxLength value="64"/>
              </restriction>
         </simpleType>
         <simpleType name="nameString">
              <restriction base="string">
                   <maxLength value="64"/>
              </restriction>
         </simpleType>                      
    </schema>
    1. Please guide me how do I include XSD in the above structure
    2. do I need to change NS in all the places in the above structure in order to change the existing name space to the current one?
    3. Is there a free software that works like XML Spy in looking at webservice definitions?
    Regards,
    Nikhil
    All useful replies will be rewarded ****

    Hi Nikhil,
    first include the following code into u r XSD.
    <?xml version="1.0" encoding="UTF-8" ?>
    - <xsd:schema targetNamespace="http://abcd.com/SAPAG" xmlns="http://abcd.com/SAPAG" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    please follow the below steps.
    - <complexType name="Networks">
    make it as <XSD:complexType name="Networks">
    -<element name="Networks">
    make it as  <XSD:element name="Networks">
    and similarly -<sequence>
    in any XSD the following tag will be there
    i.e -<xsd:annotation>
    but it's not mandotory...with out that aslo we can import it as data type.
    if possible, please check with alredy exiting xsd definations.
    regards
    mahesh.

  • How to convert wsdl to xsd with detail steps?

    Hi All,
    Please explain me how to convert wsdl to xsd or any tools are there to convert. If so please tell me step by step procedure.
    Thanks in Advance,
    Sreenu.

    Hi Sreenivas,
    I doubt if this is possible.
    WSDLs are web services definitions while XSDs are XML structure definitions. I dont think its possible convert between the two.
    Maybe [this link|http://www.mail-archive.com/[email protected]/msg19446.html//www.mail-archive.com/[email protected]/msg19446.html] gives a clue for a manual method.
    Regards,
    Riyaz
    Edited by: Riyaz Sayyad on Jul 14, 2008 2:52 PM

  • Best practice for how to access a set of wsdl and xsd files

    I've recently beeing poking around with the Oracle ESB, which requires a bunch of wsdl and xsd files from HOME/bpel/system/xmllib. What is the best practice for including these files in a BPEL project? It seems like a bad idea to copy all these files into every project that uses the ESB, especially if there are quite a few consumers of the bus. Is there a way I can reference this directory from the project so that the files can just stay in a common place for all the projects that use them?
    Bret

    Hi,
    I created a project (JDeveloper) with local xsd-files and tried to delete and recreate them in the structure pane with references to a version on the application server. After reopening the project I deployed it successfully to the bpel server. The process is working fine, but in the structure pane there is no information about any of the xsds anymore and the payload in the variables there is an exception (problem building schema).
    How does bpel know where to look for the xsd-files and how does the mapping still work?
    This cannot be the way to do it correctly. Do I have a chance to rework an existing project or do I have to rebuild it from scratch in order to have all the references right?
    Thanks for any clue.
    Bette

  • Problem Import WSDL with XSD import Schema

    Hi SCN, i have problem
    I have a WSDL that references an xsd, but the structure is not visible in PI.
       <wsdl:types>
          <xsd:schema targetNamespace="http://tempuri.org/Imports">
             <xsd:import schemaLocation="http://bilbolab****.net/ServiceItemHO.svc?xsd=xsd0" namespace="http://tempuri.org/" />
             <xsd:import schemaLocation="http://bilbolab.****.net/ServiceItemHO.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
             <xsd:import schemaLocation="http://bilbolab.*****.net/ServiceItemHO.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/ItemHO.BO" />
          </xsd:schema>
       </wsdl:types>
       <wsdl:message name="iVistaHO_AddItemHO_InputMessage">
          <wsdl:part name="parameters" element="tns:AddItemHO" />
       </wsdl:message>
    WSDL works well using SoapUI.
    When imported to PI parameters is not displayed
    I Need Help
    Thank you.

    Hi, Dihiansan. I don't understand your proposal
    I need you see the structure in PI how in SoapUI.
    It is possible?
    Regards

  • External definition import WSDL complex type problem

    Hi,
    i have created a webservice using apache axis and created an external definition for the service. You can see the respective WSDL recognized by XI below. The service takes an array of adresses. Unfortunately, when I want to define the message mapping, theres only the array but not the address attributes. What would be a proper definition of the service?
    Cheers,
    Heiko
    ===================================================
    1. WSDL from external defintion:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://localhost:8080/axis/services/AdressService">
         <wsdl:types>
              <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://localhost:8080/axis/services/AdressService" targetNamespace="http://localhost:8080/axis/services/AdressService">
                   <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
                   <xsd:complexType xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" name="AddressDto">
                        <xsd:sequence>
                             <xsd:element name="ID" type="xsd:string" nillable="true" />
                             <xsd:element name="name" type="xsd:string" nillable="true" />
                             <xsd:element name="strasse" type="xsd:string" nillable="true" />
                             <xsd:element name="ort" type="xsd:string" nillable="true" />
                        </xsd:sequence>
                   </xsd:complexType>
                   <xsd:complexType xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" name="ArrayOfAddressDto">
                        <xsd:complexContent>
                             <xsd:restriction base="soapenc:Array">
                                  <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="impl:AddressDto[]" />
                             </xsd:restriction>
                        </xsd:complexContent>
                   </xsd:complexType>
              </xsd:schema>
         </wsdl:types>
         <wsdl:message name="writeAddressDataResponse" />
         <wsdl:message name="writeAddressDataRequest">
              <wsdl:part xmlns:generateduniqueprefix3="http://localhost:8080/axis/services/AdressService" name="addresses" type="generateduniqueprefix3:ArrayOfAddressDto" />
         </wsdl:message>
    </wsdl:definitions>
    2. XSD extracted from WSDL:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema targetNamespace="http://localhost:8080/axis/services/AdressService" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://localhost:8080/axis/services/AdressService">
      <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
      <xsd:element name="addresses" type="ArrayOfAddressDto" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" />
      <xsd:complexType name="ArrayOfAddressDto" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
        <xsd:complexContent>
          <xsd:restriction base="soapenc:Array">
            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="impl:AddressDto[]" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
          </xsd:restriction>
        </xsd:complexContent>
      </xsd:complexType>
    </xsd:schema>
    ??? Where are the atributes of the address here ???

    Hi Heiko,
    XI does not support the use of soapenc:array. Please refer to http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html#refinement16556272 regarding the use of this construct.
    Greetings Stephan

  • RFC / BAPI import & export parameter structure

    Hi,
    Is there a way to get the import & export parameters structure from remote system rather than creating them in calling system?
    I have WD4A in CRM system and want to call RFC on R/3 system. Since the R/3 dictionary objects do not exist in CRM, I have to create these in CRM before creating context node and attribute. Is there a way to use RFC without creating these structures?
    Thanks,

    Hello Ravindra,
    yes you can copy DDIC structures from one system to another.
    Option a).  See the many blogs on SAPLINK and the website
                      http://groups.google.com/group/saplink/
                and http://code.google.com/p/saplink/
    Option b) in SE80 right click on object and select include in transport.
                  Release Transport.
                  Use TMS in other system to import this transport.
    Please note, to call an RFC there is no need to declare the structure in the dictionary.
    You dont even need to create the function in the local system.
    So you may be over engineering the issue.
    eg
    data: being of ls_some_stru,
                         f1 type xxx,
                         f2 type xxxx
                         f3 type xxxx,
          end of ls_some_stru.
          call function 'XYZ_FUNCTION' destination 'OVERTHERE'
                  exporting is_stru = ls_stru.
    the structures used in XYZ_FUNCTION need not exist in local dictionary, nor does
    the function need to exist in the local system.
    regards
    Phil.

  • How do I export words and definitions from the glossary widget in C7?

    How do I export words and definitions from the glossary widget as XML? I need to use the same glossary in several projects. When I copy and paste the widget to a different project about 1/2 of the definitions disappear. Figured I would try exporting the words then importing them back in new glossaries in each project. Using 7 on a Mac.

    Yes i read, and the answer to the main question is still the same, you cannot export, you just can import definitions if you previously have structured them into an xml file. So, first of all it would be useful to warn the user to ALWAYS start from an xml file BEFORE starting populating the glossary. Furthermore, not all users are supposed to manage easily an xml editing, and the widget itself has been programmed to insert the definitions with a simple method, so it would be necessary also to have an instrument to export to xml for importing purpose. Storyline has the same lack, you cannot move glossary from one project to another but you are forced to start from an old project or insert the glossary itself into a master project. You will agree with me that an xml export feature is not something so difficult to add for the widget. In my personal example, i added about 200 definitions, then i discovered that the glossary of captivate 7 does not work well in html5, the new one in captivate 8 is little bit better, but still not working on chrome (at least on ipad it shows, but you cannot show a button over it since it goes always on the top of everything, so at the moment i inserted a big transparent square behind it to close everyting like a lightbox). This widget is still very buggy and need to be improved.

  • Parse WSDL and XSD

    Hi all,
    i have to parse a WSDL, i found the javax.wsdl.xml.WSDLReader. this permits to parse all but not the XSD inside the wsdl.
    i.e.
    the wsdl
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/NewWSDLFile/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="NewWSDLFile" targetNamespace="http://www.example.org/NewWSDLFile/">
      <wsdl:types>
        <xsd:schema targetNamespace="http://www.example.org/NewWSDLFile/">
          <xsd:element name="NewOperation">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="in" type="xsd:string"/>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="NewOperationResponse">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="out" type="xsd:string"/>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:schema>
      </wsdl:types>
      <wsdl:message name="NewOperationRequest">
        <wsdl:part element="tns:NewOperation" name="parameters"/>
      </wsdl:message>
      <wsdl:message name="NewOperationResponse">
        <wsdl:part element="tns:NewOperationResponse" name="parameters"/>
      </wsdl:message>
      <wsdl:portType name="NewWSDLFile">
        <wsdl:operation name="NewOperation">
          <wsdl:input message="tns:NewOperationRequest"/>
          <wsdl:output message="tns:NewOperationResponse"/>
        </wsdl:operation>
      </wsdl:portType>
      <wsdl:binding name="NewWSDLFileSOAP" type="tns:NewWSDLFile">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="NewOperation">
          <soap:operation soapAction="http://www.example.org/NewWSDLFile/NewOperation"/>
          <wsdl:input>
            <soap:body use="literal"/>
          </wsdl:input>
          <wsdl:output>
            <soap:body use="literal"/>
          </wsdl:output>
        </wsdl:operation>
      </wsdl:binding>
      <wsdl:service name="NewWSDLFile">
        <wsdl:port binding="tns:NewWSDLFileSOAP" name="NewWSDLFileSOAP">
          <soap:address location="http://www.example.org/"/>
        </wsdl:port>
      </wsdl:service>
    </wsdl:definitions>the code used:
                    WSDLReader reader = WSDLFactory.newInstance().newWSDLReader();
                    Definition def = reader.readWSDL("NewWSDLFile.wsdl");
                    System.out.println(def.toString());the result
    Retrieving document at 'NewWSDLFile.wsdl'.
    Definition: name={http://www.example.org/NewWSDLFile/}NewWSDLFile targetNamespace=http://www.example.org/NewWSDLFile/
    Types:
    SchemaExtensibilityElement ({http://www.w3.org/2001/XMLSchema}schema):
    required=null
    element=[xsd:schema: null]
    Message: name={http://www.example.org/NewWSDLFile/}NewOperationResponse
    Part: name=parameters
    elementName={http://www.example.org/NewWSDLFile/}NewOperationResponse
    Message: name={http://www.example.org/NewWSDLFile/}NewOperationRequest
    Part: name=parameters
    elementName={http://www.example.org/NewWSDLFile/}NewOperation
    PortType: name={http://www.example.org/NewWSDLFile/}NewWSDLFile
    Operation: name=NewOperation
    style=REQUEST_RESPONSE
    Input: name=null
    Message: name={http://www.example.org/NewWSDLFile/}NewOperationRequest
    Part: name=parameters
    elementName={http://www.example.org/NewWSDLFile/}NewOperation
    Output: name=null
    Message: name={http://www.example.org/NewWSDLFile/}NewOperationResponse
    Part: name=parameters
    elementName={http://www.example.org/NewWSDLFile/}NewOperationResponse
    Binding: name={http://www.example.org/NewWSDLFile/}NewWSDLFileSOAP
    PortType: name={http://www.example.org/NewWSDLFile/}NewWSDLFile
    Operation: name=NewOperation
    style=REQUEST_RESPONSE
    Input: name=null
    Message: name={http://www.example.org/NewWSDLFile/}NewOperationRequest
    Part: name=parameters
    elementName={http://www.example.org/NewWSDLFile/}NewOperation
    Output: name=null
    Message: name={http://www.example.org/NewWSDLFile/}NewOperationResponse
    Part: name=parameters
    elementName={http://www.example.org/NewWSDLFile/}NewOperationResponse
    BindingOperation: name=NewOperation
    BindingInput: name=null
    SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
    required=null
    use=literal
    BindingOutput: name=null
    SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
    required=null
    use=literal
    SOAPOperation ({http://schemas.xmlsoap.org/wsdl/soap/}operation):
    required=null
    soapActionURI=http://www.example.org/NewWSDLFile/NewOperation
    SOAPBinding ({http://schemas.xmlsoap.org/wsdl/soap/}binding):
    required=null
    transportURI=http://schemas.xmlsoap.org/soap/http
    style=document
    Service: name={http://www.example.org/NewWSDLFile/}NewWSDLFile
    Port: name=NewWSDLFileSOAP
    Binding: name={http://www.example.org/NewWSDLFile/}NewWSDLFileSOAP
    PortType: name={http://www.example.org/NewWSDLFile/}NewWSDLFile
    Operation: name=NewOperation
    style=REQUEST_RESPONSE
    Input: name=null
    Message: name={http://www.example.org/NewWSDLFile/}NewOperationRequest
    Part: name=parameters
    elementName={http://www.example.org/NewWSDLFile/}NewOperation
    Output: name=null
    Message: name={http://www.example.org/NewWSDLFile/}NewOperationResponse
    Part: name=parameters
    elementName={http://www.example.org/NewWSDLFile/}NewOperationResponse
    BindingOperation: name=NewOperation
    BindingInput: name=null
    SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
    required=null
    use=literal
    BindingOutput: name=null
    SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
    required=null
    use=literal
    SOAPOperation ({http://schemas.xmlsoap.org/wsdl/soap/}operation):
    required=null
    soapActionURI=http://www.example.org/NewWSDLFile/NewOperation
    SOAPBinding ({http://schemas.xmlsoap.org/wsdl/soap/}binding):
    required=null
    transportURI=http://schemas.xmlsoap.org/soap/http
    style=document
    SOAPAddress ({http://schemas.xmlsoap.org/wsdl/soap/}address):
    required=null
    locationURI=http://www.example.org/as you can see there's no line that say what kind of data there are inside the message .
    these lines are not mentioned:
      <xsd:element name="NewOperation">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="in" type="xsd:string"/>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="NewOperationResponse">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="out" type="xsd:string"/>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>any ideas about how to read the types of the messages?
    Edited by: ELStefen on 11-nov-2009 10.55

    Farhan_Khan wrote:
    Can you please elaborate a little more on the following
    if you want to parse the XSD you have to take the string between the <type> </type>
    - How do I do this ?
    takes the wsdl as string, takes the position of <type> and </type>. Now you can simply remove all the rest and keep all the string inside these 2 word.
    and add all the namespace of the wsdl (this step is very important, otherwise it not works).
    - No clue about this. Please explain.
    This is a tricky way that i discovered.
    SimpleXML wants all the namespaces involved into the Types. Sometimes these namespaces are written in the top of the wsdl but you don't have these information in the XSD.
    So replace the XSD header adding (replace the string) all the namespaces found inside the wsdl.
    Note:- I've been working on this for the last 3 weeks but no success and nobody ready to help. Your help would be greatly appreciated.
    Thanks
    Farhanthis is an example, i don't remember what it does :D
    package invokation;
    import java.io.*;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.StringTokenizer;
    import java.util.Map.Entry;
    import org.apache.ws.commons.schema.XmlSchema;
    import org.apache.ws.commons.schema.XmlSchemaElement;
    import org.apache.ws.commons.schema.XmlSchemaImport;
    import org.apache.ws.commons.schema.XmlSchemaObject;
    import org.apache.ws.commons.schema.XmlSchemaObjectTable;
    import javax.wsdl.Definition;
    import javax.wsdl.factory.WSDLFactory;
    import javax.wsdl.xml.WSDLReader;
    import javax.xml.namespace.QName;
    import javax.xml.transform.stream.StreamSource;
    import org.apache.ws.commons.schema.XmlSchemaCollection;
    * @author Stefano Tranquillini
    public class ParserXSD {
          * @deprecated
          * @param args
         public static void main(String[] args) {
              new ParserXSD().ParseXSD("Test.wsdl");
         private static ArrayList<QName> namespaces(String wsdl) {
              try {
                   WSDLReader reader = WSDLFactory.newInstance().newWSDLReader();
                   Definition def = reader.readWSDL(wsdl);
                   reader.setFeature("javax.wsdl.verbose", true);
                   reader.setFeature("javax.wsdl.importDocuments", true);
                   // Namespaces
                   // read all the namespaces
                   Map nss = def.getNamespaces();
                   ArrayList<QName> ns = new ArrayList<QName>();
                   for (Iterator iterator = nss.entrySet().iterator(); iterator
                             .hasNext();) {
                        Entry e = (Entry) iterator.next();
                        ns.add(new QName("" + e.getKey(), "" + e.getValue()));
                   return ns;
              } catch (Exception e) {
                   e.printStackTrace();
                   return null;
         private static InputStream parseStringToIS(String str) {
              if (str == null)
                   return null;
              str = str.trim();
              java.io.InputStream in = null;
              try {
                   in = new java.io.ByteArrayInputStream(str.getBytes("UTF-8"));
              } catch (Exception ex) {
              return in;
         public static ArrayList<QName> ParseXSD(String filename) {
              ArrayList<QName> ret = new ArrayList<QName>();
              try {
                   ArrayList<QName> ns = namespaces(filename);
                   // read the all namesapces
                   // and add they at schema
                   File f = new File(filename);
                   FileInputStream fis = new FileInputStream(f);
                   InputStreamReader isr = new InputStreamReader(fis);
                   BufferedReader br = new BufferedReader(isr);
                   String linea = br.readLine();
                   String all = "";
                   while (linea != null) {
                        linea = br.readLine();
                        all = all + linea;
                   // extract only the types
                   int start = all.indexOf("<wsdl:types>") + "<wsdl:types>".length();
                   int end = all.indexOf("</wsdl:types>");
                   String xsd = "";
                   // not sure about this if
                   if (start >= 0 && end > start) {
                        xsd = all.substring(start, end);
                   } else {
                        xsd = all;
                   String ns_toAdd = "";
                   for (QName qname : ns) {
                        ns_toAdd += " xmlns:" + qname.getNamespaceURI() + "=\""
                                  + qname.getLocalPart() + "\"";
                   xsd = xsd.replace("schema ", "schema " + ns_toAdd + " ");
                   xsd = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + xsd;
                   // end namespace addition
                   // read the xsd and extract information
                   System.out.println(xsd);
                   InputStream is = parseStringToIS(xsd);
                   XmlSchemaCollection schemaCol = new XmlSchemaCollection();
                   XmlSchema schema = (XmlSchema) schemaCol.read(new StreamSource(is),null);
                   System.out.println();
    //now here i don't remember.
    //try to takes information from schema
                   if (schema.getIncludes().getCount() > 0) {
                        for (int i = 0; i < schema.getIncludes().getCount(); i++) {
                             XmlSchemaImport xmlso = (XmlSchemaImport) schema
                                       .getIncludes().getItem(i);
                             XmlSchemaObjectTable elements = xmlso.getSchema().getElements();
                             schema.write(System.out);
                             System.out.println(elements.getCount());
                             for (Iterator iterator = elements.getNames(); iterator
                                       .hasNext();) {
                                  // extract the QNAME of each operation used in the SOAP
                                  // MESSAGE
                                  QName name = (QName) iterator.next();
                                  ret.add(name);
                   XmlSchemaObjectTable elements = schema.getElements();
                   schema.write(System.out);
                   System.out.println(elements.getCount());
                   for (Iterator iterator = elements.getNames(); iterator.hasNext();) {
                        // extract the QNAME of each operation used in the SOAP MESSAGE
                        QName name = (QName) iterator.next();
                        ret.add(name);
                   System.out.println(ret);
                   return ret;
              } catch (Exception e) {
                   e.printStackTrace();
                   return ret;
    }

  • Dictionary structures on minisap

    Hi,
    I'm working on Minisap installed on my PC.While writing a program that uses dictionary structures like sy-datum, sy-uname or tables like Mara,the system gives an error as unable to interpret sy-datum etc.
    what is the error?
    pls. help as i'm unable to proceed.
    Thanks in Advance,
    Sipra Jain

    Hi Sipra,
    Have you defined MARA table in Tables definition? If not define like this in ur program.
    Tables: MARA.
    For Sy-Subrc and Sy-datum, Please check in SE11 transaction for SYST table.
    Reward points if it helps you.
    Regards,
    Sudhakar.

  • Assign a value from an wsdl:arrayType="xsd:string[]"

    Hi to everyone, I'm new at this issue of Bpel. I'm a developing a simple process and I need to communicate my process with a Web Services that returns a wsdl:arrayType="xsd:string[]", this is the type of the wdsl of the web service:
    <complexType
    name="ArrayOfString"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <complexContent>
    <restriction
    base="SOAP-ENC:Array">
    <attribute
    ref="SOAP-ENC:arrayType"
    wsdl:arrayType="xsd:string[]" />
    </restriction>
    </complexContent>
    </complexType>
    I need to know how to reference the values inside this response (array of string) and copy to a string variable inside my process.
    Thanks at all to everyone.
    Mulder

    Im not sure about this one, but can remember something about bpel not able to handle soap-encoded arrays.

  • Simple Transformation from Adobe Form XML document to Dictionary structures

    I have an XML document that I am receiving via email (the XML document is generated from an Adobe Interactive form). I would like to write a simple transformation that will map that XML document to a structure and internal table in my ABAP program. I am new to Simple Transformations and I am having trouble working out how to write a simple transformation for this type of XML document. I would prefer to write a custom transformation rather than using the identity transformation (ID). I would appreciate any help you can provide.
    Please refer to the below for an example of the XML file.
    This maps directly to 2 dictionary structures that exist within our system containing all of the same components. PIM_REQUEST_HDR has a corresponding SAP dictionary structure Y_REQUEST_HDR and PIM_REQUEST_ITEMS has a corresponding SAP dictionary structure Y_REQUEST_ITEMS.
    Can anyone help with some instructions or examples of how to create the simple transformation?
    Thanks for your help! We are using ECC 6.0
    Sample XML to be transformed:
    <?xml version="1.0" encoding="UTF-8" ?>
    <data>
    <SFPSY>
      <DATE>2007-07-03</DATE>
      <TIME>07:25:21</TIME>
      <USERNAME>TLCITY</USERNAME>
      <SUBRC>0</SUBRC>
      </SFPSY>
    <PIM_REQUEST_HDR>
      <MANDT />
      <REQ_NUM />
      <REQ_DESC>blah blah blah</REQ_DESC>
      <PROC_AREA>CTC</PROC_AREA>
      <REQUESTED>2007-07-03</REQUESTED>
      <REQUIRED>2007-07-03</REQUIRED>
      <REQUESTOR>TLCITY</REQUESTOR>
      <MOD_TYPE>SAP Note manual changes</MOD_TYPE>
      <SAPNOTE_NUM>59549656</SAPNOTE_NUM>
      <SAPMSG_NUM>0000000000</SAPMSG_NUM>
      <TECH_SCRIPT />
      <REASON />
      <DEV_ENV>ECC6</DEV_ENV>
      <INSTALL_NO>2861655161</INSTALL_NO>
      <BASIS_REL>700</BASIS_REL>
      <REG_STATUS />
      <REJ_REASON />
      <APP_DATE />
      <REJ_DATE />
      <APPROVER />
      <REGISTRATOR />
      <REG_DATE />
      </PIM_REQUEST_HDR>
    <PIM_REQUEST_ITEMS>
    <DATA>
      <MANDT />
      <REQ_NUM />
      <PGMID>R3TR</PGMID>
      <OBJECT>PROG</OBJECT>
      <OBJ_NAME>RSDIJOIJSDOIF</OBJ_NAME>
      <ACCESSKEY />
      </DATA>
    <DATA>
      <MANDT />
      <REQ_NUM />
      <PGMID>R3TR</PGMID>
      <OBJECT>PROG</OBJECT>
      <OBJ_NAME>RRRSDIJOIJS03</OBJ_NAME>
      <ACCESSKEY />
      </DATA>
      </PIM_REQUEST_ITEMS>
      </data>

    I have solved this one with the help of another collegue.
    To simplify, we changed the XML to be as follows:
    [code]
    <?xml version="1.0" encoding="UTF-8" ?>
    <data>
    <PIM_REQUEST>
    <REQ_HDR>
      <MANDT />
      <REQ_NUM />
      <REQ_DESC>Key required for pricing routines</REQ_DESC>
      <PROC_AREA>SD</PROC_AREA>
      <REQUESTED>2007-07-30</REQUESTED>
      <REQUIRED>2007-08-02</REQUIRED>
      <REQUESTOR>TLCITY</REQUESTOR>
      <MOD_TYPE>SAP Note: Manual Changes</MOD_TYPE>
      <SAPNOTE_NUM>0000000000</SAPNOTE_NUM>
      <SAPMSG_NUM>0000000000</SAPMSG_NUM>
      <TECH_SCRIPT>TS-2498 Pricing Routines</TECH_SCRIPT>
      <REASON>New pricing routines required</REASON>
      <DEV_ENV>ECC6</DEV_ENV>
      <INSTALL_NO>029</INSTALL_NO>
      <BASIS_REL>700</BASIS_REL>
      <REG_STATUS />
      <REJ_REASON />
      <APP_DATE />
      <REJ_DATE />
      <APPROVER />
      <REGISTRATOR />
      <REG_DATE />
      </REQ_HDR>
    <KEY_DETAILS>
    <DATA>
      <MANDT />
      <REQ_NUM />
      <PGMID>R3TR</PGMID>
      <OBJECT>PROG</OBJECT>
      <OBJ_NAME>RVGHT902</OBJ_NAME>
      <ACCESSKEY />
      </DATA>
    <DATA>
      <MANDT />
      <REQ_NUM />
      <PGMID>R3TR</PGMID>
      <OBJECT>PROG</OBJECT>
      <OBJ_NAME>RVGHT901</OBJ_NAME>
      <ACCESSKEY />
      </DATA>
      </KEY_DETAILS>
      </PIM_REQUEST>
      </data>
    [/code]
    This maps directly to 1 dictionary structure that exists within our system containing all of the same components. PIM_REQUEST has a corresponding SAP dictionary structure Y_REQUEST_HDR which is a deep structure and has within it a structure REQ_HDR and a table KEY_DETAILS.
    The corresponding simple transformation we have then used is as follws:
    [code]
    <?sap.transform simple?>
    <tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
      <tt:root name="root"/>
      <tt:template>
        <data>
          <PIM_REQUEST>
            <tt:copy ref="root"/>
          </PIM_REQUEST>
        </data>
      </tt:template>
    </tt:transform>
    [/code]
    Alternatively the following 2 options also work:
    Option 2:
    [code]
    <?sap.transform simple?>
    <tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
      <tt:root name="root"/>
      <tt:template>
        <data>
          <PIM_REQUEST>
            <REQ_HDR>
              <tt:copy ref="root.REQ_HDR"/>
            </REQ_HDR>
            <KEY_DETAILS>
              <tt:loop name="KEY_DETAILS" ref="root.KEY_DETAILS">
                <DATA>
                  <tt:copy ref="$KEY_DETAILS"/>
                </DATA>
              </tt:loop>
            </KEY_DETAILS>
          </PIM_REQUEST>
        </data>
      </tt:template>
    </tt:transform>
    [/code]
    Option 3:
    [code]
    <?sap.transform simple?>
    <tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
      <tt:root name="root"/>
      <tt:template>
        <data>
          <PIM_REQUEST>
            <REQ_HDR>
              <MANDT tt:value-ref="root.REQ_HDR.MANDT"/>
              <REQ_NUM tt:value-ref="root.REQ_HDR.REQ_NUM"/>
              <REQ_DESC tt:value-ref="root.REQ_HDR.REQ_DESC"/>
              <PROC_AREA tt:value-ref="root.REQ_HDR.PROC_AREA"/>
              <REQUESTED tt:value-ref="root.REQ_HDR.REQUESTED"/>
              <REQUIRED tt:value-ref="root.REQ_HDR.REQUIRED"/>
              <REQUESTOR tt:value-ref="root.REQ_HDR.REQUESTOR"/>
              <MOD_TYPE tt:value-ref="root.REQ_HDR.MOD_TYPE"/>
              <SAPNOTE_NUM tt:value-ref="root.REQ_HDR.SAPNOTE_NUM"/>
              <SAPMSG_NUM tt:value-ref="root.REQ_HDR.SAPMSG_NUM"/>
              <TECH_SCRIPT tt:value-ref="root.REQ_HDR.TECH_SCRIPT"/>
              <REASON tt:value-ref="root.REQ_HDR.REASON"/>
              <DEV_ENV tt:value-ref="root.REQ_HDR.DEV_ENV"/>
              <INSTALL_NO tt:value-ref="root.REQ_HDR.INSTALL_NO"/>
              <BASIS_REL tt:value-ref="root.REQ_HDR.BASIS_REL"/>
              <REG_STATUS tt:value-ref="root.REQ_HDR.REG_STATUS"/>
              <REJ_REASON tt:value-ref="root.REQ_HDR.REJ_REASON"/>
              <APP_DATE tt:value-ref="root.REQ_HDR.APP_DATE"/>
              <REJ_DATE tt:value-ref="root.REQ_HDR.REJ_DATE"/>
              <APPROVER tt:value-ref="root.REQ_HDR.APPROVER"/>
              <REGISTRATOR tt:value-ref="root.REQ_HDR.REGISTRATOR"/>
              <REG_DATE tt:value-ref="root.REQ_HDR.REG_DATE"/>
            </REQ_HDR>
            <KEY_DETAILS>
              <tt:loop ref="root.KEY_DETAILS" name="KEY_DETAILS">
                <DATA>
                  <MANDT tt:value-ref="$KEY_DETAILS.MANDT"/>
                  <REQ_NUM tt:value-ref="$KEY_DETAILS.REQ_NUM"/>
                  <PGMID tt:value-ref="$KEY_DETAILS.PGMID"/>
                  <OBJECT tt:value-ref="$KEY_DETAILS.OBJECT"/>
                  <OBJ_NAME tt:value-ref="$KEY_DETAILS.OBJ_NAME"/>
                  <ACCESSKEY tt:value-ref="$KEY_DETAILS.ACCESSKEY"/>
                </DATA>
              </tt:loop>
            </KEY_DETAILS>
          </PIM_REQUEST>
        </data>
      </tt:template>
    </tt:transform>
    [/code]

  • Dictionary structure with reference to two transparent tables

    Hi
    I have a question about structures defined as dictionary objects.
    Is it possible to define a dictionary structure consisting of the structure types of two transparent tables, i.e. to define a dictionary type that corresponds to something like this:
    TYPES:
               BEGIN OF ty_s_tablejoin,
                  tab1     TYPE z_table1,
                  tab2     TYPE z_table2,
               END OF ty_s_tablejoin.
    where z_table1 and z_table2 are both transparent tables?
    I need it as a dictionary type in order to pass the structure/table into a function module as an input parameter.
    There might be other ways of doing this, but it could be interesting to know if it is possible. Please excuse me if this is a weird question, I'm rather new with SAP.
    kind regards
    Klaus Stenbæ

    Hi Klaus,
    You can't create a structure in the data dictionary from two tables.  However, you can define tables based on structures then create a structure combining both.
    For example;
    Create structures ZST1 and ZST2 (containing the fields of z_table1 and z_table2 respectively)
    Then create tables z_table1 and z_table2, defining them based on ZST1 and ZST2
    Finally create a structure (say ZST12) combining both ZST1 and ZST2
    From a practical point of view, ZST1 and ZST2 should not contain the client field as when you combine them the field will duplicate.  Add the client field to z_table1, z_table2 and ZST12 before including the structres.
    Hope this helps,
    Nick

  • "The Dictionary structure or table "*C865" is either not active or does"

    Hello experts,
    I have a transaction - VKOA. I get the following error on executing this t-code. The program used by this t code is SAPL089C.
    The error is
    Runtime errors         SYNTAX_ERROR
    Occurred on     11/23/2009 at   05:12:58                                                                               
    Syntax error in program "SAPL089C ".                                                                               
    What happened?                                                                               
    The following syntax error occurred in the program SAPL089C :                                  
    "The Dictionary structure or table "*C865" is either not active or does not exist."                       
    Error in ABAP application program.                                                                               
    The current ABAP program "SAPLSVIM" had to be terminated because one of the                    
    statements could not be executed.                                                                               
    This is probably due to an error in the ABAP program.          
    Error analysis             
    The following syntax error was found in the program SAPL089C :                       
    The Dictionary structure or table *C865 is either not active or does not exist.
    Please suggest a suitable solution to this problem...
    Many Thanks in adv.
    Kunal
    Edited by: kunal kotak on Nov 23, 2009 6:53 PM

    Hi ,
    I will try the solution propesed by Max.
    In the meantime, I would like to confirm if there is something related to SAP Note # SAP Note 72121. Refer the following details from the note.
    Symptom
    When you maintain account determination (FI or SD), you get the error
    message:
    The DDIC structure or table "*C400" is not active or does not exist.
    OR
    The system writes a dump with DBIF_NTAB_TABLE_NOT_FOUND, C400 was not
    found.
    C401 can also appear instead of C400.
    Additional key words
    Tables C400, C401.
    Program: SAPL089C, L089CT00
    Transaction: VKOA
    Solution as per the note
    1. Execute the program RV12A002. On the selection screen, enter Usage C,
    Tables 400 to 401.
    WARNING: Make sure that you only delete C400 and C401!
    Execute the program.
    2. Execute program RV12A001. On the selection screen, enter Usage C and
    mark 'Reports & Screens'.
    Can there be sometihing similar to this for C865 table as well. Just a thought.

  • Find Transparent table name for correspoding Dictionary Structure SRM 7.0

    Hi,
    I am not able to find Transparent table name for correspoding Dictionary Structure in Webdynpro Component for a field in  SRM 7.0.
    Please let me know.
    Thanks,
    Monica

    Hi Monica
    please tell the transaction name and the name of field seen in webdynpro
    regards
    andrea

Maybe you are looking for

  • Creating a Webi report from R/3 Data

    Hi Gurus, We are running SAP ECC6 with EHP5. Is it possible to create a Webi report directly from the R/3 (without BW system). I read some where that it can be achieved with Data Federator. Any one has an idea ? Appreciate your help. Regards, Munir

  • How to export selected columns in a table using expdp of oracle10g

    Hi all.. I have a table with 10 columns and i want to export only 4 columns(selected columns) data using expdp Pl. tell me if we can do this and if yes what is the syntax. Thanks.. Sekhar

  • Not able to set up the preview server

    I've referred ATG documentation for preview server setup, tried to set up the preview on BCC. Please find the steps I've followed to set up preview. 1) Added the store module t as a required module to the versioned module, so that my versioned ear in

  • Time Machine Sees No Drive In Time Capsule

    Time Capsule is still working perfectly as a router, but Time Machine can't find any drives to back up with. I restored Time Capsule to factory settings but my Mac still can't see it as a drive, just as a router. Any advice would be appreciated.

  • File Open using Hyperlink

    Hello Experts, I am a new user to BEA Weblogic App server and need help from your side. I have developed a web application in which i have given a hyperlink of a file inside a jsp <p>Expiry Report</p> but when i am clicking on the above hyperlink ins