是否可以使用ABAP创建具有键的动态内部表?

是否可以使用ABAP创建具有键的动态内部表?,abap,rtti,Abap,Rtti,可以用键创建动态内部表吗?我和你一起工作 call method cl_alv_table_create=>create_dynamic_table exporting it_fieldcatalog = lt_fldcat[] importing ep_table = lr_new

可以用键创建动态内部表吗?我和你一起工作

    call method cl_alv_table_create=>create_dynamic_table
                     exporting 
                         it_fieldcatalog = lt_fldcat[]
                     importing 
                         ep_table        = lr_new_table
这会给出没有键的结果,因此我无法执行

    read table <ft_itab> from <fs_itab> ....
从…读取表格。。。。

其中“fs_itab”应为带有键的“ft_itab”行(在lt_fieldcat[]中指定)。上面使用的方法是TABLE_LINE,也是一个TABLE键。

要在运行时动态创建任何类型的变量,可以使用RTTC类,然后是语句create DATA DATA_reference type HANDLE rtti_实例

对于行为结构(由一个或多个字段组成)的内部表,首先用RTTC定义结构,然后定义内部表

@Allen在另一个问题中展示了一个代码示例:

要创建具有给定主键的表类型,请使用CL_ABAP_TABLEDESCR的create方法的参数;下面是Allen的CREATE的另一篇文章,但这篇文章有一个非唯一的排序主键,带有符号和低位的组件:

lo_table_descr = cl_abap_tabledescr=>create(
      p_line_type  = lo_struc_descr
      p_table_kind = cl_abap_tabledescr=>tablekind_sorted
      p_unique     = abap_false
      p_key        = VALUE #( ( 'SIGN' ) ( 'LOW' ) )
      p_key_kind   = cl_abap_tabledescr=>keydefkind_user
      ).

您也可以使用辅助键创建类型,但我想您不需要它。

您好,dusan。如何填充字段目录表LT_FLDCAT?另外,创建的表字段的结果列表是什么?嗨,伊万。我正在尝试将主数据读取到我的gt_outtab。因此,objectref lr_new_表将是许多主数据表的组合。我将创建一个包含少量键的fieldcatalog,并将主数据从lr_new_表读取到gt_outtab中。可以通过循环实现,但如果lr_new_表还包含一个键,那么代码可能会“更干净”或更可读。您是说内部表的键字段还是字段名?因为,从内部表读取不需要键字段。将表读入@DATA(LS_ITAB),键为“A_FIELD_NAME”=“SOMETHING_YOU_所需”。我是否理解错了您的问题?否。我需要阅读没有“带键”语句的表,因为此表在报表运行期间将不同,所以我不知道键的数量。但请查看桑德拉·罗西的回答-这正是我需要的。