ABAP Keyword Documentation → ABAP − Reference → Processing Internal Data → Assignments → Lossless Assignments → Lossless Assignments - Rules
Checking Elementary Data Objects
In conversions between incompatible
elementary data objects, the operator
EXACT ensures that no values are lost. Regardless of the value of the argument, the operator
EXACT
generally does not permit assignments between data objects with the following data types. The is because with these data types, values are always lost when the
conversion rules are applied.
- From
x
,xstring
ton
,d
,t
, and reversed.
- From
x
,xstring
to all numeric data types, and reversed.
- From
d
andt
tob
ands
Conversions from d
to t
and vice versa, and most
conversions for time stamps of the type utclong
are prohibited independently
of the operator EXACT
. Other conversions that are not permitted are conversions
in which byte-like fields are converted directly or as an intermediate result to the data type i
(or reversed).
If illegal conversions are made, a syntax error occurs, or if the cause cannot be known statically, an exception of the class CX_SY_CONVERSION_EXACT_NOT_SUP is raised. This also occurs with types for which conversions are permitted, but for which a loss of values can be identified regardless of the content, for example, if a conversion is made to fields that are too short.
When permitted conversions are made between incompatible elementary data objects, the operator EXACT
checks the contents of the argument at runtime as follows:
If the elementary data types for which no conversion is required are compatible, no checks are performed and no exceptions are raised.
Other versions: 7.31 | 7.40 | 7.54
Notes
- When the operator
EXACT
is used, a handleable exception is always raised at runtime when an illegal conversions is made. This occurs in particular when conversions are attempted betweend
andt
. In all other cases, an attempted conversion of this type raises a non-handleable exception.
- If an argument contains an invalid or inappropriate value, this is assigned to its return value, even if the operator
EXACT
is used.
Executable Example
Continue
Valid Values for Lossless Assignments