How to define complex type with table per record?

Hi,
for one of my tasks I'm dealing with XML export. After short investigation of the postings in the forum I found an acceptable solution:
Re: Convert ABAP to XML and Vice versa
The issue is that I need an XML file like this:
<plant>
  <material>
    <purchases>data</purchases>
    <purchases>data</purchases>
    <purchases>data</purchases>
    <sales>data</sales>
    <sales>data</sales>
    <sales>data</sales>
  </material>
  <next material>
  </next material>
</plant>
So here are the questions:
1. Is it possible (and how) to define such deep structured type where for each record (means material) there is at least 1 internal table connected to that record? That would let me use a record-2-DOM conversion and a standard DOM-2-XML renderer.
2. Could anyone please provide a very simple and short example?
Of course, I could write my own XML renderer and achieve what I need (without using DOM, simply write to file all the desired XML tags while looping at my *nested* tables), but if there is a way to define such a structured type and further to fill it with data, it would help me learn a little bit more about abap opportunities and would save me a bit more time to create a renderer.
Many thanks in advance.
Regards,
Ivaylo Mutafchiev

Hi,
You can declare deep structure as below
TYPES : BEGIN OF ty_address,
          house(10) TYPE c,
          street(10) TYPE c,
        END OF ty_address.
TYPES : BEGIN OF ty_itab,
         name(10) TYPE c,
         age      TYPE i,
         address  TYPE ty_address OCCURS 0,
        END OF ty_itab.
DATA : i_address TYPE STANDARD TABLE OF ty_address,
       i_itab    TYPE STANDARD TABLE OF ty_itab.
DATA : wa_address TYPE  ty_address,
       wa_itab TYPE  ty_itab.
CLEAR :  wa_address,
         wa_itab.
wa_address-house = 'House1'.
wa_address-street = 'Street1'.
APPEND wa_address TO i_address.
wa_address-house = 'House2'.
wa_address-street = 'Street2'.
APPEND wa_address TO i_address.
wa_itab-name = 'Test'.
wa_itab-age  = 10.
wa_itab-address[] = i_address[].
APPEND wa_itab TO i_itab.
Also check structure BSPL_GRID_FIELDCAT field CELL_COLOR

