Ansicht
Dokumentation

ABENFOR_CONDITIONAL - FOR CONDITIONAL

ABENFOR_CONDITIONAL - FOR CONDITIONAL

CPI1466 during Backup   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

FOR, bedingte Iteration

... FOR var = rhs $[THEN expr$] UNTIL$|WHILE log_exp $[let_exp$] ...

Wirkung

Diese Syntaxform eines Iterationsausdrucks führt eine bedingte Iteration aus.

  • Bei Verwendung in einem Konstruktorausdruck mit dem Reduzierungsoperator REDUCE wird in den Iterationsschritten das Ergebnis der Reduzierung erzeugt.
  • Bei Verwendung in einem Konstruktorausdruck mit dem Instanziierungsoperator NEW oder mit dem Wertoperator VALUE für interne Tabellen werden in den Iterationsschritten neue Tabellenzeilen erzeugt und in das tabellarische Ergebnis eingefügt.

Die Parameter und Argumente des Iterationsausdrucks sind wie folgt anzugeben:

  • Als erstes muss eine lokale Hilfsvariable var als Iterationsvariable deklariert und ihr mit = ein Startwert rhs zugewiesen werden. Bezüglich Namensraum und Sichtbarkeit gilt für var das Gleiche gilt wie für die Hilfsfelder, die in einem LET-Ausdruck deklariert werden. Die Syntax der Deklaration ist genauso wie in einem LET-Ausdruck und sie folgt den dortigen Regeln.
  • Die nächste Position hängt vom Datentyp der Iterationsvariable var ab:
  • Falls die Iterationsvariable var keinen numerischen Datentyp hat und nicht vom Typ d oder t ist, muss hinter THEN ein Ausdruck expr angegeben werden, dessen Ergebnis in den Datentyp von var konvertibel ist. Der Ausdruck wird für jede Iteration berechnet und sein Ergebnis der Iterationsvariable var zugewiesen. Es handelt sich um eine allgemeine Ausdrucksposition.

  • Falls die Iterationsvariable var einen numerischen Datentyp hat oder vom Typ d oder t ist, ist THEN expr optional. Falls THEN expr nicht explizit angegeben ist, wird implizit THEN var + 1 ergänzt bzw. der Wert der Iterationsvariable bei jeder Iteration um 1 erhöht.

  • Danach muss hinter UNTIL oder WHILE eine Abbruchbedingung log_exp angegeben werden. Bei log_exp handelt es sich um einen beliebigen logischen Ausdruck, dessen Operanden alle an dieser Stelle sichtbaren Datenobjekte und dort möglichen Aufrufe sein können.
  • Wenn die Abbruchbedingung hinter UNTIL angegeben ist, wird der logische Ausdruck log_exp nach jedem Iterationsschritt ausgewertet. Wenn das Ergebnis des logischen Ausdrucks wahr ist, wird die Iteration beendet. Es wird mindestens ein Iterationsschritt ausgeführt.

  • Wenn die Abbruchbedingung hinter WHILE angegeben ist, wird der logische Ausdruck log_exp vor jedem Iterationsschritt ausgewertet. Wenn das Ergebnis des logischen Ausdrucks falsch ist, wird die Iteration beendet. Wenn das Ergebnis des logischen Ausdrucks bereits vor dem ersten Iterationsschritt falsch ist, wird kein Iterationsschritt ausgeführt.

  • Optional kann abschließend ein LET-Ausdruck let_exp zur Definition lokaler Hilfsfelder aufgeführt werden. Die Hilfsfelder werden in jedem Iterationsschritt versorgt und können zur Konstruktion des Ergebnisses verwendet werden.

Die in dem FOR-Ausdruck deklarierten Variablen sind dort lokal. Beim Festlegen ihrer Werte können die lokalen Daten aller äußeren FOR-Ausdrücke verwendet werden. Die Iterationsvariable und eventuelle Hilfsvariablen können hinter dem FOR-Ausdruck entweder in weiteren Teilausdrücken oder zur Konstruktion des Resultats verwendet werden

Das Systemfeld sy-index wird von einem FOR-Ausdruck nicht gesetzt.

Hinweise

  • In aller Regel sind der Ausdruck expr hinter THEN und die Abbruchbedingung log_exp hinter UNTIL oder WHILE direkt von der Iterationsvariable var abhängig, dies ist aber keine Voraussetzung. Der Wert der Iterationsvariablen oder die Abbruchbedingung kann auch anders bestimmt werden. Beispielsweise können Zustandsänderungen über Methodenaufrufe abgefragt werden.
  • In der Regel ist eine Abbruchbedingung hinter UNTIL einer Abbruchbedingung hinter WHILE in allen Fällen vorzuziehen, in denen die Abbruchbedingung nicht bereits vor dem ersten Iterationsschritt überprüft werden muss.
  • Iterationsausdrücke für bedingte Iterationen können in vielen Fällen DO- und WHILE-Schleifen ersetzen, welche Werte und interne Tabellen konstruieren.
  • In einem Konstruktorausdruck können mehrere direkt aufeinanderfolgende FOR-Ausdrücke unterschiedlicher Varianten inklusive der Tabelleniterationen angegeben werden, die dann wie geschachtelte Schleifen wirken.
  • Anders als in einem LET-Ausdruck kann an Stelle der Iterationsvariable var kein lokales Feldsymbol deklariert werden.

Das Beispiel erzeugt einen String aus den Ziffern 0 bis 9.

Das Beispiel erzeugt einen String aus den Ziffern 0 bis 9.

Beispiele zu Iterationsausdrücken






TXBHW - Original Tax Base Amount in Local Currency   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7935 Date: 20240523 Time: 181414     sap01-206 ( 118 ms )