ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Programmablaufsteuerung →  Iterationsausdrücke → 

REDUCE - Reduzierungsoperator

Syntax

... REDUCE type(
      [let_exp]
      INIT {x1 = rhs1}|{<x1> = wrexpr1}|{x1|<x1> TYPE dtype1}
           {x2 = rhs2}|{<x2> = wrexpr2}|{x2|<x2> TYPE dtype2}
           ...
      FOR for_exp1
      FOR for_exp2
      ...
      NEXT ...
           {x1 = rhs1}|{<x1> = wrexpr1}
           {x2 = rhs2}|{<x2> = wrexpr2}
           ... ) ...


Wirkung

Ein Konstruktorausdruck mit dem Reduzierungsoperator REDUCE erzeugt ein Resultat eines mit type angegebenen Datentyps aus einem oder mehreren Iterationsausdrücken. Für type kann angegeben werden:

Die Parameter und Argumente des Konstruktorausdrucks sind wie folgt anzugeben:

Es muss mindestens eine Variable oder ein Feldsymbol deklariert werden. Die hinter INIT deklarierten Variablen oder Feldsymbole sind nur hinter NEXT verwendbar. Insbesondere können sie nicht für die Deklaration anderer Variablen oder Feldsymbole verwendet werden.
Die Zuweisungen können in beliebiger Reihenfolge aufgeführt werden und die Auswertung erfolgt von links nach rechts. Jede hinter INTIT deklarierte nicht strukturierte Variable bzw. Feldsymbol darf genau einmal als linke Seite angegeben werden. Bei strukturierten Variablen bzw. Feldsymbolen darf entweder die gesamte Struktur oder jede Komponente einmal als linke Seite angegeben werden. An den Operandenpositionen der rechten Seiten können neben den Datenobjekten des Programms alle hinter dem letzten FOR-Ausdruck sichtbaren lokalen Variablen und Feldsymbole des Ausdrucks verwendet werden:
Alle nicht hinter INTIT deklarierten Hilfsfelder dürfen nur an Lesepositionen der rechten Seiten angegeben werden.

Nach Abschluss der gesamten Auswertung wird der Inhalt der ersten Variable x1 bzw. des Speicherbereichs, auf welchen das erste Feldsymbol <x1> zeigt, nach den Zuweisungsregeln dem temporären Resultat des Ausdrucks vom Typ type zugewiesen.

Hinweise

Beispiel

Berechnung der Summe der Zahlen von 1 bis 10 über REDUCE.

cl_demo_output=>display(
  REDUCE i( INIT s = 0
            FOR  i = 1 UNTIL i > 10
            NEXT s = s + i ) ).

Ausführbare Beispiele



Weiterlesen
REDUCE - Typinferenz für Aktualparameter
Example Reduzierungsoperator, Typinferenz