[英]Getting the fieldnames from the field-symbols
我需要在字段符號<itab>
獲取字段名稱,以便可以將名稱用於ALV的字段目錄。
所以我使用了cl_abap_structdescr但它總是使我出錯。 我用一個內部表嘗試了此操作,並且得到了預期的結果,但是我必須使用字段符號而不是內部表。
ASSIGN lo_itab->* TO <itab>
data: go_struct type ref to cl_abap_structdescr,
gt_comp type abap_component_tab,
gs_comp type abap_componentdescr.
go_struct ?= cl_abap_typedescr=>describe_by_data( <itab> ).
gt_comp = go_struct->get_components( ).
loop at gt_comp into gs_comp.
PERFORM fill_fieldcat USING :
gs_comp-name '' gs_comp-name
.
endloop.
因為<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( ).
...
當您將引用類型分配給另一個引用類型時,您將得到轉儲。 定義結構類型並像下面的示例中那樣傳遞。 您將不會得到任何轉儲。
data: go_struct type ref to cl_abap_structdescr,
gt_comp type abap_component_tab,
gs_comp type abap_componentdescr.
DATA ls_spfli TYPE spfli.
go_struct ?= cl_abap_typedescr=>describe_by_data( ls_spfli ).
gt_comp = go_struct->get_components( ).
loop at gt_comp into gs_comp.
* PERFORM fill_fieldcat USING :
* gs_comp-name '' gs_comp-name
* .
endloop.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.