Parent-Child Unbound Transformation from Linear Structure

Hi ,
We need to convert the linear people structure into Parent-Child relation with unbounded depth using XQuery. To give in detail, we have the XML schema as
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/ParentChild" xmlns:tns="http://www.example.org/ParentChild" elementFormDefault="qualified">
<complexType name="People">
<sequence>
<element name="id" type="string" />
<element name="name" type="string" />
<element name="age" type="string" />
<element name="parentId" type="string" minOccurs="0" />
</sequence>
</complexType>
<complexType name="Peoples">
<sequence>
<element name="people" type="tns:People" maxOccurs="unbounded"></element>
</sequence>
</complexType>
<element name="Peoples" type="tns:Peoples"></element>
<element name="People" type="tns:People"></element>
<complexType name="Parent">
<sequence>
<element name="id" type="string" />
<element name="name" type="string" />
<element name="age" type="string" />
<element name="child" type="tns:Parent" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="Parents">
<sequence>
<element name="Parent" type="tns:Parent" maxOccurs="unbounded" ></element>
</sequence>
</complexType>
<element name="Parents" type="tns:Parents"></element>
<element name="Parent" type="tns:Parent"></element>
</schema>
The input structure can appear as
<?xml version="1.0"?>
<ns0:Peoples xmlns:ns0="http://www.example.org/ParentChild">
<ns0:people>
<ns0:id>1</ns0:id>
<ns0:name>x</ns0:name>
<ns0:age>11</ns0:age>
<ns0:parentId>2</ns0:parentId>
</ns0:people>
<ns0:people>
<ns0:id>2</ns0:id>
<ns0:name>y</ns0:name>
<ns0:age>11</ns0:age>
<ns0:parentId>3</ns0:parentId>
</ns0:people>
<ns0:people>
<ns0:id>3</ns0:id>
<ns0:name>z</ns0:name>
<ns0:age>11</ns0:age>
</ns0:people>
<ns0:people>
<ns0:id>5</ns0:id>
<ns0:name>a</ns0:name>
<ns0:age>11</ns0:age>
</ns0:people>
</ns0:Peoples>
The response should be like below
<?xml version="1.0"?>
<ns0:Parents xmlns:ns0="http://www.example.org/ParentChild">
<ns0:Parent>
<ns0:id>3</ns0:id>
<ns0:name>z</ns0:name>
<ns0:age>11</ns0:age>
<ns0:child>
<ns0:id>2</ns0:id>
<ns0:name>y</ns0:name>
<ns0:age>11</ns0:age>
<ns0:child>
<ns0:id>1</ns0:id>
<ns0:name>x</ns0:name>
<ns0:age>11</ns0:age>
</ns0:child>
</ns0:child>
</ns0:Parent>
<ns0:Parent>
<ns0:id>5</ns0:id>
<ns0:name>a</ns0:name>
<ns0:age>11</ns0:age>
</ns0:Parent>
</ns0:Parents>
We tried with below XQuery, but it is not resulting as expected.
(:: pragma bea:global-element-parameter parameter="$peoples" element="ns0:Peoples" location="ParentChild.xsd" ::)
(:: pragma bea:global-element-return element="ns0:Parents" location="ParentChild.xsd" ::)
declare namespace ns0 = "http://www.example.org/ParentChild";
declare namespace xf = "http://tempuri.org/RecursiveParentChild/ParentChild/";
declare function xf:ParentChild($peoples as element(ns0:Peoples))
as element(ns0:Parents) {
<ns0:Parents>
let $results := <a>{
     for $people1 in $peoples/ns0:people where (not (exists ($people1/*:parentId)))
     return
     <ns0:Parent>
                              <ns0:id>{ data($people1/ns0:id) }</ns0:id>
                    <ns0:name>{ data($people1/ns0:name) }</ns0:name>
                    <ns0:age>{ data($people1/ns0:age) }</ns0:age>
                         </ns0:Parent>
               </a>
               let $result1 :=
               for $people1 in $peoples/ns0:people where (exists ($people1/*:parentId))
               return
                    if (data($people1/ns0:parentId) = data($results/ns0:id)) then
                         <ns0:child>
                              $people1/*
                         </ns0:child>
                    else()
               return $result1      
</ns0:Parents>
declare variable $peoples as element(ns0:Peoples) external;
xf:ParentChild($peoples)
Anyone tried similar kind of XQuery?. THere is a possibility that the child node can appear before the parent node, how we can handle that as well?
Any help on this is appreciated
Regards
Venkata Madhu

You need a recursive function in this situation :
declare namespace ns0 = "http://www.example.org/ParentChild";
declare namespace xf = "http://tempuri.org/RecursiveParentChild/ParentChild/";
declare variable $peoples as element(ns0:Peoples) external;
declare function xf:getChildren($p as element(ns0:people)) as element(ns0:child)*
  for $c in $peoples/ns0:people[ns0:parentId=$p/ns0:id]
  return <ns0:child>
        <ns0:id>{ data($p/ns0:id) }</ns0:id>
        <ns0:name>{ data($c/ns0:name) }</ns0:name>
        <ns0:age>{ data($p/ns0:age) }</ns0:age>
        { xf:getChildren($c) }
         </ns0:child>
<ns0:Parents>
  for $p in $peoples/ns0:people[not(ns0:parentId)]
  return <ns0:Parent>
        <ns0:id>{ data($p/ns0:id) }</ns0:id>
        <ns0:name>{ data($p/ns0:name) }</ns0:name>
        <ns0:age>{ data($p/ns0:age) }</ns0:age>
        { xf:getChildren($p) }
         </ns0:Parent>
</ns0:Parents>

Similar Messages

  • HELP: how to build a parent-child hierarchy

    Hy everyone,
    my question is very basic: i need to know what is the structure of the relational tables that OBIEE accepts upon which i can build a parent-child hierarchy. I have data that OBIEE does not accept, do you know where i can find a clear description of the structure of the tables that has to be builded for creating correctly a parent-child hierarchy?
    Thanks anyone a lot,
    Regards

    I've found what i needed, for everyone else:
    http://docs.oracle.com/cd/E21043_01/bi.1111/e10540/dimensions.htm#BGBGACFJ
    The parent-child relationship table must include four columns, as follows:
    •A column that identifies the member
    •A column that identifies an ancestor of the member. Note: The ancestor may be the parent of the member, or a higher-level ancestor.
    •A "distance" column that specifies the number of parent-child hierarchical levels from the member to the ancestor
    •A "leaf" column that indicates if the member is a leaf member (1=Yes, 0=No)
    The column names can be user defined. The data types of the columns must satisfy the following conditions:
    •The member and ancestor identifier columns have the same data type as the associated columns in the logical table that contains the hierarchy members. Note that the example shown in Table 9-1 uses text strings for readability, but you normally use integer surrogate keys for member_key and ancestor_key, if they exist in the source dimension table.
    •The "distance" and "leaf" columns are INTEGER columns.
    Note the following about the rows in a parent-child relationship table:
    •Each member must have a row pointing at itself, with distance zero.
    •Each member must have a row pointing at each of its ancestors. For a root member, this is a termination row with null for the parent and distance values.

  • Parent Child Questions

    Hi All
    Fairly new at this and am a bit confused.
    I have been given the task of cleaning up certain tables in my DB. I am running into parent / child issues.
    I want to remove all entries from Table A. When i try and delete one row it gives me a constraint violation. It tells me there is a child record out there. So i go ahead and disable that constraint, go back to table A and try the delete again. I get a different another violation telling me that there is a child record on a different table. And on and on the story goes.
    Now I could keep doing this but the schema i am working on has 1051 tables and just over 6000 constraints. So as you can see this might take me a month to sit here and do that. Not very keen on that.
    What I am after is:
    1. A program / script that will lay out all the parent child relationships for me. Coming across each one as i try and delete is painful
    Would it be possible to get something like:
    Table A
    -- Table B
    -- Table C
    Table D
    -- Table E
    -- Table G
    -- Table F
    2. All the constraints have been created with a delete rule of 'No Action'. I think the easiest thing to do would be to go to the parent table (or what I think is the parent table) and change this to on delete Cascade. From what it looks like I don't think you can do this. Does anybody know how to? Or if its possible?
    3. The third option I am thinking of is:
    Disable All the constraints on what I think is the parent table. Remove entries from the child tables. Enable the constraints.
    Now my issue here is, how do i know all of the child tables? I guess that goes back to my question 1.
    Thanks in advance. Sorry for the story.
    The lack of documentation / diagrams here is driving me nuts :)

    You can use tools like Microsoft Visio to reverse engineer the tables and their relationships.
    You can also generate a list of parent-child related tables from user_constraints.
    something like:
    SQL> SELECT TABLE_NAME,
      2         (SELECT TABLE_NAME
      3            FROM ALL_CONSTRAINTS R
      4           WHERE R.OWNER = U.R_OWNER
      5             AND R.CONSTRAINT_NAME = U.R_CONSTRAINT_NAME) PARENT_TABLE
      6    FROM USER_CONSTRAINTS U
      7   WHERE U.CONSTRAINT_TYPE = 'R'
      8  /
    TABLE_NAME                     PARENT_TABLE
    EMP                            DEPT
    SQL>

  • Simulate 1-N relationship as N-N by using Parent-Child structure

    Hi,
    i have a 1-N relationship between SKILL and USER tables meaning 1 skill can be applied to several users. A skill can have a parent skill meaning that a ParentSkill inherits all privileges of it's child.
    I would like to simulate a N-N relationship between users and skills by building a view which goes through the parent-child relationship... Can this be accomplished by building a view?
    Current structure:
    |USERID | USERNAME | SKILLID  |
    +-------+----------+----------+
    |   1   |  Jack    |      1   |
    |   2   |  Simon   |      1   |
    |   3   |  Fred    |      3   |
    +-------+----------+----------+
    |SKILLID | DESCRIPTION   | PARENTSKILL  |
    +--------+---------------+--------------+
    |   1    |  Mechanic     |      2       |
    |   2    |  Inspector    |      3       |
    |   3    |  Supervisor   |      null    |
    +--------+---------------+--------------+Preferred output (ordering of skillid is not important):
    |USERID | USERNAME | SKILLID  |
    +-------+----------+----------+
    |   1   |  Jack    |      1   |
    |   2   |  Simon   |      1   |
    |   3   |  Fred    |      3   |
    |   3   |  Fred    |      2   |
    |   3   |  Fred    |      1   |
    +-------+----------+----------+

    Hopefully this meets your needs:
    WITH
    users as
        SELECT 1 as USERID, 'Jack' as USERNAME, 1 as SKILLID FROM DUAL UNION ALL
        SELECT 2 as USERID, 'Simon' as USERNAME, 1 as SKILLID FROM DUAL UNION ALL
        SELECT 3 as USERID, 'Fred' as USERNAME, 3 as SKILLID FROM DUAL
    skills as
        SELECT SKILLID,CONNECT_BY_ROOT SKILLID AS ANCESTORS
        FROM
                SELECT 1 as SKILLID, 'Mechanic' as DESCRIPTION, 2 as PARENTSKILL FROM DUAL UNION ALL
                SELECT 2, 'Inspector', 3 FROM DUAL UNION ALL
                SELECT 3, 'Supervisor', NULL FROM DUAL
        CONNECT BY PRIOR PARENTSKILL = SKILLID
    SELECT USERID,USERNAME,ANCESTORS
    FROM skills, users
    WHERE users.skillid = skills.skillid
        USERID USERN  ANCESTORS
             1 Jack           1
             2 Simon          1
             3 Fred           3
             3 Fred           2
             3 Fred           1Hope this helps!

  • Extract the hierarchy in Parent child format from HP

    Hello,
    I have a hierarchy within Accounts dimension which I need to move to the other application in the different environment. I donot want to move the whole dimension. I just need to move a hierarchy. Is there a way I can extract a hierarchy in Parent child format with properties and move the same in to the next one.
    Thanks in advance for your help.
    Cheers,
    XXX

    Hi,
    Below code assumes that you have 2 alias tables and assymetric hierarchy (having 4 to 6 levels) in accounts and all level 0 accounts are 6 digits. If you wish to remove the second alias table from the code simply remove references to it (i.e. aliastbl_id=50030). You can customize the extract top level member by modifying this section: (select object_id from hsp_object where object_name='Total Expenditure')
    This outputs the structure in a fixed columnar format having all levels in different columns.
    Code:
    select o1.object_name as LVL1, o1.object_name as LVL1_DESC_EN, al1.object_name as LVL1_DESC_AR,
    o2.object_name as LVL2, o2.object_name as LVL2_DESC_EN, al2.object_name as LVL2_DESC_AR,
    o3.object_name as LVL3, al3.object_name as LVL3_DESC_EN, alar3.object_name as LVL3_DESC_AR,
    o4.object_name as LVL4, al4.object_name as LVL4_DESC_EN, alar4.object_name as LVL4_DESC_AR,
    o5.object_name as LVL5, al5.object_name as LVL5_DESC_EN, alar5.object_name as LVL5_DESC_AR,
    o6.object_name as LVL6, al6.object_name as LVL6_DESC_EN, alar6.object_name as LVL6_DESC_AR
    from hsp_object o1
    left outer join (select * from hsp_alias where aliastbl_id=50030) a1 on o1.object_id=a1.MEMBER_ID left outer join hsp_object al1 on a1.alias_id=al1.object_id
    inner join hsp_object o2 on o1.object_id=o2.Parent_ID
    left outer join (select * from hsp_alias where aliastbl_id=50030) a2 on o2.object_id=a2.MEMBER_ID left outer join hsp_object al2 on a2.alias_id=al2.object_id
    inner join hsp_object o3 on o2.object_id=o3.Parent_ID
    left outer join (select * from hsp_alias where aliastbl_id=14) a3 on o3.object_id=a3.MEMBER_ID left outer join hsp_object al3 on a3.alias_id=al3.object_id
    left outer join (select * from hsp_alias where aliastbl_id=50030) ar3 on o3.object_id=ar3.MEMBER_ID left outer join hsp_object alar3 on ar3.alias_id=alar3.object_id
    inner join hsp_object o4 on o3.object_id=o4.Parent_ID
    left outer join (select * from hsp_alias where aliastbl_id=14) a4 on o4.object_id=a4.MEMBER_ID left outer join hsp_object al4 on a4.alias_id=al4.object_id
    left outer join (select * from hsp_alias where aliastbl_id=50030) ar4 on o4.object_id=ar4.MEMBER_ID left outer join hsp_object alar4 on ar4.alias_id=alar4.object_id
    inner join hsp_object o5 on o4.object_id=o5.Parent_ID
    left outer join (select * from hsp_alias where aliastbl_id=14) a5 on o5.object_id=a5.MEMBER_ID left outer join hsp_object al5 on a5.alias_id=al5.object_id
    left outer join (select * from hsp_alias where aliastbl_id=50030) ar5 on o5.object_id=ar5.MEMBER_ID left outer join hsp_object alar5 on ar5.alias_id=alar5.object_id
    inner join hsp_object o6 on o5.object_id=o6.Parent_ID
    left outer join (select * from hsp_alias where aliastbl_id=14) a6 on o6.object_id=a6.MEMBER_ID left outer join hsp_object al6 on a6.alias_id=al6.object_id
    left outer join (select * from hsp_alias where aliastbl_id=50030) ar6 on o6.object_id=ar6.MEMBER_ID left outer join hsp_object alar6 on ar6.alias_id=alar6.object_id
    where o1.object_id =(select object_id from hsp_object where object_name='Total Expenditure') and
    LENGTH(o6.object_name)=6
    union all
    select o1.object_name as LVL1, o1.object_name as LVL1_DESC_EN, al1.object_name as LVL1_DESC_AR,
    o2.object_name as LVL2, o2.object_name as LVL2_DESC_EN, al2.object_name as LVL2_DESC_AR,
    o3.object_name as LVL3, al3.object_name as LVL3_DESC_EN, alar3.object_name as LVL3_DESC_AR,
    o4.object_name as LVL4, al4.object_name as LVL4_DESC_EN, alar4.object_name as LVL4_DESC_AR,
    o5.object_name as LVL5, al5.object_name as LVL5_DESC_EN, alar5.object_name as LVL5_DESC_AR,
    o5.object_name as LVL6, al5.object_name as LVL6_DESC_EN, alar5.object_name as LVL6_DESC_AR
    from hsp_object o1
    left outer join (select * from hsp_alias where aliastbl_id=50030) a1 on o1.object_id=a1.MEMBER_ID left outer join hsp_object al1 on a1.alias_id=al1.object_id
    inner join hsp_object o2 on o1.object_id=o2.Parent_ID
    left outer join (select * from hsp_alias where aliastbl_id=50030) a2 on o2.object_id=a2.MEMBER_ID left outer join hsp_object al2 on a2.alias_id=al2.object_id
    inner join hsp_object o3 on o2.object_id=o3.Parent_ID
    left outer join (select * from hsp_alias where aliastbl_id=14) a3 on o3.object_id=a3.MEMBER_ID left outer join hsp_object al3 on a3.alias_id=al3.object_id
    left outer join (select * from hsp_alias where aliastbl_id=50030) ar3 on o3.object_id=ar3.MEMBER_ID left outer join hsp_object alar3 on ar3.alias_id=alar3.object_id
    inner join hsp_object o4 on o3.object_id=o4.Parent_ID
    left outer join (select * from hsp_alias where aliastbl_id=14) a4 on o4.object_id=a4.MEMBER_ID left outer join hsp_object al4 on a4.alias_id=al4.object_id
    left outer join (select * from hsp_alias where aliastbl_id=50030) ar4 on o4.object_id=ar4.MEMBER_ID left outer join hsp_object alar4 on ar4.alias_id=alar4.object_id
    inner join hsp_object o5 on o4.object_id=o5.Parent_ID
    left outer join (select * from hsp_alias where aliastbl_id=14) a5 on o5.object_id=a5.MEMBER_ID left outer join hsp_object al5 on a5.alias_id=al5.object_id
    left outer join (select * from hsp_alias where aliastbl_id=50030) ar5 on o5.object_id=ar5.MEMBER_ID left outer join hsp_object alar5 on ar5.alias_id=alar5.object_id
    where o1.object_id =(select object_id from hsp_object where object_name='Total Expenditure') and
    LENGTH(o5.object_name)=6
    union all
    select o1.object_name as LVL1, o1.object_name as LVL1_DESC_EN, al1.object_name as LVL1_DESC_AR,
    o2.object_name as LVL2, o2.object_name as LVL2_DESC_EN, al2.object_name as LVL2_DESC_AR,
    o3.object_name as LVL3, al3.object_name as LVL3_DESC_EN, alar3.object_name as LVL3_DESC_AR,
    o4.object_name as LVL4, al4.object_name as LVL4_DESC_EN, alar4.object_name as LVL4_DESC_AR,
    o4.object_name as LVL5, al4.object_name as LVL5_DESC_EN, alar4.object_name as LVL5_DESC_AR,
    o4.object_name as LVL6, al4.object_name as LVL6_DESC_EN, alar4.object_name as LVL6_DESC_AR
    from hsp_object o1
    left outer join (select * from hsp_alias where aliastbl_id=50030) a1 on o1.object_id=a1.MEMBER_ID left outer join hsp_object al1 on a1.alias_id=al1.object_id
    inner join hsp_object o2 on o1.object_id=o2.Parent_ID
    left outer join (select * from hsp_alias where aliastbl_id=50030) a2 on o2.object_id=a2.MEMBER_ID left outer join hsp_object al2 on a2.alias_id=al2.object_id
    inner join hsp_object o3 on o2.object_id=o3.Parent_ID
    left outer join (select * from hsp_alias where aliastbl_id=14) a3 on o3.object_id=a3.MEMBER_ID left outer join hsp_object al3 on a3.alias_id=al3.object_id
    left outer join (select * from hsp_alias where aliastbl_id=50030) ar3 on o3.object_id=ar3.MEMBER_ID left outer join hsp_object alar3 on ar3.alias_id=alar3.object_id
    inner join hsp_object o4 on o3.object_id=o4.Parent_ID
    left outer join (select * from hsp_alias where aliastbl_id=14) a4 on o4.object_id=a4.MEMBER_ID left outer join hsp_object al4 on a4.alias_id=al4.object_id
    left outer join (select * from hsp_alias where aliastbl_id=50030) ar4 on o4.object_id=ar4.MEMBER_ID left outer join hsp_object alar4 on ar4.alias_id=alar4.object_id
    where o1.object_id =(select object_id from hsp_object where object_name='Total Expenditure') and
    LENGTH(o4.object_name)=6
    Cheers,
    Alp

  • How to build what a parent child record looked like from audit history

    I've got a simple parent child relationship (eg DEPT/EMP) and I have audit triggers on the 2 tables that log any changes. The 2 tables are seen by the User as 1 entity, so if an EMP record changes, that is essentially a DEPT change. I want to show a record where the info shown is correct at that particular point in time.
    Now for a very crude example to illustrate...
    So, says it's 9:00 and we have:
    Dept 1=Sales
    Emp 1=Clark
    Emp 2=Smith
    Now we change Emp 1 at 9:01 to Smythe
    Next we change Dept 2 at 9:02 to Sales UK
    Next we add Emp 3=Jones at 9:04
    Next we change Emp1 at 9:05 to Clarke
    So now if the User looks at the history of Dept 1 they will see it has changed at the following times:
    9:01 (emp change)
    9:02 (dept change)
    9:04 (emp change)
    9:05 (emp change)
    even though the actual Dept table was only changed once.
    This part is easy enough to extract but the next part I'm struggling to get my head around (must be Friday afternoon!).
    The User wants to be able to view what the "Dept" looked like at the time of the change. So we would get the following results:
    9:00 Dept 1=Sales, Emp 1=Clark, Emp 2=Smith (as per original data)
    9:01 Dept 1=Sales, Emp 1=Clark, Emp 2=Smythe
    9:02 Dept 1=Sales UK, Emp 1=Clark, Emp 2=Smythe
    9:04 Dept 1=Sales UK, Emp 1=Clark, Emp 2=Smythe, Emp 3=Jones
    9:05 Dept 1=Sales UK, Emp 1=Clarke, Emp 2=Smythe, Emp 3=Jones
    I'm trying to write a bit of SQL to do this but the tricky bit comes in due to having 2 different tables that have triggered the change to a "DEPT". I see the output as being as many rows as there are children, so the raw output for the above summary would be along the lines of:
    9:00, Dept 1=Sales, Emp 1=Clark
    9:00, Dept 1=Sales, Emp 2=Smith
    9:01, Dept 1=Sales, Emp 1=Clark
    9:01, Dept 1=Sales, Emp 2=Smythe
    9:02, Dept 1=Sales UK, Emp 1=Clark
    9:02, Dept 1=Sales UK, Emp 2=Smythe
    9:04, Dept 1=Sales UK, Emp 1=Clark
    9:04, Dept 1=Sales UK, Emp 2=Smythe
    9:04, Dept 1=Sales UK, Emp 3=Jones
    9:05, Dept 1=Sales UK, Emp 1=Clarke
    9:05, Dept 1=Sales UK, Emp 2=Smythe
    9:05, Dept 1=Sales UK, Emp 3=Jones
    Any help appreciated!!
    An alternative to all this is to make my trigger on each table populate this info (ie write whatever is currently in place) into a table structured as I have mentioned above (so Dept i denormalised) but that looks to be a bit messy.

    Two tables, Dept and Emp. Both have audit triggers inserting into it's own audit table.
    create or replace table DEPT(
    dept_no number,
    dept_name varchar2(50),
    dept_city varchar2(50));
    create or replace table EMP(
    emp_no number,
    emp_surname varchar2(100),
    emp_firstname varchar2(50),
    emp_dept_no number);dept_no pk of DEPT
    emp_no pk of EMP
    emp_dept_no FK from EMP to DEPT.dept_no
    create or replace table DEPT_AUDIT(
    dept_no number,
    dept_name varchar2(50),
    dept_city varchar2(50),
    audit_date_time date);
    create or replace table EMP_AUDIT(
    emp_no number,
    emp_surname varchar2(100),
    emp_firstname varchar2(50),
    emp_dept_no number,
    audit_date_time date)
    create or replace trigger dept_audit
    after insert or update
    on dept for each row
    begin
      insert into dept_audit(dept_no, dept_name, dept_city, audit_date_time)
      values(:NEW.dept_no, :NEW.dept_name, :NEW.dept_city, sysdate);
    end;
    create or replace trigger emp_audit
    after insert or update
    on emp for each row
    begin
      insert into emp_audit(emp_no, emp_surname, emp_firstname, emp_dept_no, audit_date_time)
      values(:NEW.emp_no, :NEW.emp_surname, :NEW.emp_firstname, :NEW.emp_dept_no, sysdate);
    end;My above example (ignoring that the columns don't match up but hopefully you get the drift) would end up with the following results in the 2 audit tables:
    DEPT_AUDIT
    9:00 Dept 1=Sales (insert)
    9:02 Dept 1=Sales UK (update)
    EMP_AUDIT
    9:00 Emp 1=Clark (insert)
    9:00 Emp 2=Smith (insert)
    9:01 Emp 2=Smythe (update)
    9:04 Emp 3=Jones (insert)
    9:05 Emp 1=Clarke (update)
    As I said originally, I want to get a view of what the "DEPT" looked like at a particular time and to do this I need to take into account the EMP changes for the DEPT which is why my results would be as follows:
    9:00 Dept 1=Sales, Emp 1=Clark, Emp 2=Smith
    9:01 Dept 1=Sales, Emp 1=Clark, Emp 2=Smythe
    9:02 Dept 1=Sales UK, Emp 1=Clark, Emp 2=Smythe
    9:04 Dept 1=Sales UK, Emp 1=Clark, Emp 2=Smythe, Emp 3=Jones
    9:05 Dept 1=Sales UK, Emp 1=Clarke, Emp 2=Smythe, Emp 3=Jones
    Though what I really want is the rows that make it up like:
    9:00, Dept 1=Sales, Emp 1=Clark
    9:00, Dept 1=Sales, Emp 2=Smith
    9:01, Dept 1=Sales, Emp 1=Clark
    9:01, Dept 1=Sales, Emp 2=Smythe
    9:02, Dept 1=Sales UK, Emp 1=Clark
    9:02, Dept 1=Sales UK, Emp 2=Smythe
    9:04, Dept 1=Sales UK, Emp 1=Clark
    9:04, Dept 1=Sales UK, Emp 2=Smythe
    9:04, Dept 1=Sales UK, Emp 3=Jones
    9:05, Dept 1=Sales UK, Emp 1=Clarke
    9:05, Dept 1=Sales UK, Emp 2=Smythe
    9:05, Dept 1=Sales UK, Emp 3=Jones
    Hope that is a bit clearer.
    thanks for taking time to look.

  • How to allow Sharepoint users to login from multiple parent-child accounts?

    Our client has mutliple AD domains and wants to allow people which have multiple AD accounts in multiple domains to login as THE SAME user:
    - only primary account will be visible in search
    - there will be only one user profile with all informations gathered from all sub accounts
    - permissions for the sub account will be in sync with parent account
    - task generated for parent will be visible for child accouns too etc
    - ad admin can link the account together in the Active Directory - this link is permament (even if we move users to another OU) and ad admin can define which account is primary and secondary (parent/child)
    How we can implement this in Sharepoint 2010 Std Server?

    Everything in SharePoint keys of the Security Identifier (SID) of a user.  Each user in a domain has a unique SID, so there is no way to have multiple users recognized in SharePoint as the same user.
    Paul Stork SharePoint Server MVP
    Principal Architect: Blue Chip Consulting Group
    Blog: http://dontpapanic.com/blog
    Twitter: Follow @pstork
    Please remember to mark your question as "answered" if this solves your problem.

  • Getting parent-child data from a single column in a table

    Hi,
    I have a parent-child data in a column.
    Eg:
    0
    00
    01
    010
    011
    1
    10
    11
    These values are present in the single column itself. My need is to get the parent values for the given child value.
    For eg: If I am giving the input as 011, the query should return all its parents, i.e. 01 and 0
    Could you please give me any inputs on this?
    Thanks,
    GV

    Frank Kulash wrote:
    Assuming that each child's id is formed by adding exactly one character to the end of its parent's id:
    SELECT     id
    FROM     table_x
    START WITH     id          = :target_id
    CONNECT BY     PRIOR id     LIKE id || '_';
    Small tweak to yours Frank if it's just the parents that need identifying...
    SQL> ed
    Wrote file afiedt.buf
      1  with t as (select '0' as x from dual union all
      2             select '00' from dual union all
      3             select '01' from dual union all
      4             select '010' from dual union all
      5             select '011' from dual union all
      6             select '1' from dual union all
      7             select '10' from dual union all
      8             select '11' from dual)
      9  -- end of test data
    10  SELECT     x
    11  FROM       t, (select '&required' as req from dual) req
    12  WHERE x != req.req
    13  START WITH x = req.req
    14* CONNECT BY PRIOR x LIKE x || '_'
    SQL> /
    Enter value for required: 011
    old  11: FROM   t, (select '&required' as req from dual) req
    new  11: FROM   t, (select '011' as req from dual) req
    X
    01
    0
    SQL> /
    Enter value for required: 11
    old  11: FROM   t, (select '&required' as req from dual) req
    new  11: FROM   t, (select '11' as req from dual) req
    X
    1
    SQL>

  • Inserting parent /child records from a xml file ...

    XML file pasted below:
    I have loaded the xml file into a table called xml_demo which has a column xml_data of type xmltype.
    The select for parent record is as follows and it works:
    INSERT INTO balit_submissions (balitdoc, documentversion, datetime_from,job_id, status,creation_datetime)
    (SELECT 'MOL'
    ,to_number(extract(x.xml_data,'/MolDocument/DocumentVersion/@v'))
    ,to_date(substr(extract(x.xml_data,'/MolDocument/ValidTimeInterval/@v'),1,16),
    'yyyy-mm-dd"T"hh24:mi')
    ,123456
    ,'CREATED',
    NULL
    FROM xml_DEMO x WHERE
    existsnode(x.xml_data,'/MolDocument/DocumentIdentification[@v="MOL_20100331_1500_1600"]') = 1)
    Having problem creating child records. From this file I expect to create 3 records.
    insert into balit_energy_blocks
    SO_ID,
    DATETIME_FROM,
    DIRECTION,
    BLOCK_NUMBER,
    ENERGY,
    LAST_SUBMIT_DATETIME,
    PRICE_POUNDS,
    PRICE_EUROS,
    BALIT_REF,
    STATUS,
    LAST_EDIT_DATETIME,
    MOL_REASON,
    ACQUIRING_SO_AREA)
    (SELECT 'RTE'
    ,to_date(substr(extract(x.xml_data,'/MolDocument/ValidTimeInterval/@v'),1,16),
    'yyyy-mm-dd"T"hh24:mi')
    ,DECODE(extract(x.xml_data,'/MolDocument/MolTimeSeries/Direction/@v'),'AO1','Up','Down')
    ,to_number(substr(extract(x.xml_data,'/MolDocument/MolTimeSeries/ContractIdentification/@v'),19))
    ,to_number(extract(x.xml_data,'/MolDocument/MolTimeSeries/Period/Interval/EnergyPrice/@v'))
    ,sysdate
    ,null -- price pounds
    ,null -- price euro
    ,extract(x.xml_data,'/MolDocument/MolTimeSeries/ContractIdentification/@v')
    ,'SUBMITTED'
    ,'A96'
    ,NULL -- acquiring area
    ,sysdate
    FROM xml_DEMO x WHERE
    existsnode(x.xml_data,'/MolDocument/DocumentIdentification[@v="MOL_20100331_1500_1600"]') = 1)
    For example, there are 3 ContractIdentification tags. Example of 1:
    <ContractIdentification v="RTE_20100331_1500_16"/>
    I was expecting this select to pluck the last number from this string. In this case 16.
    The select was:
    to_number(substr(extract(x.xml_data,'/MolDocument/MolTimeSeries/ContractIdentification/@v'),19))
    The result I got was:
    16RTE_20100331_1500_20NG_20100331_1500_6
    All contractident values are concatnated and returns from position 19 onwards.
    Can anyone help me to extract the last number from each ContractIdentification tag value and to create the 3 records
    Thanks
    James Sathiaraj
    <?xml version="1.0" encoding="UTF-8"?>
    <MolDocument DtdVersion="3" DtdRelease="0">
    <DocumentIdentification v="MOL_20100331_1500_1600"/>
    <DocumentVersion v="1"/>
    <DocumentType v="A43"/>
    <SenderIdentification codingScheme="A01" v="17X100Z100Z0001H"/>
    <SenderRole v="A35"/>
    <ReceiverIdentification codingScheme="A01" v="10XFR-RTE------Q"/>
    <ReceiverRole v="A04"/>
    <CreationDateTime v="2010-03-31T14:10:00Z"/>
    <ValidTimeInterval v="2010-03-31T15:00Z/2010-03-31T16:00Z"/>
    <Domain codingScheme="A01" v="10YDOM-1001A001A"/>
    <MolTimeSeries>
    <ContractIdentification v="RTE_20100331_1500_16"/>
    <ResourceProvider codingScheme="A01" v="10XFR-RTE------Q"/>
    <AcquiringArea codingScheme="A01" v="17Y100Z100Z00013"/>
    <ConnectingArea codingScheme="A01" v="10YFR-RTE------C"/>
    <AuctionIdentification v="AUCTION_20100331_1500_1600"/>
    <BusinessType v="A10"/>
    <BidTimeInterval v="2010-03-31T15:00Z/2010-03-31T16:00Z"/>
    <MeasureUnitQuantity v="MAW"/>
    <Currency v="EUR"/>
    <MeasureUnitPrice v="MWH"/>
    <Direction v="A02"/>
    <MinimumActivationQuantity v="50"/>
    <Status v="A06"/>
    <Period>
    <TimeInterval v="2010-03-31T15:00Z/2010-03-31T16:00Z"/>
    <Resolution v="PT60M"/>
    <Interval>
    <Pos v="1"/>
    <Qty v="50"/>
    <EnergyPrice v="50.45"/>
    </Interval>
    </Period>
    </MolTimeSeries>
    <MolTimeSeries>
    <ContractIdentification v="RTE_20100331_1500_20"/>
    <ResourceProvider codingScheme="A01" v="10XFR-RTE------Q"/>
    <AcquiringArea codingScheme="A01" v="17Y100Z100Z00013"/>
    <ConnectingArea codingScheme="A01" v="10YFR-RTE------C"/>
    <AuctionIdentification v="AUCTION_20100331_1500_1600"/>
    <BusinessType v="A10"/>
    <BidTimeInterval v="2010-03-31T15:00Z/2010-03-31T16:00Z"/>
    <MeasureUnitQuantity v="MAW"/>
    <Currency v="EUR"/>
    <MeasureUnitPrice v="MWH"/>
    <Direction v="A02"/>
    <MinimumActivationQuantity v="50"/>
    <Status v="A06"/>
    <Period>
    <TimeInterval v="2010-03-31T15:00Z/2010-03-31T16:00Z"/>
    <Resolution v="PT60M"/>
    <Interval>
    <Pos v="1"/>
    <Qty v="50"/>
    <EnergyPrice v="50.48"/>
    </Interval>
    </Period>
    </MolTimeSeries>
    <MolTimeSeries>
    <ContractIdentification v="NG_20100331_1500_6"/>
    <ResourceProvider codingScheme="A01" v="10X1001A1001A515"/>
    <AcquiringArea codingScheme="A01" v="17Y100Z100Z00013"/>
    <ConnectingArea codingScheme="A01" v="10YGB----------A"/>
    <AuctionIdentification v="AUCTION_20100331_1500_1600"/>
    <BusinessType v="A10"/>
    <BidTimeInterval v="2010-03-31T15:00Z/2010-03-31T16:00Z"/>
    <MeasureUnitQuantity v="MAW"/>
    <Currency v="EUR"/>
    <MeasureUnitPrice v="MWH"/>
    <Direction v="A01"/>
    <MinimumActivationQuantity v="50"/>
    <Status v="A06"/>
    <Period>
    <TimeInterval v="2010-03-31T15:00Z/2010-03-31T16:00Z"/>
    <Resolution v="PT60M"/>
    <Interval>
    <Pos v="1"/>
    <Qty v="50"/>
    <EnergyPrice v="17.0"/>
    </Interval>
    </Period>
    </MolTimeSeries>
    </MolDocument>

    Hi,
    The result I got was:
    16RTE_20100331_1500_20NG_20100331_1500_6In the query you tried, you access a single record so you can't expect to get three rows "magically". The EXTRACT function just works as expected, it extracts the requested nodes, but the result is still an XML fragment (a scalar value).
    In order to achieve your goal, you have to break the MolTimeSeries sequence into relational rows.
    Two similar solutions are possible, XMLTable (10gR2 and up) or Table/XMLSequence.
    In your other post you mentioned db version 10.1, so I guess we'll go with XMLSequence :
    SELECT 'RTE'
           ,to_date(substr(extractvalue(x.xml_data,'/MolDocument/ValidTimeInterval/@v'),1,16),'yyyy-mm-dd"T"hh24:mi')
           ,decode(extractvalue(x2.column_value,'/MolTimeSeries/Direction/@v'),'A01','Up','Down')
           ,to_number(regexp_substr(extractvalue(x2.column_value,'/MolTimeSeries/ContractIdentification/@v'),'\d+$'))
           ,to_number(extractvalue(x2.column_value,'/MolTimeSeries/Period/Interval/EnergyPrice/@v'))
           ,sysdate
           ,null
           ,null
           ,extractvalue(x2.column_value,'/MolTimeSeries/ContractIdentification/@v')
           ,'SUBMITTED'
           ,'A96'
           ,null
           ,sysdate
    FROM xml_demo x,
         table(
           xmlsequence(
             extract(x.xml_data, '/MolDocument/MolTimeSeries')
         ) x2
    WHERE existsnode(x.xml_data,'/MolDocument/DocumentIdentification[@v="MOL_20100331_1500_1600"]') = 1;Please also note the use of REGEXP_SUBSTR instead of the regular SUBSTR because it didn't work for "NG_20100331_1500_6".
    Hope that helps.
    Edited by: odie_63 on 24 juin 2010 21:18 - added regexp comment

  • Incorrect totals from cache with CustomRollupColumn and non-parent-child dimensions

    Hello. Before I start let me apologise for my English :)
    We have a very complex cube, with 2 (actually more, but only these 2 are important) parent-child dimensions.
    One of them has CustomRollupColumn defined.
    Not long ago we have decided to make refactoring of our cube. This also included making these dimensions non-parent-child.
    All our old reports started to work much faster after that... but we have mentioned that sometimes they show incorrect totals, or no totals at all.
    We spend a lot of time trying to figure out what's wrong and finally we had found that if we clear cache before next refresh of the report - the totals are always correct!
    If we don't clear cache - we get wrong totals second time, and each next time after that. If we see wrong totals - we could clear cache and get correct totals once again.
    If we use "Real Time Olap=True;" connection string parameter - the totals are always correct because cache is not used.
    But we don't like this workaround.
    Is there any fix for this bug? Google shows that this problem exists from SQL2005, and still we have it :( Also, there is adivice to set CalculationCoverPolicy to 9 - we have tried - but it was fruitless.
    And if we revert these 2 dimensions back to parent-child - all working fine again, but as slow as it was before the refactoring :(

    Hi Bateks,
    Glad to hear that your issue had been solved by yourself, thank you for you sharing which will help other forum members who have the similar issue.
    Regards,
    Charlie Liao
    TechNet Community Support

  • How to filter parent & child rows from tables while export usingData export

    Hi,
    I have a requirement of export schema. Assume there is a account details table and account transactions table under schema.They have parent child relation exist. if i filter accounts from account details the corresponding transactions in account transactions table should be filterd.How to achieve this?
    Regards,
    Venkat Vadlamudi
    Mobile:9850499800

    Not sure if this is a SQL and PL/SQL question or whether it's an Oracle Apps type question or a Database General.
    Whatever, you've posted in the wrong forum (http://forums.oracle.com/forums/ann.jspa?annID=599)
    You should post in a more appropriate forum e.g.
    PL/SQL
    General Database Discussions
    etc.
    locking this thread

  • Parent/child records from same table

    I want to create a query that is a union such that the 2nd resultset is based on the 1st resultset. I have a table that has parent/child records in the same table.
    Table: EVENTS
    EVENT_ID
    PARENT_EVENT_ID
    CREATED_DATE
    (other columns)
    if PARENT_EVENT_ID is null then it is a parent record, else it is a child record. I want to select all parent records then union them with all the associated child records...something like this:
    select * from EVENTS where CREATED_DATE < sysdate - 90 and PARENT_EVENT_ID is null -- All parents
    union
    select * from EVENTS where PARENT_EVENT_ID in (select EVENT_ID from EVENTS where CREATED_DATE < sysdate - 90 and PARENT_EVENT_ID is null) -- include any children of parents selected from above
    This works but it's kind of ugly, I want to avoid using the sub-select in the 2nd because it is a repeat of the 1st statement, is there a way to alias the first statement and just refer to it in the 2nd query?

    Hi,
    kev374 wrote:
    Thanks, one question...
    I did a test and it seems the child rows have to also satisfy the parent row's where clause, take this example:
    EVENT_ID|PARENT_EVENT_ID|CREATED_DATE
    2438 | (null) | April 9 2013
    2439 | 2438 | April 11 2013
    2440 | 2438 | April 11 2013
    select * from EVENTS where CREATED_DATE < sysdate - 9
    start with EVENT_ID = 2438
    connect by PARENT_EVENT_ID = prior EVENT_IDSo you've changed the condition about only wanting roots and their children, and now you want descendants at all levels.
    This pulls in record #2438 (per the sysdate - 9 condition) but 2439 and 2440 are not connected. Is there a way to supress the where clause evaluation for the child records? I just want to pull ALL child records associated with the parent and only want to do the date check on the parent.Since the roots (the only rows you want to exclude) have LEVEL=1, you can get the results you requested like this:
    WHERE   created_date  < SYSDATE - 9
    OR      LEVEL         > 1However, since you're not ruling out the grandchildren and great-grandchildren any more, why wouldn't you just say:
    SELECT  *
    FROM    events
    WHERE   created_date     < SYSDATE - 9
    OR      parent_event_id  IS NOT NULL;?
    CONNECT BY is slow. Don't use it if you don't need it.
    If you x-reference my original query:
    select * from EVENTS where CREATED_DATE < sysdate - 90 and PARENT_EVENT_ID is null -- All parents
    union
    select * from EVENTS where PARENT_EVENT_ID in (select EVENT_ID from EVENTS where CREATED_DATE < sysdate - 90 and PARENT_EVENT_ID is null) -- include any children of parents selected from above
    The 2nd select does not apply the created_date < sysdate - 90 on the children but rather pulls in all related children :)Sorry; my mistake. That's what happens when you don't post sample data, and desired results; people can't test their solutions and find mistakes like that.

  • Move child movie clip from one parent object to another

    Hi everyone,
    I am somewhat new to AS3, and I'm having a hard time working out the most appropriate way to move a child movieclip between parent objects.
    I'm creating a board-game type game wherein I've dynamically created an array of 'Square' movieclips, with no visual elements, which are arranged in a 10x10 rectangle on the stage. I then dynamically add the appropriate types of piece movieclips to the various squares with the addChild() method. In general, a square should only have one child piece at a time.
    All of this works well for setting up the play area, but now I'm having an issue with moving a piece from one square to another. I want to have the user click a square with a piece on it, then click the destination square to move the piece. I have the logic for determining where a user can move any given piece to, but I don't know how to actually move the piece.
    The pieces are all different class objects that extend both a base class I call Piece as well as the MovieClip class. The main issue is that when dynamically adding the various pieces to the squares, I don't provide them a unique name to access them later. I don't bother with unique names because I have no way of knowing which piece instance will be in a given square, so using getChildByName(name:String) isn't very useful.
    So I can think of two routes that I can take: Making a getter/setter for the Square class that manages a private Piece property (as well as the adding and removing of the child piece to/from the parent square), or using getChildAt(index:int) to try to access the child piece.
    I want to go with the first route as it seems to be the most maintainable to me. My problem is that I can't work out how to manage empty squares in this scenario. My instinct is to null to private _piece property of one square once I've moved the child piece instance to another square... but I'm fairly certain that the private property is a reference type, and nulling it out will null the actual piece object even after it's changed parents.
    I'm sorry for the long description. I'm hoping that my lack of experience with as3 it what's causing my trouble, and that someone more well versed will know of the best way to handle this. Maybe I'm overthinking everything.
    If something isn't clear, please feel free to ask me for clarification. I would appeciate any help that anyone may be able to offer.
    Thanks!
    - Scott

    for a square with a child, you can use:
    whateversquare.getChildAt(0);  // to reference whateversquare's only child.  although, if there are graphics in whateversquare, you may need to use getChildAt(1)
    or, if you want to use a square class getter/setter, what's the problem?  an empty square will return null.

  • Excluding Datamember from Update in Parent-Child hierarchy

    Hello,
    I have a Parent-Child hierarchy and writeback enabled measures.
    If I make an equal allocation update on a parent element, its datamember gets the same amount as the leaf elements.
    How can I override this feature (scope and cell calulation for datamembers would not do...)?
    I mean: if I have 4 leaf members and I write on the parent element I want to see 250 on leaves - and null on DataMember -, instead of 200 on each elements (including datamember).
    I would not convert the Parent-Child to normalized hierarchy if I have any chance to switch off the datamembers.
    Thank you for your answers in advance!
    Br,
    Peter

    Hi Peter,
    Thank you for your question. 
    I am trying to involve someone more familiar with this topic for a further look at this issue. Sometime delay might be expected from the job transferring. Your patience is greatly appreciated. 
    Thank you for your understanding and support.
    Regards,
    Charlie Liao
    TechNet Community Support

  • Executing Child Taskflow Method from parent taskflow page

    Hi All,
    I have one issue with checking dirty data form Parent Taskflow button to check dirty data update in Child Taskflow page's view Object.
    JDev version: 11.1.1.3
    Scenario :
    Outer Container page has back button which need to check wherethere child taskflow has dirty data update or not. Child Taskflow transaction is always create new transaction and non-shared. But from ControllerContext, the root am service still associated with other viewobjects i.e. is loaded in others tabs in that outer container page, which is also checking dirty data from another tabs' viewobject dirty data checking (I need to avoid this issue that's why not working for me with controller context). I am thining to execute the child taskflow method from parent page on back button to check dirty data update for that tabs' page only. For it, how can we get access child taskflow method from parent page with static region taskflow. Is there any solution to implement like this? thank you so much.
    - Robin

    Hi,
    this should work:
    1. child task flow has input parameter "parentBean" defined.
    2. The child task flow has a managed bean "ChildBean" defined in pageFlowScope with a property "parentBean" with setter/getter.
    3. the parentBean input parameter references (in its value roperty) #{pageFlowScope.childBean.parentBean}
    4. The parent bean is configured on the parent view task flow (viewScope) and passed as a task flow binding input parameter. The parent bean has a boolean property "childFlowTransactionDirty"
    This allows the child bean to invoke the parent bean childFlowTransactionDirty to tell it that the transaction is dirty. On the parent view, you would just check the parentBean state for this property.
    Next is how you set the value on the parentBean from the childTaskFlow. One option is to use a RegionController on the PageDef file of ADF bound views in the child task flow.
    public class MyRegionController implements RegionController {
        public MyRegionController(){
        public boolean refreshRegion(RegionContext regionContext) {      
         int refreshFlag = regionContext.getRefreshFlag();
          //get access to the ChildBean and its parentBean property. Then call
          //ControllerContext .... to check the transaction state
          //update the childFlowTransactionDirty property
          ((DCBindingContainer)regionContext.getRegionBinding()).refresh(refreshFlag);
          return true;
        @Override
        public boolean validateRegion(RegionContext regionContext) {
            regionContext.getRegionBinding().validate();
            return false;
        public boolean isRegionViewable(RegionContext regionContext) {
            return regionContext.getRegionBinding().isViewable();
        @Override
        public String getName() {
            return this.getClass().toString();
    }Next: When users press the back button in the parent view, you call the ParentView bean childFlowTransactionDirty to check the child task flow transaction to be dirty or not
    Frank

Maybe you are looking for

  • Find feature no longer works on Contact List

    When I tried to call a person from my contact list, I typed in the first letter of his last name and the only option that I have is to  "Add Contact: (insert letter here)".  I tried to use the same process for all letters and they all have the same o

  • Connecting to BW system through VPN in Design Studio

    Hi Experts, I tried to connect to my client BW system through VPN and used the URL in my Design studio, but when I connect like that the Design Studio is working very slowly and hanging several times,  If I connect to the same system via Lumira it is

  • Iphoto won't open, nor itunes-

    seems my macbook pro or iphone downloaded itunes 11 which I've systematically avoided since huge fiasco when I upgraded my phone to OS 6, and can no longer use ICAL it got so messed up ; I have OS X 10.6.8.   I've gotten no messages about downloaded

  • Not able to view blog entry on website...redirected to page not found.

    Please help, I'm beyond frustrated! I've recently established a blog on my website. I currently use godaddy as a hosting site. We updated the site and moved all of the files over, however, when you click on the blog page from the website and then cli

  • SUS POs update with Goods Receipts and Invoices Information

    Hi SRM Experts, We have a SRM - SUS - R/3 landscape. 1. We create POs in SRM (extended classic scenario) and transfer them to R/3 (via RFC) and to SUS (via XI – Interfaces PurchaseOrderRequest_Out and PurchaseOrderChangeRequest_Out). 2. We post Goods