Die Anweisung tt:switch-var erlaubt Fallunterscheidungen, bei denen im Unterschied zu tt:switch, keine Fälle für den Datenstrom sondern nur für Dateninhalte angegeben werden können:
<tt:switch-var>
case1
case2
...
</tt:switch-var>
In tt:switch kann eine Liste von Fällen case1, case2, ... aufgeführt werden. Syntaktisch wird jeder Fall case1, case2, ... durch eine Bedingung für Variablen, d.h. ein Unterelement tt:cond-var formuliert. Andere direkte Unterelemente sind in tt:switch-var nicht möglich.
Es darf maximal ein Fall angegeben werden, der keine Bedingung check enthält.
Serialisierung und Deserialisierung erfolgen nach folgenden Regeln:
...
1. Der erste Fall tt:cond-var, dessen explizit angegebene Bedingung erfüllt ist, wird prozessiert und das Element tt:switch-var verlassen.
2. Falls für keinen Fall mit explizit angegebener Bedingung die Voraussetzung erfüllt ist, wird, falls vorhanden, der Fall ohne Bedingung als Standard ausgeführt und das Element tt:switch-var verlassen.
3. Falls kein Fall ohne Bedingung vorhanden ist, wird das Element tt:switch-var verlassen, ohne dass ein Fall prozessiert wird.
Im Unterschied zur allgemeinen Fallunterscheidung mit tt:switch spielt der Inhalt der Fälle keine Rolle.
Die folgende Transformation erweitert das Beispiel aus Bedingungen für Variablen.
<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>
Je nach Wert des an ROOT angebundenen ABAP-Datenobjekts, wird bei der Serialisierung
<X val="small">...</X>
oder
<X val="medium">...</X>
oder
<X val="big">...</X>
erzeugt.
Die Position des Elements tt:cond-var ohne explizite Bedingung innerhalb von tt:switch-var ist irrelevant. Die Reihenfolge der Elemente tt:cond-var mit expliziten Bedingungen ist dagegen relevant.