ABAPADD_SEQUENCES - ADD SEQUENCES

General Material Data   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.

ADD - THEN, UNTIL

Kurzreferenz



Obsolete Syntax

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 verbotene Varianten der Anweisung ADDaddieren 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 Datenobjektendobj1 und dobj2 definiert. An allen Speicherpositionen, die ein Vielfaches dieses Abstands von dobj1 entfernt sind - bis einschließlich der Position dobj -, müssennumerische Datenobjekte mit den gleichentechnischenTypeigenschaften abgelegt sein. Der Inhalt aller dieser Datenobjekte wird addiert. Bei der Variantemit TO wird die Summe zum Inhalt des Datenobjekts result addiert und das Ergebnis diesemzugewiesen. 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 derSelektionstabellesel erfüllt. Für die Komponenten low und high der Selektionstabelle wird der Datentyp i erwartet.
  • In der Variante mit TO und FROM wird die Folge durch im Speicher direkt aufeinander folgendeDatenobjekte gebildet, deren erstes das Datenobjekt dobj ist und die alle den gleichen numerischenDatentyp haben müssen. Für pos1 und pos werden Datenobjekte vom Typ ierwartet, deren Werte eine Teilmenge der Folge definieren. Die Inhalte der Datenobjekte der Teilfolgewerden addiert und dem Datenobjekt result zugewiesen. Das Datenobjekt result muss einenumerische Variable sein. Wenn pos1 oder pos negative Werte enthalten oder pos1größ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.

In Unicode-Programmenmüssen alle Datenobjekte der Folge innerhalb einer Struktur liegen. Wenn dies bei der Syntaxprüfungnicht statisch erkennbar ist, muss eine Struktur range mit dem Zusatz RANGE angegebenwerden. Wenn die Datenobjekte der Folge bei Ausführung der Anweisung nicht Teil der angegebenen Struktur sind, kommt es zu einer unbehandelbaren Ausnahme.

In Nicht-Unicode-Programmen kann sich die Folge der Datenobjekte über den gesamtenDatenbereichdes aktuellen Programms ausdehnen. Nur wenn das erste Datenobjekt der Folge als Feldsymbol angegebenist, bestimmen die über den Zusatz range_specder Anweisung ASSIGN definierten Bereichsgrenzen zugleich den erlaubten Bereich der Folge.

Hinweis

Die Funktion dieser Varianten der Anweisung ADD hängt vom internen Aufbau des Arbeitsspeichersab. Sie sind in Klassen verboten und können bei Bedarf durch die Anweisung ASSIGNmit 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.

DATA: BEGIN OF numbers,
        one   TYPE p LENGTH 8 DECIMALS 0 VALUE 10,
        two   TYPE p LENGTH 8 DECIMALS 0 VALUE 20,
        three TYPE p LENGTH 8 DECIMALS 0 VALUE 30,
        four  TYPE p LENGTH 8 DECIMALS 0 VALUE 40,
        five  TYPE p LENGTH 8 DECIMALS 0 VALUE 50,
      END OF numbers,
      sum     TYPE i.

SELECT-OPTIONS position FOR sum.

ADD numbers-one THEN numbers-two
                UNTIL numbers-five
                ACCORDING TO position
                GIVING sum.

Ausnahmen

Behandelbare Ausnahmen

CX_SY_ARITHMETIC_OVERFLOW

  • Ursache: Überlauf bei Addition, Typ I bei den Zusätzen UNTIL oder FROM ... TO
    Laufzeitfehler: ADDF_INT_OVERFLOW (abfangbar)
  • Ursache: Überlauf bei arithmetischer Operation (Typ p)
    Laufzeitfehler: BCD_OVERFLOW (abfangbar)
  • Ursache: Ganzzahl-Überlauf bei Addition
    Laufzeitfehler: COMPUTE_INT_PLUS_OVERFLOW (abfangbar)

CX_SY_CONVERSION_OVERFLOW

  • Ursache: Überlauf bei arithmetischer Operation (Typ p, mit spezifizierter Länge)
    Laufzeitfehler: BCD_FIELD_OVERFLOW (abfangbar)


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









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


Length: 8835 Date: 20120526 Time: 231351     triton ( 301 ms )