我cl_abap_structdescr->get_components
用来获取结构中的字段列表。当我在本地声明的结构类型上使用它时它工作得很好,但是当我在 DDIC 结构上使用它时,它并没有给我我期望的结果。
可重现的例子:
TYPES: BEGIN OF gty_outtab,
infty TYPE infty,
uname TYPE uname,
bdate TYPE datum,
btime TYPE uzeit,
pernr TYPE pernr_d,
opera TYPE hr_opera,
begda TYPE begda,
endda TYPE endda,
END OF gty_outtab.
DATA: lr_infty_structdescr TYPE REF TO cl_abap_structdescr,
lr_outtab_structdescr TYPE REF TO cl_abap_structdescr,
lt_outtab_components TYPE STANDARD TABLE OF abap_componentdescr,
lt_infty_components TYPE STANDARD TABLE OF abap_componentdescr.
" works as expected
lr_outtab_structdescr ?= cl_abap_structdescr=>describe_by_name( 'GTY_OUTTAB' ).
lt_outtab_components = lr_outtab_structdescr->get_components( ).
" doesn't work as expected
lr_infty_structdescr ?= cl_abap_structdescr=>describe_by_name( 'P0008' ).
lt_infty_components = lr_infty_structdescr->get_components( ).
BREAK-POINT.
结果:
GTY_OUTTAB 没问题:
P0008
尽管它包含更多字段(见下文),但只有两个字段:
我已经尝试过使用cl_abap_typedescr
并用谷歌搜索,但我在网上找到的每个代码看起来都和我的一样?
P0008
如您所见,这是包含许多字段的定义: