Handling substitution groups and Tables generation

Hi
This is concerning the generation of tables from xml schema containing "substitutionGroup" attributes and "extension" elements for
deriving from abstract types.
I want to know how the tables are generated when schema has subsitution groups.
I went through the generated tables and observed that it creates a table for each extension...but also generates a table for the head of the subsitution group.
This table would have columns for each of the members in the derivatives of the abstract type.This is resulting in more than 1000 columns in my case
Any suggestions?
Thanks
Devashish

When a subsitution group is used each of the type of each of the elements in the substition group must be an extension of the type of the head element. In the case where the head type is based on an abstract empty complexType this makes no sense. Since the type inheritiance system implies that anywhere a parent type can appear it is legal for the chlild type to appear in it's place we have to create a storage structure for the head element which can handle any of the possible child types. This means that at the storage level we have to generate a table with a column for each possible descendant of the head element. This means that we are effectively restricting the number of direct elements and attributes that can be defined by members of the substition group to a number that is a little less than 1000.
This can be be seen in the first example below.
However in the case where the substition group contains no common element we can model this as choice. as is shown in the second XML Schema. Since every member of the choice is independant of the other members of the choice there is no need for the inheritance hierarchy in the type definitions. This means that each member of the choice can now be mapped to a seperate table. This structure allows for a choice with approxamately a 1000 entries and no practicle limits on the number of decendant elements and attributes for each member of the choice..
This can be seen in the second example bleow;
The key point is the number of columns in ROOT_TABLE. In the First Example it is 17, the fixed overhead plus the number of columns required to persist headType, member1Type and member2Type. In the Second example it is 12, the fixed overhead plus a REF XMLType to point at instances of member1Type and REF XMLType to point at instnaces of member2Type.
I hope this answers your question
SQL> var schemaURL varchar2(256)
SQL> var schemaPath varchar2(256)
SQL> --
SQL> column qualified_col_name format A64
SQL> column data_type format A40
SQL> --
SQL> set lines 150 pages 25 long 10000
SQL> --
SQL> begin
  2    :schemaURL := 'testcase.xsd';
  3    :schemaPath := '/public/testcase.xsd';
  4  end;
  5  /
PL/SQL procedure successfully completed.
SQL> call dbms_xmlSchema.deleteSchema(:schemaURL,4)
  2  /
