按索引读取动态表

问题描述 投票:0回答:1

我有这样生成的动态表:

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”。 “”之前可以不指定补码 “桌子”。

预期:中的数据。

dynamic abap dynamic-tables rtts
1个回答
0
投票

如果你告诉编译器内表可以是哈希表,编译器拒绝按索引访问是正常的。当您谈论 ALV 时,我认为 ALV 仅支持标准表。如果您想接受任何表格,无论如何都应该将其复制到标准表格,因此最终

<FS_TAB>
将是标准,因此将其声明为标准,而不是任何。

© www.soinside.com 2019 - 2024. All rights reserved.