Ansicht
Dokumentation

ABENST_TT_EXTENSIBLE - ST TT EXTENSIBLE

ABENST_TT_EXTENSIBLE - ST TT EXTENSIBLE

CPI1466 during Backup   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- tt:extensible, Erweiterbarkeit literaler XML-Elemente

... tt:extensible="on"$|"deep-static"$|"deep-dynamic"$|"off"$|"deep-off"  ...

Wirkung

Bei der Deserialisierung führen XML-Elemente im Eingabestrom, die im ST-Programm nicht angegeben sind, normalerweise zu einem Fehler. Wenn das verarbeitete XML-Format erweiterbar sein soll, können nicht explizit angegebene Elemente durch die Angabe des optionalen Attributs tt:extensible ohne weitere Verarbeitung überlesen werden. Das Attribut kann folgende Werte annehmen:

  • Der Wert "on" drückt aus, dass das aktuelle Element direkte Unterelemente haben darf, die nicht explizit angegeben sind. Dies ist die Standardeinstellung.
  • Die Werte "deep-static" und "deep-dynamic" drücken aus, dass das aktuelle Element und seine Unterelemente erweiterbar sind. Mit dem Wert "off" wird die Erweiterbarkeit für das aktuelle Element aber nicht für seine Unterelemente deaktiviert; d.h. es ist selbst nicht um direkte Unterelemente erweiterbar, jedoch seine (angegebenen) Unterelemente sind es wieder.
  • Mit dem Wert "deep-off" wird die Erweiterbarkeit für das aktuelle Element und seine Unterelemente abgeschaltet. Diese Einstellungen können in einzelnen Unterelementen lokal überschrieben werden.

Die Werte "deep-static" und "deep-dynamic" unterscheiden sich in ihrem Gültigkeitsbereich:

  • "deep-static" wirkt nur innerhalb des Programmstücks, in dem es gesetzt ist.

Die mit "deep-static" und "deep-dynamic" eingestellte tiefe Erweiterbarkeit wirkt auch in Fallunterscheidungen mit tt:switch und Gruppierungen mit tt:group, indem unerwartete (nicht durch einen Fall abgedeckte) Elemente übersprungen werden.

Beispiel

Dieses Beispiel zeigt, dass Erweiterbarkeit im Zusammenspiel mit optionalen Elementen (z.B. Elemente, die nur beim Eintreten einer Bedingung deserialisiert werden) problematisch ist, da die Erweiterbarkeit im allgemeinen dazu führt, dass solche optionalen Elemente nicht gefunden werden. Beispielsweise würde das folgende Programmstück

r tt:extensible="on">
  tt:cond> a tt:value-ref="A"/> /tt:cond>
  b tt:value-ref="B"/>
/r>

mit dem Eingabestrom

rx/>a1/a>b2/b></r>

nicht zur Deserialisierung A=1 führen, da das unerwartete Element x die Bedingung mit a negativ entscheidet. Sowohl x als auch a werden als "Erweiterungselemente" überlesen, und erst das nicht-optionale Element b wird als B=2 deserialisiert. Unter Verwendung von tt:group kann das Problem gelöst werden, allerdings wird damit auch die Reihenfolge von a und b aufgelöst:

r tt:extensible="on">
  tt:group>
    tt:cond frq="?"> a tt:value-ref="A"/> /tt:cond>
    tt:cond>         b tt:value-ref="B"/> /tt:cond>
  /tt:group>
/r>






PERFORM Short Reference   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 5747 Date: 20240523 Time: 094135     sap01-206 ( 79 ms )