ABAP Keyword Documentation →  ABAP − Reference →  Data Interfaces and Communication Interfaces →  ABAP and XML →  Transformations for XML →  Simple Transformations →  ST - Serialization and Deserialization →  ST - Flow Control →  ST - Flow Control with Variables → 

ST - tt:switch-var, Case Distinction for Variables

Syntax

<tt:switch-var>
  <tt:[s-|d-]cond-var ...
  <tt:[s-|d-]cond-var ...
  ...
</tt:switch-var>

Effect

The statement tt:switch-var allows case distinctions in which, unlike tt:switch, you can only specify cases for data content, not for data flow. In tt:switch, a list of cases can be shown where each case is formulated syntactically by a condition for variables, a tt:cond-var subelement. Other direct subelements are not possible in tt:switch-var.

You can specify no more than one case that does not contain a check condition.

Serialization and Deserialization

Serialization and deserialization follow these rules:

  1. The first case tt:cond-var, whose explicitly specified condition check is met, is processed and the element tt:switch-var is left.
  2. If no condition is met for any case with explicitly specified conditions, the case without condition is executed by default (if it exists) and the element tt:switch-var is left.
  3. If no case without condition exists, the element tt:switch-var is left without any case being processed.

Note

Unlike the general case distinction with tt:switch, the content of the cases is irrelevant.

Example

The following transformation extends the example from Conditions for Variables.

<tt:transform
  xmlns:tt="http://www.sap.com/transformation-templates">
  <tt:root name="ROOT"/>
  <tt:template>
    <tt:apply name="SUB">
      <tt:with-parameter name="PARA" ref="ROOT"/>
    </tt:apply>
  </tt:template>
  <tt:template name="SUB">
    <tt:context>
      <tt:parameter name="PARA"/>
    </tt:context>
    <tt:switch-var>
      <tt:cond-var check="PARA<50">
        <X val="small">...</X>
      </tt:cond-var>
      <tt:cond-var check="PARA<100">
        <X val="medium">...</X>
      </tt:cond-var>
      <tt:cond-var>
        <X val="big">...</X>
      </tt:cond-var>
    </tt:switch-var>
  </tt:template>
</tt:transform>

Depending on the value of the ABAP data object bound to ROOT, the serialization generates either of the following:

<X val="small">...</X>

or

<X val="medium">...</X>

or

<X val="big">...</X>

is created. The position of the element tt:cond-var without explicit condition within tt:switch-var is irrelevant. However, the order of the elements tt:cond-var with explicit conditions is relevant.