SAPфорум.RU
https://www.sapboard.ru/forum/

Редактируемые ячейки в cl_salv_table
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=96528
Страница 1 из 1

Автор:  boreich [ Ср, июн 20 2018, 15:51 ]
Заголовок сообщения:  Редактируемые ячейки в cl_salv_table

Добрый день.

Возник следующий вопрос. Есть разработка, в которой отчёт выводится на экран конструкцией вида:
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 полностью.

Автор:  ghost [ Ср, июн 20 2018, 16:12 ]
Заголовок сообщения:  Re: Редактируемые ячейки в cl_salv_table

SALV Editable

Автор:  boreich [ Чт, июн 21 2018, 08:42 ]
Заголовок сообщения:  Re: Редактируемые ячейки в cl_salv_table

ghost написал:


Спасибо за ссылку. Ранее она мне уже попадалась, но я не очень внимательно вчитался в статью, потому что, на первый взгляд, она не решала мою проблему (сделать редактируемой конкретную ячейку из таблицы).
Сейчас вчитался и убедился, что не решает. Вы подразумеваете, что такой возможности в САП не существует?

Автор:  Rizor [ Чт, июн 21 2018, 10:55 ]
Заголовок сообщения:  Re: Редактируемые ячейки в cl_salv_table  Тема решена

boreich написал(а):
Вы подразумеваете, что такой возможности в САП не существует?


"Официально" SALV - не редактируемый. Всё что описано в статьях - это обходные пути.

Может быть легче будет переписать на cl_gui_alv_grid, если ALV не сложный?
Ибо хотелки пользователей имеют свойство расти..

Автор:  boreich [ Чт, июн 21 2018, 11:02 ]
Заголовок сообщения:  Re: Редактируемые ячейки в cl_salv_table

Rizor написал(а):
boreich написал(а):
Вы подразумеваете, что такой возможности в САП не существует?


"Официально" SALV - не редактируемый. Всё что описано в статьях - это обходные пути.

Может быть легче будет переписать на cl_gui_alv_grid, если ALV не сложный?
Ибо хотелки пользователей имеют свойство расти..


Да, alv довольно замороченный, но, скорее всего, это действительно сэкономит времени в будущем. Спасибо.

Автор:  Besa [ Чт, июн 21 2018, 14:23 ]
Заголовок сообщения:  Re: Редактируемые ячейки в cl_salv_table

По ситуации(например если одно поле) - можно сделать ввод данных через кнопку или линку. Ну например нажали на ячейку, появилось окошко для ввода данных, или по кнопке с тулбара. Можно вывести диалог редактирования записи в отдельное окно в целом.

Автор:  boreich [ Пт, июн 22 2018, 14:27 ]
Заголовок сообщения:  Re: Редактируемые ячейки в cl_salv_table

Небольшой оффтоп - от класса cl_salv_table отказался, ячейки отдельные получилось задействовать, но возникло ещё одно неудобство.
По логике отчёта, необходимо красить строки в опр. цвета и некоторые из ячеек этих строк должны быть доступны для редактирования.
Покрасить строку сложности нет - проблема возникает из-за того, что в дальнейшем это выглядит "не эстетично":

Изображение

В типе lvc_s_styl есть поля style...style4, однако первое из них задействовано константой cl_gui_alv_grid=>mc_style_disabled, а остальные как-будто игнорируются.
Может, у кого то есть рабочий пример, где эти поля также используются? Гуглил часа два - ничего путного не попалось.

Самое смешное, что cl_gui_alv_grid=>mc_style_enabled также не отрабатывает корректно (если в филдкаталоге не прописан эдит) - если бы работало так, то можно было бы в редактируемые в style писать cl_gui_alv_grid=>mc_style_enabled, а для остальных в style - нужный цвет.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/