是否可以使用 ABAP 使用密钥创建动态内部 table?
Is it possible to create dynamic internal table with keys using ABAP?
是否可以使用密钥创建动态内部 table?我正在与
合作
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_instance.
对于内部table,其行是一个结构(由一个或多个字段组成),首先使用 RTTC 定义结构,然后定义内部 table。
@Allen 在另一个问题中展示了一个代码示例:
要使用给定的主键创建 table 类型,请使用 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
).
您也可以创建带有辅助键的类型,但我想您不需要它。
是否可以使用密钥创建动态内部 table?我正在与
合作 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_instance.
对于内部table,其行是一个结构(由一个或多个字段组成),首先使用 RTTC 定义结构,然后定义内部 table。
@Allen 在另一个问题中展示了一个代码示例:
要使用给定的主键创建 table 类型,请使用 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
).
您也可以创建带有辅助键的类型,但我想您不需要它。