SAP NetWeaver AS ABAP Release 750, ©Copyright 2016 SAP AG. Alle Rechte vorbehalten.
ABAP - Schlüsselwortdokumentation →
ABAP - Referenz →
Objekte und Werte erzeugen →
VALUE - Wertoperator
Syntax
... VALUE type( ... ) ...
Wirkung
Ein Konstruktorausdruck mit dem Wertoperator
VALUE erzeugt ein Resultat eines mit type angegebenen Datentyps. Für type kann angegeben werden:
- Ein nicht-generischer Datentyp dtype.
- Das Zeichen # als Symbol für den
Operandentyp. Diese Angabe
ist nur möglich, wenn der an einer Operandenposition benötigte Datentyp eindeutig und vollständig erkennbar ist. Ausnahmen von dieser Regel sind:
- Bei der Übergabe eines Initialwerts VALUE #(
) an einen generisch typisierten Formalparameter wird der Typ aus dem generischen Typ abgeleitet.
Der Operator
- erzeugt Initialwerte für beliebige nicht-generische Datentypen
- konstruiert den Inhalt von
- steuert die Art des Resultats von Tabellenausdrücken
und ermöglicht dabei die Angabe eines Standardwerts für nicht gefundene Zeilen
Der Inhalt des Resultats wird durch die in den Klammern angegebenen Parameter bestimmt. Die Syntax der
Parameterübergabe hängt bei der Konstruktion eines Wertes vom verwendeten Typ ab, wobei es für jeden möglichen Typ entsprechend spezialisierte Arten der Parameterübergabe gibt.
- Parameterübergabe bei der Konstruktion von Werten:
- Wenn als Parameter ein einzelner Tabellenausdruck angegeben ist, konstruiert VALUE keinen Wert sondern steuert die Art dessen
Resultats.
Bei einer Zuweisung eines Konstruktorausdrucks mit
VALUE an ein Datenobjekt wird direkt mit diesem gearbeitet. Es wird vollständig
mit einem Initial- oder Startwert überschrieben, bevor es die in den Klammern angegebenen Werte zugewiesen bekommt.
Hinweise
- Elementare Datentypen sowie Referenztypen können bei VALUE zur
Konstruktion von Werten außer bei der Erzeugung eines Initialwerts nicht explizit angegeben werden.
Anders als beim Instanzierungsoperator
NEW ist das entsprechende Ergebnis genauso durch direkte Zuweisungen erreichbar. Aus diesem
Grund ist auch die bei NEW mögliche Angabe von unbenannten Argumenten
als Einzelwerte nicht notwendig und deshalb nicht erlaubt. Davon nicht betroffen ist die Verwendung von VALUE zur Steuerung von
Tabellenausdrücken, wofür beliebige passende Datentypen angegeben werden können.
- Da mit den Resultaten von VALUE zur Konstruktion von Werten außer
bei der Erzeugung eines Initialwerts nicht arithmetisch gerechnet werden kann, können solche Konstruktorausdrücke nicht direkt an den Operandenpositionen
arithmetischer Ausdrücke
aufgeführt werden. Davon nicht betroffen sind Konstruktorausdrücke mit VALUE zur Steuerung von
Tabellenausdrücken, mit denen bei passenden Ergebnissen auch gerechnet werden kann.
- Die Lücke, dass mit VALUE keine elementaren Datenobjekte an Operandenpositionen
konstruiert werden können, wird durch den Konvertierungsoperator CONV geschlossen.
- Wenn ein Konstruktorausdruck mit VALUE nicht als Quelle einer Zuweisung
an ein Datenobjekt verwendet wird, erzeugt der Wertoperator VALUE ein neues
temporäres Datenobjekt, dessen Datentyp durch den angegebenen Typ und dessen Inhalt durch die
übergebenen Parameter bestimmt wird. Dieses Datenobjekt wird als Operand einer Anweisung verwendet
und nach Gebrauch wieder gelöscht. Das Löschen erfolgt bei Abschluss der aktuellen Anweisung bzw. bei der Auswertung eines relationalen Ausdrucks nach dem Feststellen des Wahrheitswerts.
- Bei einer Zuweisung an ein Datenobjekt wird kein temporäres Datenobjekt erzeugt, sondern
direkt mit der Zielvariable gearbeitet. Diese wird vor der Zuweisung der in den Klammern angegebenen
Werte initialisiert bzw. vollständig überschrieben. Ihr ursprünglicher Wert steht
aber noch in einem optionalen LET-Ausdruck
zur Verfügung. Hierin unterscheidet sich VALUE vom Instanzierungsoperator NEW.
Beispiel
Konstruktion der Werte einer inline deklarierten Struktur vom Typ T100.
DATA(wa) = VALUE t100( sprsl = 'E'
arbgb = 'DEMO'
msgnr = '111'
text = '...' ).
Weiterlesen
VALUE - Initialwert für alle Typen
VALUE - Strukturen
VALUE - interne Tabellen