Show TOC Anfang des Inhaltsbereichs

Werte mit MOVE zuweisen  Dokument im Navigationsbaum lokalisieren

Um den Wert eines beliebigen Datenobjekts source einer Variablen destinationzuzuweisen, verwendet man die Anweisung:

MOVE source TO destination.

oder die völlig gleichbedeutende Anweisung

destination = source.

Der Inhalt von source bleibt unverändert. source muss also keine Variable, sondern kann z.B. auch ein Literal, ein Textsymbol oder eine Konstante sein. Dezimalstellen müssen unabhängig vom Benutzerstammsatz immer mit einem Punkt (.) angegeben werden.

Mehrfachzuweisungen

f4 = f3 = f2 = f1.

sind möglich. ABAP verarbeitet sie wie folgt von rechts nach links:

MOVE f1 TO f2.
MOVE f2 TO f3.
MOVE f3 TO f4.

In der MOVE-Anweisung (bzw. mit dem Zuweisungsoperator) können die Namen von Quell- und Zielfelder nicht dynamisch als Inhalte anderer Felder angegeben werden. Falls dies erforderlich ist, müssen Feldsymbole verwendet werden.

Quellfelder und Zielfelder können grundsätzlich verschiedene Datentypen haben. Das Ergebnis der Wertzuweisung hängt aber davon ab, ob diese Datentypen kompatibel sind oder ob eine Typkonvertierung durchgeführt werden muss. Falls keine Konvertierungsregel zwischen den beteiligten Datentypen existiert, ist keine Zuweisung möglich.

Beispiel

DATA: t(10)  TYPE c,
      number TYPE p DECIMALS 2,
      count  TYPE i.

t = 1111.
MOVE '5.75' TO number.
count = number.

Nach diesen Zuweisungen haben die Felder t, number und count die Werte '1111      ', 5,75 und 6. Bei der Zuweisung des Zahlenliterals 1111 an T wird die Zahl in ein Characterfeld der Länge 10 konvertiert. Bei der Zuweisung von number zu count wird die Dezimalzahl in eine ganze Zahl gerundet (Voraussetzung: das Programmattribut Festpunktarithmetik ist gesetzt).

Werte zwischen Komponenten von Strukturen zuweisen

Die Regeln für Wertzuweisungen zwischen Datenobjekten gelten genauso für Strukturen. Mit:

DATA: struct1 TYPE structure,
      struct2 TYPE structure.
struct1 = struct2.

lassen sich zwei gleichartige Strukturen problemlos einander zuweisen. Dabei wird die gesamte Quellstruktur als Einheit aufgefasst und in die Zielstruktur kopiert. Es kann dort wieder einzeln auf die Kom­ponenten zugegriffen werden. Sind die beteiligten Strukturen nicht kompatibel, müssen die Konvertierungsregeln für Strukturen beachtet werden.

Ein häufiger Anwendungsfall ist aber, dass nur einzelne Komponenten einer Struktur den Komponenten einer anderen Struktur zugewiesen werden sollen. Hierfür bietet ABAP die spezielle Anweisung:

MOVE-CORRESPONDING sourcestruct TO destinationstruct.

Diese Anweisung weist den Inhalt von Komponenten der Struktur sourcestruct den namensgleichen Komponenten der Struktur destinationstruct zu.

Das System löst obige Anweisung in jeweils eine MOVE-Anweisung pro Namenspaar auf:

MOVE sourcestruct-comp1 TO destinationstruct-comp1.

MOVE sourcestruct-comp2 TO destinationstruct-comp2.

...

Alle erforderlichen Typkonvertierungen werden einzeln vorgenommen.

Beispiel

DATA: BEGIN OF address,
        firstname(20) TYPE c VALUE 'Fred',
        surname(20) TYPE c VALUE 'Flintstone',
        initials(4) TYPE c VALUE 'FF',
        street(20) TYPE c VALUE 'Cave Avenue',
        number TYPE i VALUE '11',
        postcode(5) TYPE n VALUE '98765',
        city(20) TYPE c VALUE  'Bedrock',
      END OF address.

DATA: BEGIN OF name,
        surname(20) TYPE c,
        firstname(20) TYPE c,
        initials(4) TYPE c,
        title(10) TYPE c VALUE 'Mister',
      END OF name.

MOVE-CORRESPONDING address TO name.

In diesem Beispiel werden die Werte für name-surname, name-firstname und name-initials auf 'Flintstone','Fred' und 'FF' gesetzt. name-title behält jeweils den Wert 'Mister'.

Diese Grafik wird im zugehörigen Text erklärt

 

Ende des Inhaltsbereichs