Skip to content

ABAP Keyword Documentation →  ABAP − Reference →  Processing Internal Data →  Assignments →  Lossless Assignments →  Lossless Assignments - Rules →  Checking Elementary Data Objects 

Lossless Assignment

This example demonstrates how the operator EXACT is used to make lossless assignments.

Other versions: 7.31 | 7.40 | 7.54

Source Code

    DATA: text     TYPE string VALUE `4 Apples + 2 Oranges`,
          num_text TYPE n LENGTH 8.
    DATA(out) = cl_demo_output=>new(
      )->begin_section( text
      )->begin_section( `Not really exact:` ).
    num_text = text.
    out->write_data( num_text
      )->next_section( `Try to be exact:` ).
    TRY.
        num_text = EXACT #( text ).
        out->write_data( num_text ).
      CATCH cx_sy_conversion_error INTO DATA(exc).
        out->write_text( exc->get_text( ) ).
    ENDTRY.
    out->display( ).

Description

Without the operator EXACT, text is assigned to num_text without the validity of the assigned value being checked against the associated conversion rules. This produces a value that is not very intuitive, "00000042".

Using the operator EXACT, the value that is passed is checked and an exception is raised in the case in question.