ABAP Keyword Documentation → ABAP - Reference → Processing Internal Data → Attributes of Data Objects → RTTS - Run Time Type Services
Ascertaining Data Types
This example demonstrates how the attributes of data types can be determined at runtime.
Other versions: 7.31 | 7.40 | 7.54
Source Code
DATA: dref1 TYPE REF TO data,
dref2 TYPE REF TO data.
FIELD-SYMBOLS: <data1> TYPE ANY,
<data2> TYPE ANY.
DATA: descr_ref1 TYPE REF TO cl_abap_typedescr,
descr_ref2 TYPE REF TO cl_abap_typedescr,
mess TYPE string.
TRY.
CREATE DATA: dref1 TYPE (type1),
dref2 TYPE (type2).
ASSIGN: dref1->* TO <data1>,
dref2->* TO <data2>.
CATCH cx_sy_create_data_error.
MESSAGE 'Create data error!' TYPE 'I' DISPLAY LIKE 'E'.
LEAVE PROGRAM.
ENDTRY.
descr_ref1 = cl_abap_typedescr=>describe_by_data( <data1> ).
descr_ref2 = cl_abap_typedescr=>describe_by_data( <data2> ).
TRY.
IF descr_ref1 <> descr_ref2.
RAISE EXCEPTION TYPE conv_exc.
ELSE.
<data2> = <data1>.
ENDIF.
CATCH conv_exc.
mess = `Assignment from type ` &&
descr_ref2->absolute_name &&
` to ` &&
descr_ref1->absolute_name &&
` not allowed!`.
MESSAGE mess TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.
Description
This example expands on the example for DESCRIBE FIELD, on the correct way to check any data type.
When you enter complex types, such as SCARR and SPFLI, into the input fields, the RTTI determines the absolute type name.