Прежде всего, это хорошая идея - предоставить интерфейс или абстрактный суперкласс, и пусть ваши различные классы реализуют этот интерфейс или подкласс этого абстрактного класса - это избавит вас от ненужного приведения типов.Допустим, у вас есть ZIF_FOO с классами ZCL_BAR и ZCL_BAZ, реализующими его.Таблица может быть
TYPES: BEGIN OF t_line
type_name TYPE seoclass,
instance TYPE REF TO zif_foo,
END OF t_line.
DATA: lt_instances TYPE STANDARD TABLE OF t_line,
ls_instance TYPE t_line.
Тогда вы можете заполнить таблицу следующим образом:
ls_instance-type_name = 'ZCL_BAR'. " or wherever you get this value from
CREATE OBJECT ls_instance-instance TYPE (ls_instance-type_name).
Если вы хотите использовать локальные классы, вы можете сделать то же самое - просто используйте более длинный типname (SEOCLASS с его 30 символами будет недостаточно) и укажите имя типа, как описано в онлайн-документации RTTI:
ls_instance-typename = '\PROGRAM=ZMYREPORT\CLASS=LCL_MYCLASS'.