There are two main issues while casting an object dynamically.
- If the target object is an abstract super class, then we cannot use CREATE OBJECT lr_super_abstract TYPE REF TO (lv_super_abstract_class_name). Here lv_super_abstract_class name is ‘ZCL_SUPER_ABSTRACT_CLASS’
- We cannot use field symbol to do this object casting dynamically.
METHODS object_casting IMPORTING ir_zcl_sub_class TYPE REF TO zcl_sub_class.
METHOD object_casting.
DATA lv_super_abstract_class_name TYPE STRING VALUE ‘ZCL_SUPER_ABSTRACT_CLASS’.
DATA lr_super_abstract_class TYPE REF TO DATA.
CREATE DATA lr_super_abstract_class TYPE REF TO (lv_super_abstract_class_name).
lr_super_abstract_class->* ?= ir_zcl_sub_class.
WRITE:/ ‘ our super abstract class is casted dynamically and its object instance is successfully stored in the reference variable lr_super_abstract_class’
ENDMETHOD.
Note: please don’t use ->* to use the instance object. instance use directly lr_super_abstract_class.