Skip to content

ABAP Keyword Documentation →  ABAP − Reference →  Processing Internal Data →  Assignments →  Lossless Assignments →  EXACT - Lossless Operator 

EXACT - Lossless Conversion of Enumerated Types

If the constructor expression CONV is applied to enumerated types, the same rules apply as for the conversion operator CONV:

... EXACT base_type( enum_dobj ) ...
  • A data object that can be converted to the base type of an enumerated type can be converted to the enumerated type, as with CONV.
... EXACT enum_type( dobj ) ...

The conditions of losslessness also apply:

  • If a data object that can be converted to the base type is converted to the enumerated type, this happens in accordance with the rules of lossless assignment.

Other versions: 7.31 | 7.40 | 7.54


Example

If the conversion operator is used, the argument is converted to the base type c with length 4, with surplus places cut off. If the Lossless operator is used, this results in an exception.

TYPES: 
  char8 TYPE c LENGTH 4, 
  BEGIN OF ENUM text BASE TYPE char8, 
    first  VALUE IS INITIAL, 
    second VALUE 'Seco', 
    third  VALUE 'Thrd', 
  END OF ENUM text. 

DATA(result1) = CONV text( `Seco` && `nd` ). 

TRY. 
    DATA(result2) = EXACT text( `Seco` && `nd` ). 
  CATCH cx_sy_conversion_data_loss. 
    cl_demo_output=>display( `Oops!` ). 
ENDTRY.

If an arithmetic expression is used in the conversion operator, the result is converted to the base type i, with the decimal places cut off. If the Lossless operator is used, this results in an exception.

TYPES: 
  BEGIN OF ENUM number, 
    n0, n1, n2, 
  END OF ENUM number. 

DATA(result1) = CONV number( + '1.2' ). 

TRY. 
    DATA(result2) = EXACT number( + '1.2' ). 
  CATCH cx_sy_conversion_rounding. 
    cl_demo_output=>display( `Oops!` ). 
ENDTRY.