07-01-2016 2:08 PM
Hi folks,
I'm using RTTS to dynamically get class name for an initialized object. Following codes work just fine:
data obj type ref to zflh_test_class
obj = new #( ).
data cls_descr type ref to cl_abap_classdescr.
cls_descr ?= cl_abap_classdescr=>describe_by_object_ref( obj ).
data(rel_name) = cls_descr->get_relative_name( ). " returns zflh_test_class
The question is: How can I get the class name without object initialization. I would like to have something like this
data obj type ref to zflh_test_class
data cls_descr type ref to cl_abap_classdescr.
cls_descr ?= cl_abap_classdescr=>describe_by_object_ref( obj ).
data(rel_name) = cls_descr->get_relative_name( ).
Of course cl_abap_classdescr=>describe_by_object_ref throws exception because "obj" is initial.
Any idea?
Cheers,
Ferry
07-01-2016 3:17 PM
Something like that :
DATA obj type ref to if_ixml.
data(ref) = cast cl_abap_refdescr( cl_abap_typedescr=>describe_by_data( obj ) ).
data(objtype) = cast cl_abap_objectdescr( ref->get_referenced_type( ) ).
data(rel_name) = objtype->get_relative_name( ).
ASSERT rel_name = 'IF_IXML'.
07-01-2016 3:17 PM
Something like that :
DATA obj type ref to if_ixml.
data(ref) = cast cl_abap_refdescr( cl_abap_typedescr=>describe_by_data( obj ) ).
data(objtype) = cast cl_abap_objectdescr( ref->get_referenced_type( ) ).
data(rel_name) = objtype->get_relative_name( ).
ASSERT rel_name = 'IF_IXML'.
07-01-2016 3:41 PM
07-01-2016 4:15 PM
Simplifying a bit, we have it:
DATA obj TYPE REF TO if_ixml.
DATA(rel_name) = CAST cl_abap_objectdescr( CAST cl_abap_refdescr( cl_abap_typedescr=>describe_by_data( obj ) )->get_referenced_type( ) )->get_relative_name( ).
ASSERT rel_name = 'IF_IXML'.
Warm regards,
Raphael Pacheco.