Ansicht
Dokumentation

ABENCONSTRUCTOR_EXPRESSION_REDUCE - CONSTRUCTOR EXPRESSION REDUCE

ABENCONSTRUCTOR_EXPRESSION_REDUCE - CONSTRUCTOR EXPRESSION REDUCE

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

REDUCE, Reduzierungsoperator

... ... 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:

  • Ein nicht-generischer Datentyp dtype.
  • Wenn der an einer Operandenposition benötigte Datentyp eindeutig und vollständig erkennbar ist, wird dieser verwendet.

  • Wenn der Operandentyp nicht vollständig erkennbar ist, wird außer bei Übergabe des Konstruktorausdrucks an einen Aktualparameter mit generisch typisiertem Formalparameter der immer erkennbare Typ der ersten Deklaration hinter INIT verwendet.

  • Wenn der Konstruktorausdruck an einen Aktualparameter mit generisch typisierten Formalparameter übergeben wird, wird der Operandentyp nach speziellen Regeln abgeleitet.

Die Parameter und Argumente des Konstruktorausdrucks sind wie folgt anzugeben:

  • Als erstes kann ein optionaler LET-Ausdruck zur Definition lokaler Hilfsfelder angegeben werden, deren Wert innerhalb des Ausdrucks verwendet aber nicht mehr geändert werden kann.
  • Danach muss ein Zusatz INIT gefolgt von beliebig vielen Deklarationen angegeben werden. Die Deklarationen hinter INIT erzeugen lokale Variablen x1, x2, ... oder Feldsymbole x1>, <x2>, ..., für die bezüglich Namensraum und Sichtbarkeit das Gleiche gilt wie für die Hilfsfelder, die in einem LET-Ausdruck deklariert werden. Die Syntax der Deklaration ist entweder
  • genauso wie in einem LET-Ausdruck und sie folgt den dortigen Regeln

  • oder es können mit dem Zusatz TYPE initiale Variablen oder Feldsymbole des angegebenen Datentyps dtype angelegt werden.

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 erste Variable x1 bzw. des erste Feldsymbols x1> bestimmt das Ergebnis des Ausdrucks und der Datentyp muss in den Ergebnistyp type konvertierbar sein.

  • Alle weiteren hinter INIT deklarierten Variablen oder Feldsymbole sind optionale weitere Hilfsfelder, die anders als die hinter LET deklarierten auf der linken Seite von Zuweisungen hinter NEXT stehen können.

  • Danach muss mindestens ein Iterationsausdruck mit FOR angegeben werden. Es können jedoch auch mehrere Ausdrücke angegeben werden.
  • Bei der Verwendung bedingter Iterationen wird das Ergebnis in frei definierbaren Iterationsschritten erzeugt.

  • Bei der Verwendung von Tabelleniterationen werden Zeilen vorhandener interner Tabellen ausgewertet. In diesem Fall spricht man von Tabellenreduzierungen, da beliebige Werte aus den Zeilen vorhandener interner Tabellen konstruiert werden.

  • Danach müssen hinter NEXT Zuweisungen angegeben werden, die für jede Iteration des letzten FOR-Ausdrucks einmal ausgeführt werden. Für die Zuweisungen können entweder der Zuweisungsoperator = oder die Berechnungszuweisungsoperatoren +=, -=, *=, /= oder &&= angegeben werden und die Zuweisung wird entsprechend ausgeführt. Allen hinter INIT deklarierten Variablen und Feldsymbolen muss dabei ein Wert bzw. ein Speicherbereich zugewiesen werden. Bei strukturierten Variablen oder Feldsymbolen genügt eine Zuweisung an eine ihrer Komponenten.

  • An ein Feldsymbol kann nur das Ergebnis eines schreibbaren Ausdrucks wrexp zugewiesen werden. Dabei gilt das Gleiche wie für die Zuweisung schreibbarer Ausdrücke mit ASSIGN, d.h. es dürfen nur die dort aufgeführten Ausdrücke angegeben werden.

Die Zuweisungen können in beliebiger Reihenfolge aufgeführt werden und die Auswertung erfolgt von links nach rechts. Jede hinter INIT 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 hinter LET deklarierten Variablen und Feldsymbole

  • alle hinter INIT deklarierten Variablen und Feldsymbole

  • die durch die FOR-Ausdrücke versorgten wa1, wa2, ... bzw. fs1>, fs2>, .... Dadurch besteht Zugriff auf den Inhalt der Zeilen der internen Tabellen zur Konstruktion des Ergebnisses.

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

  • Die Bezeichnung des Operators REDUCE erklärt sich wie folgt:
  • Bei der Verwendung bedingter Iterationen werden in der Regel Mengen von Datenobjekten in ein einzelnes Datenobjekt reduziert.

  • Bei der Verwendung für mit Tabelleniterationen für Tabellenreduzierungen wird der Inhalt der beteiligten internen Tabellen in aller Regel in einen zusammenfassenden Wert reduziert. Der Ergebnistyp ist zwar beliebig und muss nicht weniger komplex als die beteiligten internen Tabellen sein, was aber nur in Ausnahmefällen ausgenutzt werden sollte. Für die Konstruktion von Tabellen aus Tabellen sind Tabellen-Comprehensions die bequemere Alternative.

  • Bei der Verwendung eines lokalen Feldsymbols xi> auf der linken Seite von Zuweisungen hinter NEXT ist zu beachten, dass es sich wie bei INIT und LET nicht um Zuweisungen an den vom Feldsymbol referenzierten Wert handelt, sondern dass das Feldsymbol wie mit der Anweisung ASSIGN gesetzt wird.
  • Anders als bei Tabellen-Comprehensions mit dem Wertoperator VALUE werden bei der Zuweisung eines REDUCE-Ausdrucks an eine Struktur oder eine interne Tabelle diese nicht vor der Verarbeitung der FOR-Ausdrücke vollständig überschrieben und können im gesamten Ausdruck direkt verwendet werden.
  • Wenn an der ersten Position hinter INIT eine Variable deklariert wird und auf der rechten Seite der VALUE-Operator mit dem Zeichen # angegeben ist, wird für dieses falls möglich der Ergebnistyp type des REDUCE-Ausdrucks übernommen.

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

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






RFUMSV00 - Advance Return for Tax on Sales/Purchases   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 13716 Date: 20240523 Time: 170936     sap01-206 ( 183 ms )