Добрый день.
Возник следующий вопрос. Есть разработка, в которой отчёт выводится на экран конструкцией вида:
Code:
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
r_container = lo_cont
container_name = 'DOCK_CONT'
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = me->t_data31.
Кто-нибудь сталкивался, можно ли задать конкретную ячейку доступной к редактированию (нужны именно диапазоны ячеек - не строки, не столбцы), если отчёт выведен через cl_salv_table=>factory?
Я знаю, что существует cl_gui_alv_grid=>mc_style_enabled, который работает для варианта через set_table_for_first_display.
Но, к сожалению, не знаю, куда его подавать в случае, если работаем с cl_salv_table (и есть ли вообще такая возможность).
Попробовал сделать так - получить филдкаталог, исправить его и установить обратно. Не сработало. Вот часть кода:
Code:
.....
lo_columns = lo_alv->get_columns( ).
DATA: rt_fcat TYPE lvc_t_fcat,
wa_fcat TYPE lvc_s_fcat.
rt_fcat = cl_salv_controller_metadata=>get_lvc_fieldcatalog(
r_columns = lo_columns
r_aggregations = lo_alv->get_aggregations( ) ).
LOOP AT rt_fcat INTO wa_fcat.
IF wa_fcat-fieldname+0(1) EQ 'D' AND strlen( wa_fcat-fieldname ) EQ 3.
wa_fcat-edit = 'X'.
MODIFY rt_fcat FROM wa_fcat.
ENDIF.
ENDLOOP.
cl_salv_controller_metadata=>set_lvc_fieldcatalog(
t_fieldcatalog = rt_fcat
r_columns = lo_columns
r_aggregations = lo_alv->get_aggregations( ) ).
.......
lo_columns->set_optimize( ).
lo_alv->display( ).
Всё компилится и в отладке видно, что rt_fcat-edit для нужных полей заполнен крестиком, однако отчёт всё равно readonly полностью.