Call completed.
SQL> declare
  2    res boolean;
  3    xmlSchema xmlType := xmlType(
  4  '<?xml version="1.0" encoding="UTF-8"?>
  5  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" elementFormDefault="qualified" attribute
FormDefault="unqualified" xdb:storeVarrayAsTable="true">
  6     <xs:element name="root" type="rootType" xdb:defaultTable="ROOT_TABLE"/>
  7     <xs:complexType name="rootType" xdb:SQLType="ROOT_T">
  8             <xs:sequence>
  9                     <xs:element ref="head"/>
10             </xs:sequence>
11     </xs:complexType>
12     <xs:complexType name="headType" xdb:SQLType="HEAD_T" abstract="true"/>
13     <xs:complexType name="member1Type" xdb:SQLType="MEMBER1_T">
14             <xs:complexContent>
15                     <xs:extension base="headType">
16                             <xs:sequence>
17                                     <xs:element name="Member1.Child1" type="xs:string"/>
18                                     <xs:element name="Member1.Child2" type="xs:string"/>
19                             </xs:sequence>
20                     </xs:extension>
21             </xs:complexContent>
22     </xs:complexType>
23     <xs:complexType name="member2Type" xdb:SQLType="MEMBER2_T">
24             <xs:complexContent>
25                     <xs:extension base="headType">
26                             <xs:sequence>
27                                     <xs:element name="Member2.Child1" type="xs:string"/>
28                                     <xs:element name="Member2.Child2" type="xs:string"/>
29                             </xs:sequence>
30                     </xs:extension>
31             </xs:complexContent>
32     </xs:complexType>
33     <xs:element name="head" type="headType" xdb:defaultTable="GLOBAL_HEAD_TABLE"/>
34     <xs:element name="member1" type="member1Type" substitutionGroup="head" xdb:defaultTable="GLOBAL_MEMBER1_TABLE"/>
35     <xs:element name="member2" type="member2Type" substitutionGroup="head" xdb:defaultTable="GLOBAL_MEMBER2_TABLE"/>
36  </xs:schema>');
37  begin
38    if (dbms_xdb.existsResource(:schemaPath)) then
39      dbms_xdb.deleteResource(:schemaPath);
40    end if;
41    res := dbms_xdb.createResource(:schemaPath,xmlSchema);
42  end;
43  /
PL/SQL procedure successfully completed.
SQL> begin
  2    dbms_xmlschema.registerSchema
  3    (
  4      :schemaURL,
  5      xdbURIType(:schemaPath).getClob(),
  6      TRUE,TRUE,FALSE,TRUE
  7    );
  8  end;
  9  /
PL/SQL procedure successfully completed.
SQL> --
SQL> desc ROOT_TABLE
Name                                                                                Null?    Type
TABLE of SYS.XMLTYPE(XMLSchema "testcase.xsd" Element "root") STORAGE Object-relational TYPE "ROOT_T"
SQL> --
SQL> desc ROOT_T
ROOT_T is NOT FINAL
Name                                                                                Null?    Type
SYS_XDBPD$                                                                                   XDB.XDB$RAW_LIST_T
head                                                                                         HEAD_T
SQL> --
SQL> desc HEAD_T
HEAD_T is NOT FINAL
HEAD_T is NOT INSTANTIABLE
Name                                                                                Null?    Type
SYS_XDBPD$                                                                                   XDB.XDB$RAW_LIST_T
SQL> --
SQL> desc GLOBAL_HEAD_TABLE
Name                                                                                Null?    Type
TABLE of SYS.XMLTYPE(XMLSchema "testcase.xsd" Element "head") STORAGE Object-relational TYPE "HEAD_T"
SQL> --
SQL> desc GLOBAL_MEMBER1_TABLE
Name                                                                                Null?    Type
TABLE of SYS.XMLTYPE(XMLSchema "testcase.xsd" Element "member1") STORAGE Object-relational TYPE "MEMBER1_T"
SQL> --
SQL> desc MEMBER1_T
MEMBER1_T extends SCOTT.HEAD_T
MEMBER1_T is NOT FINAL
Name                                                                                Null?    Type
SYS_XDBPD$                                                                                   XDB.XDB$RAW_LIST_T
Member1.Child1                                                                               VARCHAR2(4000 CHAR)
Member1.Child2                                                                               VARCHAR2(4000 CHAR)
SQL> --
SQL> desc GLOBAL_MEMBER2_TABLE
Name                                                                                Null?    Type
TABLE of SYS.XMLTYPE(XMLSchema "testcase.xsd" Element "member2") STORAGE Object-relational TYPE "MEMBER2_T"
SQL> --
SQL> desc MEMBER2_T
MEMBER2_T extends SCOTT.HEAD_T
MEMBER2_T is NOT FINAL
Name                                                                                Null?    Type
SYS_XDBPD$                                                                                   XDB.XDB$RAW_LIST_T
Member2.Child1                                                                               VARCHAR2(4000 CHAR)
Member2.Child2                                                                               VARCHAR2(4000 CHAR)
SQL> --
SQL> select qualified_col_name, data_type from user_tab_cols where table_name = 'ROOT_TABLE'
  2  /
QUALIFIED_COL_NAME                                               DATA_TYPE
SYS_NC_OID$                                                      RAW
SYS_NC_ROWINFO$                                                  XMLTYPE
XMLEXTRA                                                         XMLTYPEEXTRA
"XMLEXTRA"."NAMESPACES"                                          XMLTYPEPI
"XMLEXTRA"."EXTRADATA"                                           XMLTYPEPI
XMLDATA                                                          ROOT_T
SYS_TYPEID("XMLDATA")                                            RAW
"XMLDATA"."SYS_XDBPD$"                                           XDB$RAW_LIST_T
"XMLDATA"."head"                                                 HEAD_T
SYS_TYPEID("XMLDATA"."head")                                     RAW
"XMLDATA"."head"."SYS_XDBPD$"                                    XDB$RAW_LIST_T
TREAT("XMLDATA"."head" AS "MEMBER2_T")."Member2.Child1"          VARCHAR2
TREAT("XMLDATA"."head" AS "MEMBER2_T")."Member2.Child2"          VARCHAR2
TREAT("XMLDATA"."head" AS "MEMBER1_T")."Member1.Child1"          VARCHAR2
TREAT("XMLDATA"."head" AS "MEMBER1_T")."Member1.Child2"          VARCHAR2
ACLOID                                                           RAW
OWNERID                                                          RAW
17 rows selected.
SQL> select qualified_col_name, data_type from user_tab_cols where table_name = 'GLOBAL_MEMBER1_TABLE'
  2  /
QUALIFIED_COL_NAME                                               DATA_TYPE
SYS_NC_OID$                                                      RAW
SYS_NC_ROWINFO$                                                  XMLTYPE
XMLEXTRA                                                         XMLTYPEEXTRA
"XMLEXTRA"."NAMESPACES"                                          XMLTYPEPI
"XMLEXTRA"."EXTRADATA"                                           XMLTYPEPI
XMLDATA                                                          MEMBER1_T
SYS_TYPEID("XMLDATA")                                            RAW
"XMLDATA"."SYS_XDBPD$"                                           XDB$RAW_LIST_T
"XMLDATA"."Member1.Child1"                                       VARCHAR2
"XMLDATA"."Member1.Child2"                                       VARCHAR2
ACLOID                                                           RAW
OWNERID                                                          RAW
12 rows selected.
SQL> select qualified_col_name, data_type from user_tab_cols where table_name = 'GLOBAL_MEMBER2_TABLE'
  2  /
QUALIFIED_COL_NAME                                               DATA_TYPE
SYS_NC_OID$                                                      RAW
SYS_NC_ROWINFO$                                                  XMLTYPE
XMLEXTRA                                                         XMLTYPEEXTRA
"XMLEXTRA"."NAMESPACES"                                          XMLTYPEPI
"XMLEXTRA"."EXTRADATA"                                           XMLTYPEPI
XMLDATA                                                          MEMBER2_T
SYS_TYPEID("XMLDATA")                                            RAW
"XMLDATA"."SYS_XDBPD$"                                           XDB$RAW_LIST_T
"XMLDATA"."Member2.Child1"                                       VARCHAR2
"XMLDATA"."Member2.Child2"                                       VARCHAR2
ACLOID                                                           RAW
OWNERID                                                          RAW
12 rows selected.
SQL> insert into ROOT_TABLE values( XMLType (
  2  '<root>
  3    <member1>
  4      <Member1.Child1>AAA</Member1.Child1>
  5      <Member1.Child2>BBB</Member1.Child2>
  6    </member1>
  7  </root>'))
  8  /
1 row created.
SQL> insert into ROOT_TABLE values( XMLType (
  2  '<root>
  3    <member2>
  4      <Member2.Child1>CCC</Member2.Child1>
  5      <Member2.Child2>DDD</Member2.Child2>
  6    </member2>
  7  </root>'))
  8  /
1 row created.
SQL> set long 1000 pages 20
SQL> --
SQL> select * from ROOT_TABLE
  2  /
SYS_NC_ROWINFO$
<root>
  <member1>
    <Member1.Child1>AAA</Member1.Child1>
    <Member1.Child2>BBB</Member1.Child2>
  </member1>
</root>
<root>
  <member2>
    <Member2.Child1>CCC</Member2.Child1>
    <Member2.Child2>DDD</Member2.Child2>
  </member2>
</root>
SQL> var schemaURL varchar2(256)
SQL> var schemaPath varchar2(256)
SQL> --
SQL> begin
  2    :schemaURL := 'testcase.xsd';
  3    :schemaPath := '/public/testcase.xsd';
  4  end;
  5  /
PL/SQL procedure successfully completed.
SQL> call dbms_xmlSchema.deleteSchema(:schemaURL,4)
  2  /
Call completed.
SQL> declare
  2    res boolean;
  3    xmlSchema xmlType := xmlType(
  4  '<?xml version="1.0" encoding="UTF-8"?>
  5  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" elementFormDefault="qualified" attribute
FormDefault="unqualified" xdb:storeVarrayAsTable="true">
  6     <xs:element name="root" type="rootType" xdb:defaultTable="ROOT_TABLE"/>
  7     <xs:complexType name="rootType" xdb:SQLType="ROOT_T">
  8             <xs:choice>
  9                     <xs:element ref="member1" xdb:SQLInline="false" xdb:defaultTable="MEMBER1_TABLE"/>
10                     <xs:element ref="member2" xdb:SQLInline="false" xdb:defaultTable="MEMBER2_TABLE"/>
11             </xs:choice>
12     </xs:complexType>
13     <xs:complexType name="member1Type" xdb:SQLType="MEMBER1_T">
14                             <xs:sequence>
15                                     <xs:element name="Member1.Child1" type="xs:string"/>
16                                     <xs:element name="Member1.Child2" type="xs:string"/>
17                             </xs:sequence>
18     </xs:complexType>
19     <xs:complexType name="member2Type" xdb:SQLType="MEMBER2_T">
20                             <xs:sequence>
21                                     <xs:element name="Member2.Child1" type="xs:string"/>
22                                     <xs:element name="Member2.Child2" type="xs:string"/>
23                             </xs:sequence>
24     </xs:complexType>
25     <xs:element name="member1" type="member1Type"  xdb:defaultTable="GLOBAL_MEMBER1_TABLE"/>
26     <xs:element name="member2" type="member2Type" xdb:defaultTable="GLOBAL_MEMBER2_TABLE"/>
27  </xs:schema>');
28  begin
29    if (dbms_xdb.existsResource(:schemaPath)) then
30      dbms_xdb.deleteResource(:schemaPath);
31    end if;
32    res := dbms_xdb.createResource(:schemaPath,xmlSchema);
33  end;
34  /
PL/SQL procedure successfully completed.
SQL> begin
  2    dbms_xmlschema.registerSchema
  3    (
  4      :schemaURL,
  5      xdbURIType(:schemaPath).getClob(),
  6      TRUE,TRUE,FALSE,TRUE
  7    );
  8  end;
  9  /
PL/SQL procedure successfully completed.
SQL> --
SQL> desc ROOT_TABLE
Name                                                                                Null?    Type
TABLE of SYS.XMLTYPE(XMLSchema "testcase.xsd" Element "root") STORAGE Object-relational TYPE "ROOT_T"
SQL> --
SQL> desc ROOT_T
ROOT_T is NOT FINAL
Name                                                                                Null?    Type
SYS_XDBPD$                                                                                   XDB.XDB$RAW_LIST_T
member1                                                                                      REF OF XMLTYPE
member2                                                                                      REF OF XMLTYPE
SQL> --
SQL> desc GLOBAL_MEMBER1_TABLE
Name                                                                                Null?    Type
TABLE of SYS.XMLTYPE(XMLSchema "testcase.xsd" Element "member1") STORAGE Object-relational TYPE "MEMBER1_T"
SQL> --
SQL> desc MEMBER1_T
MEMBER1_T is NOT FINAL
Name                                                                                Null?    Type
SYS_XDBPD$                                                                                   XDB.XDB$RAW_LIST_T
Member1.Child1                                                                               VARCHAR2(4000 CHAR)
Member1.Child2                                                                               VARCHAR2(4000 CHAR)
SQL> --
SQL> desc GLOBAL_MEMBER2_TABLE
Name                                                                                Null?    Type
TABLE of SYS.XMLTYPE(XMLSchema "testcase.xsd" Element "member2") STORAGE Object-relational TYPE "MEMBER2_T"
SQL> --
SQL> desc MEMBER2_T
MEMBER2_T is NOT FINAL
Name                                                                                Null?    Type
SYS_XDBPD$                                                                                   XDB.XDB$RAW_LIST_T
Member2.Child1                                                                               VARCHAR2(4000 CHAR)
Member2.Child2                                                                               VARCHAR2(4000 CHAR)
SQL> --
SQL> select qualified_col_name, data_type from user_tab_cols where table_name = 'ROOT_TABLE'
  2  /
QUALIFIED_COL_NAME                                               DATA_TYPE
SYS_NC_OID$                                                      RAW
SYS_NC_ROWINFO$                                                  XMLTYPE
XMLEXTRA                                                         XMLTYPEEXTRA
"XMLEXTRA"."NAMESPACES"                                          XMLTYPEPI
"XMLEXTRA"."EXTRADATA"                                           XMLTYPEPI
XMLDATA                                                          ROOT_T
SYS_TYPEID("XMLDATA")                                            RAW
"XMLDATA"."SYS_XDBPD$"                                           XDB$RAW_LIST_T
"XMLDATA"."member1"                                              XMLTYPE
"XMLDATA"."member2"                                              XMLTYPE
ACLOID                                                           RAW
OWNERID                                                          RAW
12 rows selected.
SQL> select qualified_col_name, data_type from user_tab_cols where table_name = 'GLOBAL_MEMBER1_TABLE'
  2  /
QUALIFIED_COL_NAME                                               DATA_TYPE
SYS_NC_OID$                                                      RAW
SYS_NC_ROWINFO$                                                  XMLTYPE
XMLEXTRA                                                         XMLTYPEEXTRA
"XMLEXTRA"."NAMESPACES"                                          XMLTYPEPI
"XMLEXTRA"."EXTRADATA"                                           XMLTYPEPI
XMLDATA                                                          MEMBER1_T
SYS_TYPEID("XMLDATA")                                            RAW
"XMLDATA"."SYS_XDBPD$"                                           XDB$RAW_LIST_T
"XMLDATA"."Member1.Child1"                                       VARCHAR2
"XMLDATA"."Member1.Child2"                                       VARCHAR2
ACLOID                                                           RAW
OWNERID                                                          RAW
12 rows selected.
SQL> select qualified_col_name, data_type from user_tab_cols where table_name = 'GLOBAL_MEMBER2_TABLE'
  2  /
QUALIFIED_COL_NAME                                               DATA_TYPE
SYS_NC_OID$                                                      RAW
SYS_NC_ROWINFO$                                                  XMLTYPE
XMLEXTRA                                                         XMLTYPEEXTRA
"XMLEXTRA"."NAMESPACES"                                          XMLTYPEPI
"XMLEXTRA"."EXTRADATA"                                           XMLTYPEPI
XMLDATA                                                          MEMBER2_T
SYS_TYPEID("XMLDATA")                                            RAW
"XMLDATA"."SYS_XDBPD$"                                           XDB$RAW_LIST_T
"XMLDATA"."Member2.Child1"                                       VARCHAR2
"XMLDATA"."Member2.Child2"                                       VARCHAR2
ACLOID                                                           RAW
OWNERID                                                          RAW
12 rows selected.
SQL> insert into ROOT_TABLE values( XMLType (
  2  '<root>
  3    <member1>
  4      <Member1.Child1>AAA</Member1.Child1>
  5      <Member1.Child2>BBB</Member1.Child2>
  6    </member1>
  7  </root>'))
  8  /
1 row created.
SQL> insert into ROOT_TABLE values( XMLType (
  2  '<root>
  3    <member2>
  4      <Member2.Child1>CCC</Member2.Child1>
  5      <Member2.Child2>DDD</Member2.Child2>
  6    </member2>
  7  </root>'))
  8  /
1 row created.
SQL> set long 1000 pages 20
SQL> --
SQL> select * from ROOT_TABLE
  2  /
SYS_NC_ROWINFO$
<root>
  <member1>
    <Member1.Child1>AAA</Member1.Child1>
    <Member1.Child2>BBB</Member1.Child2>
  </member1>
</root>
<root>
  <member2>
    <Member2.Child1>CCC</Member2.Child1>
    <Member2.Child2>DDD</Member2.Child2>
  </member2>
</root>
SQL>
SQL>
SQL>

Similar Messages

  • How to create checkbox group and table dynamically?

    HI All
    How to create checkbox group and table dynamically?
    Regards
    Ravi

    hi
    check this links for creating  tables dnamically
    How to Create a table dynamically?
    Re: how to create a table dynamically in webdynpro
    and for checkboxgroup
    IWDTransparentContainer rootContainer =
    (IWDTransparentContainer)view.getElement("RootUIElementContainer");
    IWDCheckBox check = (IWDCheckBox)view.createElement(IWDCheckBox.class,"Check"+k);
    //Here "check"+k k represents a unique value every time u create so that u wont get a duplicate instance
    check.setChecked(false);
    rootContainer.addChild(check);
    or Re: adding checkboxes dynamically

  • Problem with Field group and layout generation

    Hi,
      Previously we customized the field group OPP_DISPLAY_SEARCH_RESULT_50 using transaction CRMC_BLUEPRINT_C ( for accplication CRMD_BUS2000111)   for our own custom view and the whole thing worked smoothly. However while changing the layout (adding and taking out some field) I came across issues. I am pretty familiar with PCUI and have done some work on this previously. However this time generating and regenerating this field group ( AFTER some changes) has no effect when the PCUI gets executed with that particular view...
    I have used crmc_pcuitools to confirm that the field group in question is the one mentioned aboveand since its not contained in any reference grp, generating the layout for only this field group should be sufficient. However this generation doesn't take effect at all when the PCUI IS EXECUTED. After the generation I made sure that the table CRMC_LAYOUTC does contain generated layout entries for the respective views etc..
    I have also created a test view and completed the similar customization and it didn't work as well. We are at CRM version 5 with SP6. Previously ( around 7,8 month back) the whole procedure worked fine..
    Am I missing anything..
    Thanks

    Hello,
    What are you trying to modify?
    If it is the search result list, it should be OPP_DISPLAY_SEARCH_RESULT_50  that you have to regenerate with the correct view and field group variant.
    If it is the information tab, it s OPP_OVERVIEW_50 that needs to be regenerate.
    Regards,
    Frederic

  • Group and table visibility

    Hello Friends,
    I am facing a problem as follows:
    In an existing application I am trying to modify some code: there is a group which contains two tables the visibility of both tables are set to context element node also called visibility: and its elements table_1 is set to visibility property of first table and table_2 value attribute is set to visibility property of the second table.
    Now from the coading as far as I understood it is as follows:
    When the first table is set to NONE the second table is automatially visible and first table is disappered, and as soon as in coading it makes the first table visible the second table is automatically disappred ?
    Can any one pls help me in understanding how/what is going on ?
    Because the issue is I have to place now a third table and when this table is visible then the other two tables should not be visible, .......
    Regards

    Hi,
    In the wdDoModifyView:- Now put the if condition for tables that if one is VISIBLE then other two should be set as NONE.
    Regards,
    Praveen

  • Authorization Groups and table TBRG

    In our system we have tables which are using custom authorization group ZEXC.  I am looking at this via SE11 Table Maintenance Generator or SE54 Assign Authorization Group.
    I can also see that it is assigned to roles by using SUIM -->Roles-->By Authorization values -->entry auth object (S_TABU_DIS) and click on entry values.
    What I am not seeing is that the authorization group is defined in table TBRG.
    So my question is....  An authorization group does not need to be defined in order to attach it to a table or assign it to a role?  If the authorization group was created then deleted is it still valid to have it attached to tables and roles?

    Hi Sharon,
    Assign the authorization to user and make it inactive mode.Then authorization will be deactived to tat particular user's.

  • Can we move SAP standard Function Group and Table defintion to BW

    Dear Forum,
    We are in a ‘pilot’ process of migrating SAP R/3 Custom development objects to our BW client and we have a few questions that we would like to know if possible.
    We are currently in the ‘To Be’ Blueprint Phase of migrating SAP 45B to ERP2005 as a Ramp-Up customer and we need to determine as soon as possible the feasibility of moving one particular Custom application
    from our SAP R/3 environment to BW.  This application primarily performs computational processing and does reporting of the results at the
    conclusion
    We have selected one Custom R/3 ABAP program to do a ‘pilot’ to determine the feasibility of migrating it to the BW platform. This Custom program utilizes objects from standard SAP Function Groups which are non existent in BW.  In this particular case Function groups KMS0
    (Cost Center Selection) and KAB2 (CO Reporting: General).
    Questions:
    Are we allowed to move these 2 standard SAP Function Groups to BW ? Would it alter the BW environment integrity as intended and designed by SAP?
    If we move the Function Group KMS0 and KAB2 will
    SAP support our BW environment if we decide to move them?
    Would it be considered a ‘SAP Best Practice’ to move standard SAP R/3
    objects to BW?
    Thank you in advance for your help,
    Paulo Silveira
    [email protected]

    Hi Paulo and welcome on board !
    Please don't post twice the same question...(look in the other one...)
    ..and don't forget to rewards the answers...it's THE way to say thanks here !
    Anyway, I'd suggest to close this thread to avoid to receive answers in both threads...
    Cheers,
    Roberto

  • Cache groups and table join

    Hi,
    Is there any limitation regarding an SQL query doing a JOIN of tables from multiple cache groups?
    Thanks

    No limitations. From a query/DML perspective, cache group tables are just like any other table.
    Chris

  • How to handle plsql Object and Table type inside BPEL

    Hi All,
    I have a procedure with 5 IN and 4 OUT parameters. Out of 4, One is Object type and remaining 3 are Table type. Now in my bpel, i am calling this proc from DB Adapter. The DB Adapter wizard created XSD with proper structure. But when i am testing this i am not getting these out parameters values in the payload of Invoke DBAdapter activity. I am neither getting errors nor output.
    What could be the issue.?
    Thanks in advance,
    Sudheer

    Arik,
    JDev is not creating any wrapper packages as such. It simply created a XSD with same as my procedure name.
    My XSD looks like this...
    <element name="OutputParameters">
    <complexType>
    <sequence>
    <element name="P_OBJ_H_INFO_O" type="db:APPS.H_OBJ_TYPE" db:index="6" db:type="Struct" minOccurs="0" nillable="true"/>
    <element name="P_TAB_L_INFO_O" type="db:APPS.L_TAB_TYPE" db:index="7" db:type="Array" minOccurs="0" nillable="true"/>
    <element name="P_TAB_M_INFO_O" type="db:APPS.M_TAB_TYPE" db:index="8" db:type="Array" minOccurs="0" nillable="true"/>
    <element name="P_TAB_A_INFO_O" type="db:APPS.A_TAB_TYPE" db:index="9" db:type="Array" minOccurs="0" nillable="true"/>
    </sequence>
    </complexType>
    </element>
    And again the 3 table types internally referring object types.
    Thanks for reply. Awaiting response...
    Sudheer

  • Problem with abstract complex type in substitution group.

    Hi all,
    I have three xsds, A, B, C.XSD respectively. A.xsd:There is a substitution group and its complex type declared as abstract and element that uses them. B.xsd has the same structure as A except that it has complex type derived from complex type from A. C.xsd is same as B.xsd.
    The xml files of A and B validate but not of C.
    It gives the following error:
    This file is not valid. Unexpected element'signatureString' in element author. Expected signatureString,signatureText.
    Any help at the earliest is greatly appreciated.
    the code of each xsds is as follows:
    A.XSD:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:PARTICIPATION="Participation" targetNamespace="Participation">
         <!-- ================================================= -->
         <!-- Package: Participation -->
         <!-- ================================================= -->
         <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
         <!-- Class: <<ST>> SignatureString -->
         <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
         <xs:element name="signatureString" type="PARTICIPATION:SignatureString" substitutionGroup="PARTICIPATION:signatureText"/>
         <xs:complexType name="SignatureString">
              <xs:complexContent>
                   <xs:extension base="PARTICIPATION:SignatureText">
                        <xs:attribute name="value" type="xs:string" use="required"/>
                   </xs:extension>
              </xs:complexContent>
         </xs:complexType>
         <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
         <!-- Class: SignatureText -->
         <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
         <xs:element name="signatureText" type="PARTICIPATION:SignatureText" abstract="true"/>
         <xs:complexType name="SignatureText" abstract="true"/>
    </xs:schema>
    B.xsd:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:CM3202="Common3202" xmlns:PARTICIPATION="Participation" targetNamespace="Common3202">
         <xs:import namespace="Participation" schemaLocation="Datatypes3203/RDT/Participation.xsd"/>
         <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
         <!-- Class: <<Participation>> PractitionerParticipation -->
         <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
         <xs:element name="practitionerParticipation" type="CM3202:PractitionerParticipation" abstract="true"/>
         <xs:complexType name="PractitionerParticipation" abstract="true">
              <xs:sequence>
                   <!--xs:element name="signatureText" type="PARTICIPATION:SignatureText" minOccurs="0"/-->
                   <xs:element ref="PARTICIPATION:signatureText"/>
                   </xs:sequence>
         </xs:complexType>
         <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
         <!-- Class: <<Participation>> Author -->
         <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
         <xs:element name="author" type="CM3202:Author" substitutionGroup="CM3202:practitionerParticipation"/>
         <xs:complexType name="Author">
              <xs:complexContent>
                   <xs:extension base="CM3202:PractitionerParticipation"/>
              </xs:complexContent>
         </xs:complexType>
    </xs:schema>
    C.xsd
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:VS3203="VitalSigns3203" xmlns:CM3202="Common3202" targetNamespace="VitalSigns3203">
         <xs:import namespace="Common3202" schemaLocation="Common3202.xsd"/>
         <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
         <!-- Class: <<Observation>> VitalSignsObservationEvent -->
         <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
         <xs:element name="vitalSignsObservationEvent" type="VS3203:VitalSignsObservationEvent"/>
         <xs:complexType name="VitalSignsObservationEvent">
              <xs:sequence>
                   <xs:element name="author" type="CM3202:Author" minOccurs="0">
                   </xs:element>
              </xs:sequence>
         </xs:complexType>
    </xs:schema>

    Hi all,
    This seems to be a bug unless someone of you have a solution.
    Also I ma new to xml/xsd world, so could someone please give the differences between xsi:type vs substitution groups with both element and complex type being abstract. Can this scenario be accomplished by usuage of choice groups.
    Also can anyone suggest any other good xml forums.
    Please let me know.
    Thanks in advance.

  • How do I transpose and group a table in a ViewObject?

    Hi,
    I want to transpose and group a table within a view object and don't know how to do it.
    Please let me explain what I want to do:
    One table, e.g. Employees, has one row per employee. Each employee has a departmenent and a room assigned:
    Employee
    Department
    Room
    John
    Finance
    101
    Susie
    Prod
    102
    Hank
    Finance
    103
    Now I want to show one row per departmenent and a marked checkbox for each room that has an employee from this department in it:
    Department
    Room 101
    Room 102
    Room 103
    Finance
    X
    X
    Prod
    X
    What I already did is, I added a transient attribute of type boolean for each room to the ViewObject for employees. I was able to set the booleans within the method ViewObject::createRowFromResultSet. But I still need to do a grouping by department.
    What I don't understand is: is it possible to 1. selecting data, 2. grouping the result and 3. setting booleans for the rooms, anything in the same view object? Or do I need to have two ViewObjects, one that holds the data and another one that prepares and to displays the data?
    Btw. the users will change the checkboxes and the changes must be written back to the database (makes no sense for this example, I know...).
    Could anything be done in the same ViewObject? If so, which methods do I have to overwrite to do the grouping?
    Could someone please give me a hint or let me know where I can find an example of a similar scenario?
    Thanks in advance!

    Sort the playlist into the desired order, e.g. click the heading for the track no. or album columns, the right-click on the playlist name and click Copy to Play Order. The playlist should now burn in the correct order.
    tt2

  • Table name for Customer Account Group and created by Data

    Dear Gurus,
    Kindly le t me know the table name having a list of Customer a/c groups and created by data. if there is no such table thn pls let me know the alternatives for fetching the same data.
    Wishes
    Abhishek

    hI
    Go to Se11 and give table name KNA1 and go to display
    you can able to see the Customer AccountGroup field :KTOKD
    Thanks
    Vasu

  • Difference between the Field Group  and Internal Table.

    Hi all,
    Can anybody tell me the difference between the Field group and Internal table and when they will used?
    Thanks,
    Sriram.

    Hi
    Internal Tables: They are used to store record type data in tabular form temporarily in ABAP programming. Or we can say, it stores multiple lines of records for temporary use in ABAP programming.
    A field group is a user-defined grouping of characteristics and basic key figures from the EC-EIS or EC-BP field catalog.
    Use
    The field catalog contains the fields that are used in the aspects. As the number of fields grows, the field catalog becomes very large and unclear. To simplify maintenance of the aspects, you can group fields in a field group. You can group the fields as you wish, for example, by subject area or responsibility area. A field may be included in several field groups.
    When maintaining the data structure of an aspect, you can select the field group that contains the relevant characteristics and basic key figures. This way you limit the number of fields offered.
    Regards
    Ashish

  • Table name for Internal order group and Profit center group

    Hello Friends,
    Could any one provide me the table for Internal order group and Profit center group.
    We are developing new customized report and user requested internal order group and Profit center group in the selection criteria.
    I have checked for this tables but found only these fields in structures.
    Thanks in advance,
    Ravi Kiran.

    Or use FM [G_SET_TREE_IMPORT|http://www.sdn.sap.com/irj/scn/advancedsearch?query=g_set_tree_import] to read the hierarchy/Group. (Read FM and FG documentation, you can also add break-point and call some S_ALRxxx transaction which use this FM for the objects you need).
    Regards,
    Raymond

  • Table showing Authorization group and Package

    Hi
    Is there any table where we can see the list of programs using BOTH selection crieteria Authorization group and package together?
    Your help and time will be really appreciate.
    Thanks,
    Niki.

    Hi Niki,
    Try se84->Other Objects->Authorization Objects->choose one->Process->Complete list button on aplication toolbar.
    Regards
    Marcin

  • JAXB: Abstract Types and Substitution Group Errors

    I am using several schemas as defined below:
    Schema 1 defines an abstract type
    Schema 2 extends abstract type
    Schema 3 makes reference to abstract type in 1 and is using substitution groups on the abstarct type
    The error only occurs when the element is Abstract and what extends
    the abstract element specify a substitution group (which I believe is
    correct according to
    http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/#abstract). I can't
    remove the substitution group because declaring the element as abstract
    requires this. Is there a way to fix this?
    code that generates error:
    When attempting to do a JAXBContext jaxbContext = JAXBContext.newInstance(Schema3.class) I get the following error
    Exception in thread "main" com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
    There's no ObjectFactory with an @XmlElementDecl for the element {[http://test.com/FeatureBase.xsd|http://seams.csp.com/FeatureBase.xsd]}FeatureBase.
         this problem is related to the following location:
              at com.test.blah
         at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:102)
         at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:448)
         at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:297)
         at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139)
         at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:214)
         at javax.xml.bind.ContextFinder.find(ContextFinder.java:375)
         at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
         at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)

    Hi all,
    This seems to be a bug unless someone of you have a solution.
    Also I ma new to xml/xsd world, so could someone please give the differences between xsi:type vs substitution groups with both element and complex type being abstract. Can this scenario be accomplished by usuage of choice groups.
    Also can anyone suggest any other good xml forums.
    Please let me know.
    Thanks in advance.

Maybe you are looking for