Paul_80 написал:
Большое спасибо! Может быть и наго***нокодил, но вроде как все получилось!
type-pools: abap,
slis.
field-symbols: <lt_outtab> type standard table,
<ls_outtab> type any,
<lf_field> type any.
data: dynamic_table type ref to data,
dynamic_line type ref to data,
s_alv_conrol type lvc_s_fcat,
t_alv_conrol type lvc_t_fcat.
data : idetails type abap_compdescr_tab,
xdetails type abap_compdescr.
data : ref_table_des type ref to cl_abap_structdescr.
s_alv_conrol-fieldname = 'ROOMNUMBER'.
s_alv_conrol-coltext = 'User type'.
s_alv_conrol-datatype = 'c'.
s_alv_conrol-inttype = 'c'.
s_alv_conrol-intlen = 10.
s_alv_conrol-decimals = 0.
append s_alv_conrol to t_alv_conrol.
sort gt_small_outtab by floor roomnumber.
loop at gt_small_outtab into gs_small_outtab.
at new floor.
clear s_alv_conrol.
s_alv_conrol-fieldname = gs_small_outtab-floor.
s_alv_conrol-coltext = gs_small_outtab-floor.
s_alv_conrol-datatype = 'i'.
s_alv_conrol-inttype = 'i'.
s_alv_conrol-intlen = 10.
s_alv_conrol-decimals = 0.
s_alv_conrol-do_sum = 'X'.
append s_alv_conrol to t_alv_conrol.
endat.
endloop.
*Создам динамическую таблицу
* Create dynamic internal table and assign to FS
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = t_alv_conrol
importing
ep_table = dynamic_table.
assign dynamic_table->* to <lt_outtab>.
* Create dynamic work area and assign to FS
create data dynamic_line like line of <lt_outtab>.
assign dynamic_line->* to <ls_outtab>.
"Заполнение динамической таблицы
loop at gt_small_outtab into gs_small_outtab.
assign component gs_small_outtab-floor of structure <ls_outtab> to <lf_field>.
check sy-subrc is initial.
<lf_field> = gs_small_outtab-i_value.
unassign <lf_field>.
assign component 'ROOMNUMBER' of structure <ls_outtab> to <lf_field>.
check sy-subrc is initial.
<lf_field> = gs_small_outtab-roomnumber.
unassign <lf_field>.
collect <ls_outtab> into <lt_outtab>.
clear <ls_outtab>.
endloop.
* Вывод динамической таблицы на экран
call function 'REUSE_ALV_GRID_DISPLAY_LVC'
exporting
i_callback_program = sy-repid
it_fieldcat_lvc = t_alv_conrol
i_callback_user_command = 'USER_COMMAND'
tables
t_outtab = <lt_outtab>
exceptions
program_error = 1
others = 2.
if sy-subrc <> 0.
leave program.
endif.