I have dynamic table which generated like this:
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>.
This table with data then shows in ALV and after user perform double-click on line I wanna get this line to process later. And problem is implementing this, this line of code of course doesn't work:
READ TABLE <fs_tab> INDEX ps_row_no-row_id ASSIGNING <fs_line>.
How can I solve this?
I've tried:
READ TABLE <fs_tab> INDEX ps_row_no-row_id ASSIGNING <fs_line>.
Error: 588: For tables of type "HASHED TABLE" or "ANY TABLE" type, explicit and implicit index operations are not allowed. operations. "<FS_TAB>" is of type "ANY TABLE". It is possible that no complement is specified before "<FS_TAB>" "TABLE".
Expected: data in <fs_line>.
If you tell the compiler that the internal table can be a Hashed table, it's normal that the compiler refuses an access by index. As you are talking about ALV, I think ALV supports only Standard tables. If you want to accept any table, you should anyway copy it to a Standard table, so in the end <FS_TAB>
would be Standard:
FIELD-SYMBOLS <fs_tab> TYPE STANDARD TABLE.
Generally speaking, a read by index can be done on Standard and Sorted tables, which are both called "index tables". If you want to accept both categories, you could also use:
FIELD-SYMBOLS <fs_tab> TYPE INDEX TABLE.
References: