Start of Content Area

Function documentation collapseContexts  Locate the document in its SAP Library structure

Use

collapseContexts()copies the first value from all contexts to one 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 function SplitByValue().

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