是否可以使用ABAP创建带有密钥的动态内部表?

时间:2018-01-11 10:30:37

标签: sap abap

是否可以使用键创建动态内部表?我正在使用

formats()

这给出了没有键的结果,所以我无法执行

    call method cl_alv_table_create=>create_dynamic_table
                     exporting 
                         it_fieldcatalog = lt_fldcat[]
                     importing 
                         ep_table        = lr_new_table

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

1 个答案:

答案 0 :(得分:2)

要在运行时动态创建任何类型的变量,您可以使用RTTC类,然后使用语句CREATE DATA data_reference TYPE HANDLE rtti_instance。

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

@Allen在另一个问题中展示了代码示例:Dynamically defined variable in ABAP

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

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
      ).

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