Um den Wert eines beliebigen Datenobjekts <f1> einer Variablen <f2> zuzuweisen, verwendet man die Anweisung:
MOVE <f1> TO <f2>.
oder die völlig gleichbedeutende Anweisung
<f2> = <f1>.
Der Inhalt von <f1> bleibt unverändert. <f1> muß 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.Bezüglich der Datentypen von <f1> und <f2> sind folgende drei Fälle zu unterscheiden:
Quellfelder und Zielfelder können also verschiedene Datentypen haben. Im Gegensatz zu anderen Programmiersprachen, wo die Zuweisung zwischen verschiedenen Datentypen oft auf eine geringe Anzahl möglicher Kombinationen beschränkt ist, bietet ABAP eine Vielzahl automatischer Typkonvertierungen.
Beispielsweise kann der Inhalt eines Quellfeldes mit einem elementaren Datentyp einem Zielfeld mit einem beliebigen anderen elementaren Datentyp zugewiesen werden, mit der einzigen Ausnahme, daß keine Zuweisungen zwischen Feldern der eingebauten ABAP-Typen D und T möglich sind. ABAP unterstützt sogar die Zuweisung zwischen Strukturen und elementaren Datenobjekten und zwischen unterschiedlichen Strukturen.
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
Um Werte zwischen Strukturen komponentenweise zuzuweisen, verwendet man die Anweisung
MOVE-CORRESPONDING <struct1> TO <struct2>.
Diese Anweisung weist den Inhalt von Komponenten der Struktur <struct1> den namensgleichen Komponenten der Struktut <struct2> zu.
Das System löst obige Anweisung in jeweils eine MOVE-Anweisung pro Namenspaar auf:
MOVE STRUCT1-<ci> TO STRUCT2-<c i>.
Alle erforderlichen Typkonvertierungen werden einzeln vorgenommen. Dieses Verfahren unterscheidet sich von der Wertzuweisung für komplette Strukturen mit der MOVE-Anweisung. In diesem Fall gelten die
Konvertierungsregeln für Strukturen.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'.