TYPES:BEGIN OF ty_test,
id(10) TYPE n,
name(10) TYPE c,
END OF ty_test.
DATA:gs_test TYPE ty_test.
FIELD-SYMBOLS:<fs_table> TYPE STANDARD TABLE,
<fs_line>,
<fs_field>.
DATA: go_table TYPE REF TO data,
go_line TYPE REF TO data,
gt_fcat TYPE lvc_t_fcat,
gs_fcat TYPE lvc_s_fcat.
DATA:go_struct TYPE REF TO cl_abap_structdescr.
FIELD-SYMBOLS:<fs_component> TYPE abap_compdescr.
DATA:gv_count TYPE i,
gv_col TYPE i,
gv_row TYPE i.
PARAMETERS:p_type TYPE string.
START-OF-SELECTION.
* go_struct ?= cl_abap_typedescr=>describe_by_data( gs_test ).
go_struct ?= cl_abap_typedescr=>describe_by_name( p_type ).
LOOP AT go_struct->components ASSIGNING <fs_component>.
* WRITE: / <fs_component>-name.
gs_fcat-fieldname = <fs_component>-name.
APPEND gs_fcat TO gt_fcat.
ENDLOOP.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = gt_fcat
IMPORTING
ep_table = go_table.
ASSIGN go_table->* TO <fs_table>.
CREATE DATA go_line LIKE LINE OF <fs_table>.
ASSIGN go_line->* TO <fs_line>.
DESCRIBE TABLE go_struct->components LINES gv_count.
CLEAR:gv_row.
DO 5 TIMES.
gv_row = gv_row + 1.
CLEAR:gv_col.
DO gv_count TIMES.
gv_col = gv_col + 1.
ASSIGN COMPONENT sy-index OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = gv_row && '行-' && gv_col && '列'.
ENDDO.
APPEND <fs_line> TO <fs_table>.
ENDDO.
LOOP AT <fs_table> ASSIGNING <fs_line>.
DO gv_count TIMES.
ASSIGN COMPONENT sy-index OF STRUCTURE <fs_line> TO <fs_field>.
WRITE: <fs_field>.
ENDDO.
SKIP.
ENDLOOP.