Search code examples
data-structuresabapsap-data-dictionaryrtts

Get components of DDIC structure with includes


I am using cl_abap_structdescr->get_components to get a list of fields in a structure. It works fine when I use it on locally declared structure types, but when I use it on DDIC structures, it doesn't give me the results I expect.

Reproducable example:

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.

Results:

That's okay for GTY_OUTTAB:

enter image description here

There are only two fields for P0008 although it contains many more fields (see below):

enter image description here

I already tried using cl_abap_typedescr instead and googled, but every code I find online looks just like mine?

Here is the definition of P0008 which contains many fields as you can see:

DDIC structure P0008 in SE11 Hierarchy display


Solution

  • There is a method on cl_abap_structdescr called get_included_view( ) that will expand the included structures