HOW TO DYNAMICALLY CAST AN OBJECT IN SAP ABAP

There are two main issues while casting an object dynamically.

  1. 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’
  2. 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.