ABAP neues VALUE Schlüsselwort als Wertoperator

In ABAP 740 gibt es eine weitere Bedeutung des Schlüsselwortes VALUE. Dieses kann jetzt als Wertoperator (Konstruktor) dazu verwendet werden, neue Datenelemente eines bestimmten Types zu erzeugen. Unter anderem können damit interne Tabellen mit Datensätzen initialisiert werden.

Anstatt die Datensätze beim Initialisieren mit mehreren APPEND Anweisungen anzulegen

kann man es auch so machen

Besonderheit

In der Literatur (unter anderem auch in der ABAP Schlüsselworthilfe) wird die Verwendung oft so gezeigt

Hier wird neben dem Schlüsselwort VALUE noch das Schlüsselwort DATA() verwendet. Dies führt dazu, dass eine völlig neue interne Tabelle definiert und mit Daten versorgt wird. Eine bestehende (z.B. global definierte) wird dabei verdeckt. Im Beispiel weiter unten wird der Unterschied dargestellt. Die dort verwendete Klasse hat ein globales Attribut, welches mit Werten versorgt werden soll. Die Methode FILL_ITAB_WRONG füllt diese aber nicht. Statt dessen wird eine neue, gleichnamige Tabelle definiert, die nur innerhalb der Methode und deren Call-Stack bekannt ist. Das globale Attribut wird also verdeckt.

Damit eine interne Tabelle mit Datensätzen initialisiert werden kann, muss ein Schlüssel definiert sein.
Folgende Definition erzeugt den Syntaxfelher "Ein Wert des generischen Typs 'TYT_MYDATA' kann nicht konstruiert werden."

Während diese Definitionen korrekt sind

Einschränkungen

Das Schlüsselwort kann nur dazu verwendet werden, eine Tabelle zu initialisieren. Es können keine Datensätze an eine bestehende Tabelle angefügt werden. Der Operator erzeugt stets ein neues Objekt des angegebenen Datentyps, belegt die Werte und liefert das fertige Objekt zurück. Durch die Wertzuweisung an die Variable werden die bisherigen Daten überschrieben.

Anwendungsfall

Das Schlüsselwort kann sehr gut dazu verwendet werden, eine interne Tabelle mit bestimmten Werten vorzubelegen. Beispielsweise kann damit eine Liste für ein DropDown Feld mit bestimmten Werken vorbelegt werden. Es lassen sich damit auch sehr gut Testfälle für einen ABAP Unit Test erstellen.

Beispiel

Der Report zeigt die Verwendung des VALUE Schlüsselwortes als Wertoperator.

Schlüsselwort VALUE als Wertoperator
Schlüsselwort VALUE als Wertoperator