Ansicht
Dokumentation
ABAPADD_SEQUENCES - ADD SEQUENCES
General Material Data CL_GUI_FRONTEND_SERVICES - Frontend ServicesDiese Dokumentation steht unter dem Copyright der SAP AG.
ADD, THEN, UNTIL
ADD ${ ${ dobj1 THEN dobj2 UNTIL dobj
${ ${TO result$} $| ${GIVING result $[ACCORDING TO sel$]$} $} $}
$| ${ dobj FROM pos1 TO pos GIVING result $} $}
$[RANGE range$].
Wirkung
Diese in Klassen verbotenen Varianten der Anweisung ADD addieren Folgen von Datenobjekten, die in gleichen Abständen voneinander im Speicher abgelegt sind.
- In der Variante mit THEN und UNTIL wird die Folge durch den Abstand zwischen den Datenobjekten dobj1 und dobj2 definiert. An allen Speicherpositionen, die ein Vielfaches dieses Abstands von dobj1 entfernt sind - bis einschließlich der Position dobj -, müssen numerische Datenobjekte mit den gleichen technischen Typeigenschaften abgelegt sein. Der Inhalt aller dieser Datenobjekte wird addiert. Bei der Variante mit TO wird die Summe zum Inhalt des Datenobjekts result addiert und das Ergebnis diesem zugewiesen. Bei der Variante mit GIVING wird die Summe dem Datenobjekt result direkt zugewiesen. Das Datenobjekt result muss eine numerische Variable sein. Mit dem Zusatz ACCORDING wird ein Datenobjekt der Folge nur dann zur Summe addiert, wenn seine Position in der Folge die Bedingung in der Ranges-Tabelle sel erfüllt. Für die Komponenten low und high der Ranges-Tabelle wird der Datentyp i erwartet.
- In der Variante mit TO und FROM wird die Folge durch im Speicher direkt aufeinander folgende Datenobjekte gebildet, deren erstes das Datenobjekt dobj ist und die alle den gleichen numerischen Datentyp haben müssen. Für pos1 und pos werden Datenobjekte vom Typ i erwartet, deren Werte eine Teilmenge der Folge definieren. Die Inhalte der Datenobjekte der Teilfolge werden addiert und dem Datenobjekt result zugewiesen. Das Datenobjekt result muss eine numerische Variable sein. Wenn pos1 oder pos negative Werte enthalten oder pos1 größer als pos ist, wird die Anweisung nicht ausgeführt und result bleibt unverändert.
In beiden Varianten kommt es zu einer unbehandelbaren Ausnahme, wenn auf Adressen zugegriffen wird, an denen keine passenden Datenobjekte abgelegt sind.
Alle Datenobjekte der Folge müssen innerhalb einer Struktur liegen. Wenn dies bei der Syntaxprüfung nicht statisch erkennbar ist, muss eine Struktur range mit dem Zusatz RANGE angegeben werden. Wenn die Datenobjekte der Folge bei Ausführung der Anweisung nicht Teil der angegebenen Struktur sind, kommt es zu einer unbehandelbaren Ausnahme.
Der Rechentyp der Addition wird wie üblich aus den beteiligten Operanden bestimmt.
Hinweis
Die Funktion dieser Varianten der Anweisung ADD hängt vom internen Aufbau des Arbeitsspeichers ab. Solche speichernahen Operationen sollen vermieden werden. Sie sind in Klassen verboten und können bei Bedarf durch die Anweisung ASSIGN mit dem Zusatz INCREMENT ersetzt werden.
Beispiel
Die auf dem Selektionsbild
eingegebenen Komponenten der Struktur numbers werden addiert und die Summe wird der Variablen sum zugewiesen.
Ausnahmen
Behandelbare Ausnahmen
- Ursache: Überlauf bei Addition, Typ I bei den Zusätzen UNTIL oder FROM ... TO
Laufzeitfehler: ADDF_INT_OVERFLOW
- Ursache: Überlauf bei arithmetischer Operation (Typ p)
Laufzeitfehler: BCD_OVERFLOW
- Ursache: Ganzzahl-Überlauf bei Addition
Laufzeitfehler: COMPUTE_INT_PLUS_OVERFLOW
- Ursache: Überlauf bei arithmetischer Operation (Typ p, mit spezifizierter Länge)
Laufzeitfehler: BCD_FIELD_OVERFLOW
Unbehandelbare Ausnahmen
- Ursache: Zugriff auf Daten außerhalb des Bereichs, der durch den RANGE-Zusatz angegeben ist
Laufzeitfehler: ADD_FIELDS_NOT_IN_RANGE
- Ursache: Unzulässiger Zugriff auf Tabellen, Strings,
Feld- oder Objektreferenzen innerhalb des Bereichs, der durch den RANGE-Zusatz angegeben ist.
Laufzeitfehler: ADD_FIELDS_ILLEGAL_ACCESS
- Ursache: p-Feld enthält kein korrektes BCD-Format
Laufzeitfehler: BCD_BADDATA
CL_GUI_FRONTEND_SERVICES - Frontend Services PERFORM Short Reference
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 6896 Date: 20240424 Time: 134331 sap01-206 ( 97 ms )