ABAP Keyword Documentation → ABAP - Reference → Assignments → Setting References
ASSIGN
Other versions: 7.31 | 7.40 | 7.54
Syntax
ASSIGN mem_area TO <fs>
casting_spec range_spec.
Effect
This statement assigns the memory area specified using
mem_area to the field symbol <fs>
. You can assign a data object
or a memory area calculated from the address of a data object. After the assignment, the field symbol
refers to the assigned memory area and can be used in operand positions. When used in a statement, it behaves like a dereferenced data reference, meaning that the statement works with the content of the memory area.
The data type with which the assigned memory area is treated depends on the specifications in casting_spec
. You can either execute an explicit
casting or the field symbol takes on the data type of the data object specified in the assignment. In both cases, the data type used must
match the
typing of the field symbol.
A field symbol to which a memory area is assigned has this data type after the assignment and behaves like a data object of this type.
The assigned memory area mem_area
must be at least as long as the data type specified in casting_spec
and must have at least the same
alignment. If the data type determined in casting_spec
is
deep, the deep components with their type and position must appear in the assigned memory area exactly like this.
Using the specifications in range_spec
restricts the memory area that can be assigned to the field symbol.
System Fields
sy-subrc | Meaning |
---|---|
0 | Assignment successful. |
4 | Assignment not successful. |
If a dynamic assignment is not successful, the field symbol retains its previous state. If a static
assignment is not successful, no memory is assigned to the field symbol after the ASSIGN
statement and the assignment can be checked with the logical expression
<fs> IS ASSIGNED
. If an assignment would lead to illegal memory accesses,
an exception is raised in the case of both static and dynamic ASSIGN
statements.
Note
An obsolete form of the ASSIGN
statement is ASSIGN LOCAL COPY
.
Exceptions
Catchable Exceptions
CX_SY_ASSIGN_CAST_ILLEGAL_CAST
-
Cause: The type of the source field and the target type do not match exactly in offset and type in those components that are strings, tables, or references.
Runtime Error:ASSIGN_CASTING_ILLEGAL_CAST
CX_SY_ASSIGN_CAST_UNKNOWN_TYPE
-
Cause: A type specified dynamically after
CASTING
is unknown.
Runtime Error:ASSIGN_CASTING_UNKNOWN_TYPE
CX_SY_ASSIGN_OUT_OF_RANGE
-
Cause: The data object in addition
RANGE
does not contain the assigned data object.
Runtime Error:ASSIGN_FIELD_NOT_IN_RANGE
Non-Catchable Exceptions
-
Cause: The field symbol is structured and the assigned field is shorter than the structure.
Runtime Error:ASSIGN_BASE_TOO_SHORT
-
Cause: The alignment for field
f
is too short for the type of the field symbol.
Runtime Error:ASSIGN_BASE_WRONG_ALIGNMENT
-
Cause: You can specify only simple types for
TYPE
.
Runtime Error:ASSIGN_CAST_COMPLEX_TYPE
-
Cause: The source field is longer than 16 bytes and cannot be interpreted as a type
p
field.
Runtime Error:ASSIGN_CAST_P_TOO_LARGE
-
Cause: The alignment of field
f
is too short for the type specified inTYPE
.
Runtime Error:ASSIGN_CAST_WRONG_ALIGNMENT
-
Cause: The length of field
f
does not match the type specified inTYPE
.
Runtime Error:ASSIGN_CAST_WRONG_LENGTH
-
Cause: The type specified in
TYPE
is unknown.
Runtime Error:ASSIGN_CAST_WRONG_TYPE
-
Cause: A maximum of 14 columns is permitted.
Runtime Error:ASSIGN_DECIMALS_TOO_HIGH
-
Cause: Decimal places are allowed only for type
p
.
Runtime Error:ASSIGN_DECIMALS_WRONG_TYPE
-
Cause: A length of 0 was specified for field
f
.
Runtime Error:ASSIGN_LENGTH_0
-
Cause: A length less than 0 was specified for field
f
.
Runtime Error:ASSIGN_LENGTH_NEGATIVE
-
Cause: An offset less than 0 was specified for field
f
.
Runtime Error:ASSIGN_OFFSET_NEGATIVE
-
Cause: An offset or length was specified for field
f
and the data type of the assigning field does not allow partial access. (This is the case for data types I, F, and P.)
Runtime Error:ASSIGN_OFFSET_NOTALLOWED
-
Cause: The offset specified for field
f
exceeds the range of the ABAP variable.
Runtime Error:ASSIGN_OFFSET_TOOLARGE
-
Cause: In the area addressed in the offset and length specifications for
field
f
, deep components exist (data references, object references, strings, internal tables), which may not be overwritten.
Runtime Error:ASSIGN_OFF+LENGTH_ILLEGAL_CAST
-
Cause: Offset and length specified for field
f
exceed the range of the ABAP variable.
Runtime Error:ASSIGN_OFFSET+LENGTH_TOOLARGE
-
Cause: Field
f
is not a data reference. However, a data reference was expected.
Runtime Error:ASSIGN_REFERENCE_EXPECTED
-
Cause: The type of the source field and the target type do not match exactly in offset and type in those components that are strings, tables, or references.
Runtime Error:ASSIGN_STRUCTURE_ILLEGAL_CAST
-
Cause: You cannot assign substrings to a field symbol.
Runtime Error:ASSIGN_SUBSTRING_NOT_ALLOWED
-
Cause: The field symbol is typed and the type of the assigned field is incompatible with it.
Runtime Error:ASSIGN_TYPE_CONFLICT
-
Cause: The type of the source field contains strings, tables, or references.
Runtime Error:ASSIGN_TYPE_ILLEGAL_CAST
-
Cause: The type of the source field is a structure and, on Unicode, is not compatible with the target type.
Runtime Error:ASSIGN_UC_STRUCT_CONFLICT