Similar Messages

  • How to define a function with table type parameter

    Hello All,
    Here is the requirement ..
    cursor c is select first_name, last_name , ssn from employee ;
    TYPE employee_type IS TABLE OF c%rowtype;
    tbl_employee_type employee_type;
    I want to pass the parameter to a function the ssn -: tbl_employee_type(1).ssn
    how the formal parameter should be declared
    ===========================
    function chk_notnull_blank ( ? ) return boolean is
    BEGIN
    if ( colname is NOT NULL and colname in ( -8E14, -7E14, -6E14, -5E14, -4E14, -3E14, -2E14, -1E14, -1E9 )) then
    RETURN TRUE ;
    else
    RETURN FALSE ;
    end if;
    END chk_notnull_blank;
    ======================
    pls advice
    thanks/kumar

    You cannot define a generic argument in a function,
    but you can overload several funtions with the same name and different types of arguments in a package,
    in this way (not tested):
    create table employees as
    select employee_id ssn, first_name, last_name from hr.employees;
    create or replace
    PACKAGE chk
    IS
      cursor c is select first_name, last_name , ssn from employees ;
      TYPE employee_type IS TABLE OF c%rowtype;
      TYPE employee_ssn_type IS TABLE OF employees.ssn%TYPE;
      TYPE employee_num_type IS TABLE OF number;
      FUNCTION chk_notnull_blank ( colname  employees.ssn%TYPE) RETURN boolean;
      FUNCTION chk_notnull_blank ( colnames  employee_type) RETURN boolean;
      FUNCTION chk_notnull_blank ( colnames  employee_ssn_type) RETURN boolean;
      FUNCTION chk_notnull_blank ( colnames  employee_num_type) RETURN boolean;
    END chk;
    create or replace
    PACKAGE BODY chk
    IS
      FUNCTION chk_notnull_blank ( colname  employees.ssn%TYPE) RETURN boolean IS
      BEGIN
        if ( colname is NOT NULL and colname in ( -8E14, -7E14, -6E14, -5E14, -4E14, -3E14, -2E14, -1E14, -1E9 )) then
          RETURN TRUE ;
        else
          RETURN FALSE ;
        END IF;
      END chk_notnull_blank;
      FUNCTION chk_notnull_blank ( colnames  employee_type) RETURN boolean IS
      BEGIN
         FOR i IN colnames.FIRST .. colnames.LAST LOOP
            IF NOT chk_notnull_blank( colnames( i ).ssn )
            THEN
               RETURN FALSE;
            END IF;
         END LOOP;
         RETURN true;
      END chk_notnull_blank;
      FUNCTION chk_notnull_blank ( colnames  employee_ssn_type) RETURN boolean
      IS
      BEGIN
         FOR i IN colnames.FIRST .. colnames.LAST LOOP
            IF NOT chk_notnull_blank( colnames( i ) )
            THEN
               RETURN FALSE;
            END IF;
         END LOOP;
         RETURN TRUE;
      END chk_notnull_blank; 
      FUNCTION chk_notnull_blank ( colnames  employee_num_type) RETURN boolean
      IS
      BEGIN
         FOR i IN colnames.FIRST .. colnames.LAST LOOP
            IF NOT chk_notnull_blank( colnames( i ) )
            THEN
               RETURN FALSE;
            END IF;
         END LOOP;
         RETURN TRUE;
      END chk_notnull_blank; 
    END chk;I assumed in this example that if the argument of the function chk_notnull_blank is of the table (collection) type,
    then the function returns true if all table elements pass the check, otherwise it returns false.

  • How to print devlievery document with out condition record mess type

    Hi,
    Actually user want to take the sample print out  ( Hard copy ) of the delivery note and other documents for reference, even the message type processed, not processed and even ended with errors also
    I have written a program to display the delivery document numbers  with check boxses and added one button in application tool bar.
    onece user executed the program, he will able to see all the delivery or sales numbers with checkboxes.
    now requirement is, users will select check box and click on the print button it should fire printouts in local printer of user location.
    for this what we are planning is we want to maintian the entries in NAST by RV_MESSAGE_* function modules and printing the output immedaietly
    If any one worked on this kind of requirement, please suggest step by step, how we can print the documents with directly maitaining the message types with out condition records
    Thanks in advance.
    Raju

    Hi,
    Generally if we create any document ( sales or delivery ), based on the condition record message type will be created and with message type details print will be triggered when the medium is 1, date time 4
    But in my case i want to take the printout irrespective of the message and condition records
    i want to take printout even if the message processed,not processed and ended with error.
    is there any way to take the print of the documents by using function modules or updation of NAST table.
    Please help me.
    Thanks in advance
    Raju

  • How to specify the type of table in the form parameters

    How to specify the type of table in the form parameters. for example, how to specify the type of table "vacancies".
    FORM getcertainday
                       USING
                       vacancies TYPE STANDARD TABLE
                       efirstday LIKE hrp9200-zfirst_day
                       lfristday LIKE hrp9200-zfirst_day.

    Hi
    Are you asking about subroutine program to declare a variable for perform statement etc
    if it so check this coding
    DATA: NUM1 TYPE I,
    NUM2 TYPE I,
    SUM TYPE I.
    NUM1 = 2. NUM2 = 4.
    PERFORM ADDIT USING NUM1 NUM2 CHANGING SUM.
    NUM1 = 7. NUM2 = 11.
    PERFORM ADDIT USING NUM1 NUM2 CHANGING SUM.
    FORM ADDIT
           USING ADD_NUM1
                 ADD_NUM2
           CHANGING ADD_SUM.
      ADD_SUM = ADD_NUM1 + ADD_NUM2.
      PERFORM OUT USING ADD_NUM1 ADD_NUM2 ADD_SUM.
    ENDFORM.
    FORM OUT
           USING OUT_NUM1
                 OUT_NUM2
                 OUT_SUM.
      WRITE: / 'Sum of', OUT_NUM1, 'and', OUT_NUM2, 'is', OUT_SUM.
    ENDFORM.
    If your issue is some other can u explain me clearly
    Regards
    Pavan

  • How can I work lsmw with table control using mm01 appl?

    Hi
    How can I work lsmw with table control using mm01 appl?
    Is it difefrent the way we handle table control in BDC?
    Thank You

    Hi
    How can I work lsmw with table control using mm01 appl?
    Is it difefrent the way we handle table control in BDC?
    Thank You

  • How to get wage type for every time record

    Hi Pros,
          I am using DS 0CA_TS_IS_1, it includes report time type (0REPTT), but not have wage type. in CATSDB, I fied fields for attendance/absence type and wage type. but not every time record has wage type. can you please tell me how to get wage type for every time record? what is relation between reporting time type, attendance/absence type and wage typs?

    Hello,
    Can you talk to your HR/T&E functional consultant if they populate these values in CATSDB table using standard way or if there are custom fields that are in CATSDB OR any other table which can be used to meed the requirements
    Thanks
    Abhishek Shanbhigue

  • How to use complex types in a odata url filter

    Hello,
       I am in the process of building a service that uses a complex data type as input in a query filter. I am not sure how the url will need to be generated and also how to retireve this complex type in the get_entity_set method.
    Example:
       I have a complex type as below:
    Name:
    with properties
      Firstname
      Lastname.
    I would like to pass the name as a query filter. an I am not sure how to do this.
    Should it be like this:
    https://.../service/getdetails?$filter=Name.firstname eq 'John' and Name.Lastname eq 'Smith'
    My second question is how do I retireve this filter in the get_entity_set method.

    Hi Rajesh,
    I have done the Scenario using Function import and done the code and working fine.
    But here my question is how to retrieve the data when we are using return type is complex..
    Give me the sample URI format for the above query.
    I have done the code for function import in excute_action method.
      Data : ls_entity1    TYPE zcl_zproj_fm_import_mpc=>banks,
                lt_entity1    TYPE STANDARD TABLE OF zcl_zproj_fm_import_mpc=>banks.
    WHEN 'BankComplex'.
           IF it_parameter IS NOT INITIAL.
    * Read Function import parameter value
             READ TABLE it_parameter INTO ls_parameter WITH KEY name = 'BankCtry'.
             IF sy-subrc = 0.
               lv_country = ls_parameter-value.
             ENDIF.
             IF lv_country IS NOT INITIAL.
               CALL FUNCTION 'BAPI_BANK_GETLIST'
                 EXPORTING
                   bank_ctry       = lv_country
                   max_rows        = '100'
    *          IMPORTING
    *            RETURN          =
                 TABLES
                   bank_list       = lt_banklist
               LOOP AT lt_banklist INTO  ls_banklist .
                 ls_entity1-bankctry   = ls_banklist-bank_ctry.
                 ls_entity1-bankkey = ls_banklist-bank_key.
                 ls_entity1-bankname = ls_banklist-bank_name.
                 ls_entity1-city    = ls_banklist-city.
                 APPEND ls_entity1 TO lt_entity1.
               ENDLOOP.
    * Call methos copy_data_to_ref and export entity set data
               copy_data_to_ref( EXPORTING is_data = lt_entity1
                       CHANGING cr_data = er_data ).
             ENDIF.
           ENDIF.
    Thanks,
    Syam

  • Defining complex types in ABAP

    Hi Folks,
    I am new to the ABAP world and has started programming in it for about two weeks now (therefore, two weeks of experience so far ). I have a question regarding definition of complex types in ABAP. Basically what I want to achieve is to define a type which is either mytype1 or mytype2. During the runtime, it should be decided whether complextype is of mytype1 or of mytype2. Maybe to put some more concrete context: I will call a method with an object of type "complextype". Depending how I set this object, this will be of mytype1 or mytype2. Please see the code schema below.
    TYPES BEGIN OF mytype1.
        TYPES:
        TYPES END OF mytype1.
    TYPES BEGIN OF mytype2.
        TYPES:
        TYPES END OF mytype2.
    TYPES BEGIN OF complextype.
        TYPES:
              mytype_name TYPE mytype1,
              mytype_name TYPE mytype2.
        TYPES END OF complextype.
    Is this a correct way to approach? If yes, how can I express this (either mytype1 or mytype2 but only one of them at a certain time) in ABAP types correctly?
    I will appreciate any kind of help.
    Thanks a million,
    Boldbaatar
    Edited by: Boldbaatar Tsend-Ayush on Apr 6, 2011 8:24 PM

    Hi,
    I think you should use the dynamic data reference .
    TYPES BEGIN OF mytype1.
        TYPES:
        TYPES END OF mytype1.
    TYPES BEGIN OF mytype2.
        TYPES:
        TYPES END OF mytype2.
    data: dref_complex type ref to data.
    field-sumbols:<fs_any> type any.
    if type eq mytype1.
    l_type = 'MY_TYPE1'.
    elseif type eq mytype2.
    l_type = 'MY_TYPE2'.
    endif.
    create data dref_complex type (l_type).
    "In order to access the components of  dref_complex , you should assign the same to field symbol
    assing dref->*  to <fs_any>.
    "then u can use  ASSIGN COMPONENT to get individual components
    Regards
    Arshad

  • How to get return type as Table of Index by BINAR from Procedure using JDBC

    Hi,
    We have stored procedure which takes Varchar as input and rerurn muiltiple recored of type Table of index by BINARY
    We created the procedure with in a package, its header part like below:
    CREATE OR REPLACE PACKAGE emp_pkid_pkg
    AS
    TYPE r_emp IS RECORD ( employe_profile_id NUMBER
    , client_profile_id VARCHAR2(240)
    , email VARCHAR2(240)
    , terms_acp VARCHAR2(1)
    TYPE tp_emp_profile IS TABLE OF r_emp INDEX BY BINARY_INTEGER;
    PROCEDURE er_employe_prov_profile ( e_inxid employe_provision_instance.inxid%TYPE
    , e_emp_recs OUT tp_emp_profile
    END emp_pkid_pkg;
    This procedure has body part, wich has origial business logic like below.
    CREATE OR REPLACE PACKAGE BODY emp_pkid_pkg
    AS
    PROCEDURE pr_customer_prov_profile ( e_inxid employe_provision_instance.inxid%TYPE
    , e_emp_recs OUT tp_customer_provision_profile
    IS
    CURSOR c_emp_prov_instance ( c_guid employe_provision_instance.guid%TYPE )
    etc ...
    END emp_pkid_pkg;
    We could execute the below script from oracle client tool and get the response.
    DECLARE
    e_cust emp_pkid_pkg.tp_emp_profile;
    BEGIN
    emp_pkid_pkg.er_employe_prov_profile ( 'ef45t6543y98'
    , e_cust
    FOR i in e_cust.FIRST..e_cust.LAST LOOP
    DBMS_OUTPUT.PUT_LINE ( e_cust(i).employe_profile_id
    ||'#'|| e_cust(i).client_customer_id
    ||'#'|| e_cust(i).email
    ||'#'|| e_cust(i).term_acp);
    END LOOP;
    END;
    We have requirement to get the results from procedure usind JDBC callable statement call.
    We have tried to call the procedure via JDBC callable statement but it didn't work.
    We have constructed it like the following. It was throwing error "java.sql.SQLException: invalid column type: emp_pkid_pkg.tp_emp_profile
    CallableStatement cs2 = con.prepareCall("{call emp_pkid_pkg.er_employe_prov_profile(?,?)}");
    cs2.registerOutParameter(2, OracleTypes.CURSOR, emp_pkid_pkg.tp_emp_profile);
    cs2.setString(1,empId);
    Not sure whether I am doing the logic correctly. But i tryed with diff type. Still am getting same error like above.
    Please point me to the correct approach.
    Thanks
    Edited by: 921689 on 18-Mar-2012 17:20

    >
    We have requirement to get the results from procedure usind JDBC callable statement call.
    >
    Can't be done - the reason has nothing to do with JDBC so you are in the wrong forum.
    Repost in the PL/SQL forum and I can give you an example of what you have to do
    PL/SQL
    First the TYPEs you defined are PL/SQL types so can't be referenced outside PL/SQL; you need to define SQL types.
    Second you will need to use a procedure that returns a REF CURSOR or is a PIPELINED procedure. Since your procedure doesn't fall into either category you can't use it with JDBC to do what you want.
    If your query was a PIPELINED function then you could simply query it like it was a table. I have a PIPELINED function name 'get_emp' so this works.
    select * from table(get_emp(30));Post in the PL/SQL forum and I can give you the code for the procedure. I'm not going to clutter up this forum with inappropriate material.

  • How to use simple types for table column names ?

    Hi,
    can any one tell how to to use simple types for table column names?
    It is required in internationalizing of webdynpro applications.
    Regards,
    Rajesh

    Hi,
    1: define required column names in <SimpleType>
    2:use the following code to get those values
    3:bind 'text' property of Column headers to context attributes
    4:take a context attribute 'Value' as type of <SimpleType>
    5:set these values to context attributes
    IWDAttributeInfo objAttrInfo=wdContext.getNodeInfo().getAttribute(IPrivate<ViewName>View.IContextElement.VALUE);
    ISimpleTypeModifiable simple=objAttrInfo.getModifiableSimpleType();
    Map m=simple.getEnumerationTexts();
    Collection c=m.values();
    Iterator it=c.iterator();
    if(it.hasNext())
    wdContext.currentContextElement.set<att1>(it.next().toString);
    if(it.hasNext())
    wdContext.currentContextElement.set<att2>(it.next().toString);
    if(it.hasNext())
    wdContext.currentContextElement.set<att3>(it.next().toString);
    Regards
    LakshmiNarayana

  • How to define complex reconciliation rule

    i have to do reconciliation with some complex rule but if i see reconciliation rule we can only define simple rule like userid = samAccountName. Please suggest how we can define complex rule.
    thanks in adv.

    http://download.oracle.com/docs/cd/E14049_01/doc.9101/e14061/busrule.htm#BIBJEFCG

  • Define complex types

    Hi,
    I'm trying to define a new complex type in my .wsdl file of my bpel process project.
    I want one of the elements in this complex type to be of the same type as an element defined in one of my partner link's WSDL.
    How can I make this connection (what do I define as namespaces) from my .wsdl file to a partner link's wsdl file.
    Thank you!!!

    Thanks Clemens!
    I will try the first option.
    This is my wsdl b - the wsdl I want to import types from :
    <definitions
    targetNamespace="http://Images/WebService"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:s0="http://Images/WebService"
    xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    >
    <import namespace="http://Images/WebService" location="webServiceFlickr.wsdl"/>
    <plnk:partnerLinkType name="webServiceFlickrHttpGet_PL">
    <plnk:role name="webServiceFlickrHttpGet_Role">
    <plnk:portType name="s0:webServiceFlickrHttpGet"/>
    </plnk:role>
    </plnk:partnerLinkType>
    <plnk:partnerLinkType name="webServiceFlickrSoap_PL">
    <plnk:role name="webServiceFlickrSoap_Role">
    <plnk:portType name="s0:webServiceFlickrSoap"/>
    </plnk:role>
    </plnk:partnerLinkType>
    <plnk:partnerLinkType name="webServiceFlickrHttpPost_PL">
    <plnk:role name="webServiceFlickrHttpPost_Role">
    <plnk:portType name="s0:webServiceFlickrHttpPost"/>
    </plnk:role>
    </plnk:partnerLinkType>
    </definitions>
    and this is the beginning of wsdl a - the one I want to import the type into :
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions name="process10"
    targetNamespace="http://xmlns.oracle.com/process10"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:client="http://xmlns.oracle.com/process10"
    xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
         <types>
              <schema attributeFormDefault="qualified"
                   elementFormDefault="qualified"
                   targetNamespace="http://xmlns.oracle.com/process10"
                   xmlns="http://www.w3.org/2001/XMLSchema">
    I undestand I need to import the namespace of wsdl b , but can't figure out how,
    What do I define instead of XXX ?
    xmlns:n1="XXX">
    <import namespace="XXX" schemaLocation="XXX"/>
    Thank you !!

  • How to change stored procedure with Table Valued Parameter

    I am not sure how to change the normal stored procedure with Table Value Parameter.Do I have to create a separate Table or do I have to create a datatype. Can you please help me with this
    ALTER PROCEDURE [dbo].[uspInsertorUpdateINF]
    @dp_id char(32),
    @dv_id char(32),
    @em_number char(12),
    @email varchar(50),
    @emergency_relation char(32),
    @option1 char(16),
    @status char(20),
    @em_id char(35),
    @em_title varchar(64),
    @date_hired datetime
    AS
    BEGIN
    SET NOCOUNT ON;
    MERGE [dbo].[em] AS [Targ]
    USING (VALUES (@dp_id, @dv_id , @em_number, @email, @emergency_relation, @option1, @status, @em_id, @em_title, @date_hired))
    AS [Sourc] (dp_id, dv_id, em_number, email, emergency_relation, option1, status, em_id, em_title, date_hired)
    ON [Targ].em_id = [Sourc].em_id
    WHEN MATCHED THEN
    UPDATE
    SET dp_id = [Sourc].dp_id,
    dv_id = [Sourc].dv_id,
    em_number = [Sourc].em_number,
    email = [Sourc].email,
    emergency_relation = [Sourc].emergency_relation,
    option1 = [Sourc].option1,
    status = [Sourc].status,
    em_title = [Sourc].em_title,
    date_hired = [Sourc].date_hired
    WHEN NOT MATCHED BY TARGET THEN
    INSERT (dp_id, dv_id, em_number, email, emergency_relation, option1, status, em_id, em_title,date_hired)
    VALUES ([Sourc].dp_id, [Sourc].dv_id, [Sourc].em_number, [Sourc].email, [Sourc].emergency_relation, [Sourc].option1, [Sourc].status, [Sourc].em_id, [Sourc].em_title, [Sourc].date_hired);
    END;

    It's not clear how you would change the procedure. But assuming that you want to replace the existing scalar parameters with tabular input, this is how you would do it. You first create a table type:
    CREATE TYPE  Insertor_type AS TABLE
        (dp_id                char(32),
         dv_id                char(32),
        em_number            char(12),
        email                varchar(50),
        emergency_relation   char(32),
        option1              char(16),
        status               char(20),
        em_id                char(35),
        em_title             varchar(64),
        date_hired           datetime)
    Then you change the procedure header:
    ALTER PROCEDURE [dbo].[uspInsertorUpdateINF] @tvp Insertor_type READONLY AS
    And finally you change the USING clause:
       USING (SELECT dp_id, dv_id , em_number, email, emergency_relation, option1, status, em_id, em_title, date_hired
              FROM   @tvp) AS [Sourc] ON [Targ].em_id = [Sourc].em_id
    The rest is fine as it is.
    Erland Sommarskog, SQL Server MVP, [email protected]

  • Complex types with single array type element, marshaling exception

    For our JAXRPC web service, we have a complex type, as follows:
    <xs:complexType name = "SomeFault">
    <xs:sequence>
    <xs:element name = "errorMessages" type="some:ErrorMessageWSType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    </xs:complexType>
    <xs:simpleType name = "ErrorMessageWSType">
    <xs:restriction base = "xs:NMTOKEN">
    <xs:enumeration value = "INVALID_1"/>
    <xs:enumeration value = "INVALID_2"/>
    <xs:enumeration value = "INVALID_3"/>
    </xs:restriction>
    </xs:simpleType>
    We are running into Marshaling exceptions on the server side when the response/fault complex type has a single array type field.
    weblogic.wsee.codec.CodecException: Failed to encode
    com.bea.xml.XmlException: failed to find a suitable binding type for use in marshalling object "[Lnamespace.type.ErrorMessageWSType;@693767e9".  using schema type: t=SomeFault@http://namespace/SOME/v1 java type:namespace.type.ErrorMessageWSType[]
    If I change SomeFault, by adding another element, the error goes away.
    <xs:complexType name = "SomeFault">
    <xs:sequence>
    <xs:element name = "errorMessages" type="some:ErrorMessageWSType" maxOccurs="unbounded" />
    <xs:element name = "dummyString" type="xsd:string" minOccurs="0" />
    </xs:sequence>
    </xs:complexType>
    Am I doing something wrong during the wsdlc code generation or is this a known issue?
    <wsdlc srcWsdl="${wsdl.dir}/${wsdl.file.name}"
    destJwsDir="${gen.src.dir}/gen-src-jar"
    destImplDir="${main.src.dir}"
    packageName="${package.prefix}" type="JAXRPC">

    Any luck with this? I am running into the same error. Apparently, this is not an issue with Java binding, but when invoking remote EJBs, we run into this. I am running 10.1.3.1 and the error is:
    <fault>
    <bindingFault xmlns="http://schemas.oracle.com/bpel/extension">
    <part name="summary">
    <summary>
    com.collaxa.cube.ws.wsif.providers.ejb.WSIFOperation_EJB@e26dbf : Could not invoke 'getIdentityInfo'; nested exception is:
         org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'ca.bc.gov.pssg.c3.webservices.identitymanagement.Identity' is not compatible; nested exception is:
         oracle.xml.parser.v2.XMLDOMException: cannot add a node belonging to a different document
    </summary>
    </part>
    <part name="detail">
    <detail>
    org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'ca.bc.gov.pssg.c3.webservices.identitymanagement.Identity' is not compatible; nested exception is:
         oracle.xml.parser.v2.XMLDOMException: cannot add a node belonging to a different document
    </detail>
    </part>
    </bindingFault>
    </fault

  • Returning complex types with arrays (Java / EJB via WSIF)

    Hi all,
    I'm writing some WSIF bindings for existing EJBs, and I've struck a bit of a problem. Basically I've got complex types that contain arrays, and while instances of these types can be passed to the EJBs, return variables typed similarly cause the following fault:
    org.collaxa.thirdparty.apache.wsif.WSIFException: com.collaxa.cube.ws.wsif.providers.ejb.WSIFOperation_EJB@1a372e0 : Could not invoke 'concatString'; nested exception is:
         org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'ejbinterfacetest.StringReturnArray' is not compatible; nested exception is:
         oracle.xml.parser.v2.XMLDOMException: cannot add a node belonging to a different document
         at com.collaxa.cube.ws.wsif.providers.ejb.WSIFOperation_EJB.executeRequestResponseOperation(WSIFOperation_EJB.java:1305)
         at com.collaxa.cube.ws.WSIFInvocationHandler.invoke(WSIFInvocationHandler.java:431)
         at com.collaxa.cube.ws.WSInvocationManager.invoke2(WSInvocationManager.java:416)
    The Java class StringReturnArray is a serializable JavaBean with one property, a String[] called strings. The corresponding complexType (that works when used as a method parameter type) is stringReturnArrayType:
    <complexType name="stringArrayType">
    <sequence>
    <element name="str" type="string" maxOccurs="unbounded" />
    </sequence>
    </complexType>
    <complexType name="stringReturnArrayType">
    <sequence>
    <element name="strings" type="tns:stringArrayType" />
    </sequence>
    </complexType>
    and I've type mapped in the binding with
    <format:typeMap typeName="typens:stringReturnArrayType" formatType="ejbinterfacetest.StringReturnArray" />
    Anyone know why this would be? Is there any way I can get more information out of BPEL or OC4J regarding the fault? (I've already turned the BPEL domain logging to All)
    Cheers,
    Chris.

    Any luck with this? I am running into the same error. Apparently, this is not an issue with Java binding, but when invoking remote EJBs, we run into this. I am running 10.1.3.1 and the error is:
    <fault>
    <bindingFault xmlns="http://schemas.oracle.com/bpel/extension">
    <part name="summary">
    <summary>
    com.collaxa.cube.ws.wsif.providers.ejb.WSIFOperation_EJB@e26dbf : Could not invoke 'getIdentityInfo'; nested exception is:
         org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'ca.bc.gov.pssg.c3.webservices.identitymanagement.Identity' is not compatible; nested exception is:
         oracle.xml.parser.v2.XMLDOMException: cannot add a node belonging to a different document
    </summary>
    </part>
    <part name="detail">
    <detail>
    org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'ca.bc.gov.pssg.c3.webservices.identitymanagement.Identity' is not compatible; nested exception is:
         oracle.xml.parser.v2.XMLDOMException: cannot add a node belonging to a different document
    </detail>
    </part>
    </bindingFault>
    </fault

Maybe you are looking for