ABAP Keyword Documentation → ABAP − Reference → Declarations → Inline Declarations
DATA - Inline Declaration
Other versions:
7.31 | 7.40 | 7.54
Syntax
... DATA(var) ...
Effect
A declaration expression with the declaration operator DATA
declares a
variable var
used as an operand in the current
writing position.
The declared variable is visible statically in the program from the location DATA(var)
and is valid in the current
context. The declaration is made when the program is compiled, regardless of whether the statement is actually executed.
The declaration operator DATA
can be specified in every compatible
declaration position. The date type of the variable is determined by the
operand type. It must be possible to derive this type statically in full.
A variable var
declared inline cannot be used in a reading position of the same statement.
If a data object called data
already exists in the current context, DATA(var)
is interpreted as a
substring access and not as an inline declaration.
A syntax warning indicates this. DATA(var)
is interpreted as an inline declaration only if there is no data object called data
.
Programming Guideline
Only use inline declarations locally.
Notes
- A valid statement with an inline declaration of a variable can generally be interpreted as a short form for a declaration statement used as a direct prefix.
DATA var TYPE ...
... var ...
- Just like the statement
DATA
, an inline declaration does not open a local context for the current statement block. An inline declaration for a variable can only be made once within a context and the variable cannot yet be declared there usingDATA
.
- An inline declaration cannot occur on the right-hand side of an assignment or within an expression.
- The operand position and the types of other operands can be included in the static derivation of the operand type. If the type of a different operand cannot be identified statically (perhaps because it is specified as a generically typed field symbol), either a suitable standard type is used or no inline declaration is possible.
- If the operand type is defined by reference to a data type in ABAP Dictionary, it is used together with its semantic attributes, such as field help, input help, or conversion routines.
- If more than one equally valid operand type is possible in the same declaration position, the recommended preferred data type is generally used.
Example
Inline declaration of an internal table as a target field of an assignment and inline declaration of an appropriate work area in a LOOP
.
TYPES t_itab TYPE TABLE OF i
WITH NON-UNIQUE KEY table_line.
DATA(itab) = VALUE t_itab( ( 1 ) ( 2 ) ( 3 ) ).
LOOP AT itab INTO DATA(wa).
...
ENDLOOP.
Example
Inline declaration of an internal table as a target field of a SELECT statement and inline declaration of a variable for the table transformed to HTML. The data type of the variable is determined by the return value of the method.
SELECT *
FROM scarr
INTO TABLE @DATA(itab).
DATA(html) = cl_demo_output=>get( itab ).
Example
If a data object called data
does not exist in the current context, the first statement is an inline declaration and the second statement executes a substring access.
DATA(data) = '1'.
DATA(data) = '2'.