我有这样生成的动态表:
DATA: lo_struct TYPE REF TO cl_abap_structdescr,
lo_element TYPE REF TO cl_abap_elemdescr,
lo_new_type TYPE REF TO cl_abap_structdescr,
lo_new_tab TYPE REF TO cl_abap_tabledescr,
lo_data TYPE REF TO data,
lt_comp TYPE cl_abap_structdescr=>component_table,
ls_comp LIKE LINE OF lt_comp.
lo_struct ?= cl_abap_typedescr=>describe_by_name( gv_table_name ).
lt_comp = lo_struct->get_components( ).
* <some additional columns adding here>
lo_new_type = cl_abap_structdescr=>create( lt_comp ).
lo_new_tab = cl_abap_tabledescr=>create(
p_line_type = lo_new_type
p_table_kind = cl_abap_tabledescr=>tablekind_std
p_unique = abap_false ).
CREATE DATA lo_data TYPE HANDLE lo_new_type.
ASSIGN lo_data->* TO <fs_line>.
CREATE DATA lo_data TYPE HANDLE lo_new_tab.
ASSIGN lo_data->* TO <fs_tab>.
此包含数据的表格随后显示在 ALV 中,用户双击该行后,我想稍后处理该行。问题是实现这个,这行代码当然不起作用:
READ TABLE <fs_tab> INDEX ps_row_no-row_id ASSIGNING <fs_line>.
我该如何解决这个问题?
我已经尝试过:
READ TABLE <fs_tab> INDEX ps_row_no-row_id ASSIGNING <fs_line>.
错误:588:对于“HASHED TABLE”或“ANY”类型的表 TABLE”类型,不允许显式和隐式索引操作。 运营。 “
”的类型为“ANY TABLE”。 “ ”之前可以不指定补码 “桌子”。
预期:
如果你告诉编译器内表可以是哈希表,编译器拒绝按索引访问是正常的。当您谈论 ALV 时,我认为 ALV 仅支持标准表。如果您想接受任何表格,无论如何都应该将其复制到标准表格,因此最终
<FS_TAB>
将是标准,因此将其声明为标准,而不是任何。