Добрый день участникам форума!
Возникла проблема: для объектного грида необходимо изменять каталог выводимых полей в зависимости от значения определенного поля. Использование метода set_frontend_fieldcatalog приводит к неадекватным результатам (может, конечно, я его неадекватно использую)) ): каталог полей меняется, но даты и числа в гриде начинают отображаться в системном, а не в преобразованном виде.
Вот кусок кода, подскажите кто может где что я неправильно сделал:
Code:
IF custom_container2 IS INITIAL.
* create a custom container control for our ALV Control
CREATE OBJECT custom_container2
EXPORTING
container_name = cont_for_alv2
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
* create an instance of alv control
CREATE OBJECT gf_grid2
EXPORTING
i_parent = custom_container2.
gs_layout-sel_mode = 'C'.
gs_layout-edit = space.
gs_layout-stylefname = 'CELLTAB'.
gs_layout-ctab_fname = 'CELLCOLOR'.
PERFORM set_editable_cells TABLES gt_subitems.
perform set_cell_colors tables gt_subitems.
PERFORM set_weight_fieldcat TABLES gt_fieldcat.
PERFORM exclude_functions TABLES gt_exclude.
CALL METHOD gf_grid2->set_table_for_first_display
EXPORTING
i_structure_name = 'GT_SUBITEMS'
is_layout = gs_layout
it_toolbar_excluding = gt_exclude
CHANGING
it_outtab = gt_subitems[]
it_fieldcatalog = gt_fieldcat[].
ELSE.
" re-layout
gs_layout-sel_mode = 'C'.
gs_layout-edit = space.
gs_layout-stylefname = 'CELLTAB'.
PERFORM set_editable_cells TABLES gt_subitems.
perform set_cell_colors tables gt_subitems.
CALL METHOD gf_grid2->set_frontend_layout
EXPORTING
is_layout = gs_layout.
" re-fieldcat
PERFORM set_weight_fieldcat TABLES gt_fieldcat.
call method gf_grid2->set_frontend_fieldcatalog
exporting
it_fieldcatalog = gt_fieldcat[].
" get scroll
call method gf_grid2->get_scroll_info_via_id " положение прокрутки
importing
ES_ROW_NO = gs_row_no
ES_ROW_INFO = gs_row_info
ES_COL_INFO = gs_col_info.
CALL METHOD gf_grid2->refresh_table_display.
" set scroll
call method gf_grid2->set_scroll_info_via_id
exporting
is_row_info = gs_row_info
is_col_info = gs_col_info
is_row_no = gs_row_no.
CALL METHOD cl_gui_cfw=>flush.
ENDIF. "IF custom_container IS INITIAL
p.s. в подпрограмме set_weight_fieldcat каталог полей перед созданием очищаю