Поскольку <itab>
, очевидно, является внутренней таблицей , ее тип - "таблица", а не "структура"! (также смотрите короткий дамп, он говорит, что describe_by_data
возвратил тип cl_abap_tabledescr
, который не совместим с типом цели go_struct
, т.е. cl_abap_structdescr
)
Таким образом, вы должны сначала получить тип таблицы, а затем тип строк (я предполагаю, что это структурированный тип, но в некоторых других ситуациях это могут быть и другие типы).
data: go_table type ref to cl_abap_tabledescr.
go_struct type ref to cl_abap_structdescr,
gt_comp type abap_component_tab,
gs_comp type abap_componentdescr.
go_table ?= cl_abap_typedescr=>describe_by_data( <itab> ).
go_struct ?= go_table->get_table_line_type( ).
gt_comp = go_struct->get_components( ).
...