Skip to content

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

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

Other versions: 7.31 | 7.40 | 7.54

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, only cases for data content can be specified, 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.

No more than one case can be specified that does not contain a check condition.

Serialization and Deserialization

Serialization and deserialization follow these rules:

  • The first case tt:cond-var, whose explicitly specified condition check is met, is processed and the element tt:switch-var is left.
  • 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.
  • 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 creates either of the following:

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

    or

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

    or

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

    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.