Abap 如何基于内部表动态创建对象?

Abap 如何基于内部表动态创建对象?,abap,Abap,我有一个内部表,其中填充了我要创建的对象的类型引用,如下所示(第一行是内部表ITAB的标题): 我想在我的程序中做的是(我输入行号): 如何成功地完成第5行和第6行?首先,最好提供一个接口或抽象超类,并让您的各种类实现该接口或该抽象类的子类-这将为您节省大量不必要的转换。假设有ZIF_FOO,类ZCL_BAR和ZCL_BAZ实现了它。桌子可能是 TYPES: BEGIN OF t_line type_name TYPE seoclass, instance

我有一个内部表,其中填充了我要创建的对象的类型引用,如下所示(第一行是内部表ITAB的标题):

我想在我的程序中做的是(我输入行号):


如何成功地完成第5行和第6行?

首先,最好提供一个接口或抽象超类,并让您的各种类实现该接口或该抽象类的子类-这将为您节省大量不必要的转换。假设有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).
如果您想使用本地类,也可以这样做-只需使用更长的类型名(仅使用30个字符的SEOCLASS是不够的)并指定类型名,如RTTI的联机文档中所述:

ls_instance-typename = '\PROGRAM=ZMYREPORT\CLASS=LCL_MYCLASS'.

您好,您想对这些对象做什么?它们是否有您想要使用的通用方法或属性?@tomdemyt目前,它们没有通用方法或属性。我正在尝试创建一个类似于SCII的功能,其中,当您想要向SCI添加额外检查时,您可以使用模板CL_CI_CATEGORY和CL_CI_SCAN创建一个新类。我想做的是创建一个定制的z表来保存用户可能想要做的可选测试的所有值。因此,在运行时动态创建对象,因为直到那时程序才知道用户希望执行什么检查。我不知道我的设计是否好,所以请建议。
ls_instance-type_name = 'ZCL_BAR'. " or wherever you get this value from
CREATE OBJECT ls_instance-instance TYPE (ls_instance-type_name).
ls_instance-typename = '\PROGRAM=ZMYREPORT\CLASS=LCL_MYCLASS'.