Start of Content Area

Function documentation collapseContexts Locate the document in its SAP Library structure

Use

Using collapseContexts() puts the first values of all contexts into a context. Empty contexts are replaced with an empty string:

This graphic is explained in the accompanying text

This can be useful if an upper-level node is to be created each time a lower-level node exists, for example. The function is useful in combination with the SplitByValue function.

Example

In the following example, a separate upper-level element <destSub> is to be created in the target structure for each occurrence of element <srcItem>:

Source Structure (Left) and Target Structure (Right)

Field Name

minOccurs

maxOccurs

Field Name

minOccurs

maxOccurs

srcRoot

1

1

destRoot

1

1

  srcSub

0

unbounded

  destSub

0

unbounded

    srcItem

0

unbounded

    destItem

0

unbounded

This is achieved by using a combination of the functions SplitByValue() and collapseContexts(). To create a queue for <destItem> in which a context change is performed after each value, use removeContexts() and SplitByValue(). To create a queue with exactly as many context changes , but with empty values (the aim is to create the same number of upper-level tags without values), apply collapseContexts() to the same nesting of functions:

Message Mapping with collapseContexts() and SplitByValue()

Target Field Mapping

Value of SplitByValue()

/destRoot=/srcRoot

 

/destRoot/destSub=
  
collapseContexts(
    SplitByValue(
      removeContexts(/srcRoot/srcSub/SrcItem)))

Each Value

/destRoot/destSub/destItem=
  SplitByValue(
    removeContexts(/srcRoot/srcSub/SrcItem)))

Each Value

Example

Source Instance

Result

<?xml version="1.0"
  encoding="UTF-8"?>

 

<srcRoot>

  <srcSub>

    <srcItem>
        PID001
    </srcItem>
    <srcItem>
        PID002
    </srcItem>

  </srcSub>
  <srcSub>

    <srcItem>
        PID003
    </srcItem>
    <srcItem>
        PID004
    </srcItem>
    <srcItem>
        PID005
    </srcItem>

  </srcSub>
  <srcSub>

    <srcItem>
        PID006
    </srcItem>
    <srcItem>
        PID007
    </srcItem>

  </srcSub>

</srcRoot>

<?xml version="1.0" encoding="UTF-8"?>

 

<ns0:destRoot
 xmlns:ns0="workshopDemo">

  <destSub>

    <destItem>
        PID001
    </destItem>

  </destSub>

  <destSub>

    <destItem>
        PID002
    </destItem>

  </destSub>

  <destSub>

    <destItem>
        PID003
    </destItem>

  </destSub>

  <destSub>

    <destItem>
        PID004
    </destItem>

  </destSub>

  <destSub>

    <destItem>
        PID005
    </destItem>

  </destSub>

  <destSub>

    <destItem>
        PID006
    </destItem>

  </destSub>

  <destSub>

    <destItem>
        PID007
    </destItem>

  </destSub>

 

</ns0:destRoot>

 

 

 

 

 

End of Content Area