SAPфорум.RU https://sapboard.ru/forum/ |
|
Запрет редактирования ячейки по имени пользователя https://sapboard.ru/forum/viewtopic.php?f=13&t=95613 |
Страница 1 из 2 |
Автор: | sonics [ Вт, окт 17 2017, 16:14 ] |
Заголовок сообщения: | Запрет редактирования ячейки по имени пользователя |
Необходима проверка, если sy-uname совпадает в ячейке whocreate, то эта строка может редактироваться этим пользователем иначе, заблокировать. Данное правило я попробовал написать в форме: FORM select_data_and_init_style. Code: *-->Заполнение таблицы стилей ячеек loop at gt_outtab assigning <fs_outtab>. clear: <fs_outtab>-celltab, lt_alv_style_list. loop at gt_fieldcat[] assigning <fs_fieldcat>. ls_alv_cell_style-fieldname = <fs_fieldcat>-fieldname. * if sy-datum > <fs_outtab>-datecreate. "<fs_fieldcat>-fieldname = 'WHOTECHANGE'. if sy-uname = <fs_outtab>-whocreate. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_disabled. * ls_alv_cell_style-fieldname = cl_gui_alv_grid=>mc_style_enabled. insert ls_alv_cell_style into table lt_alv_style_list. else. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_enabled. * ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_disabled. endif. endloop. append lines of lt_alv_style_list to <fs_outtab>-celltab. endloop. Но не сработало. Подскажите в чем моя ошибка пожалуйста. |
Автор: | Besa [ Вт, окт 17 2017, 21:23 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
sonics, Вам уже советовали, читайте документацию, пользуйтесь поиском, смотрите стандартные примеры, в том числе и специальные ДЕМО примеры, многие Ваши вопросы очень простые и лежат на поверхности. |
Автор: | sonics [ Ср, окт 18 2017, 08:40 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
Besa написал: sonics, Вам уже советовали, читайте документацию, пользуйтесь поиском, смотрите стандартные примеры, в том числе и специальные ДЕМО примеры, многие Ваши вопросы очень простые и лежат на поверхности. Я посмотрел и пришел с вопросом, и с готовым кодом, который, к сожалению, не работает. Я ищу ошибку. По сути, по логике, все должно работать. |
Автор: | Кодер [ Ср, окт 18 2017, 10:34 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
sonics написал(а): По сути, по логике, все должно работать. Вы привели только код, в котором меняете данные таблицы. Этого недостаточно для анализа проблемы. Ну и на форуме такое отладить не получится. Необходимо смотреть в отладке: когда вы выполняете изменение стилей, что в итоге получается в таблице с данными, какие действия выполняются далее с алв в программе и т.д. Т.е. чтобы решить эту проблему, нужно или иметь представление что и как работает в вашей программе или провести сравнительный анализ работы вашей программы с корректно работающими программами с аналогичными функциями (например, стандартные демо-примеры из пакета SLIS) |
Автор: | ghost [ Ср, окт 18 2017, 11:47 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
Присоединяюсь к предыдущих советам. А по коду вижу 2 ошибки для выполнения поставленной задачи: Code: if sy-uname = <fs_outtab>-whocreate. должно быть Code: if sy-uname ne <fs_outtab>-whocreate. ну и Code: insert ls_alv_cell_style into table lt_alv_style_list. вынести за блок IF ENDIF. С уважением, Руслан |
Автор: | sonics [ Ср, окт 18 2017, 14:00 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
вынес за цикл. Какой пример посмотреть следует? я нашел только через LAYOUT-STYLEFNAME = 'CELLSTYLE' и здесь отдельные ячейки заблокированы, а не все строка.. |
Автор: | Besa [ Ср, окт 18 2017, 15:03 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
sonics написал(а): вынес за цикл. Какой пример посмотреть следует? я нашел только через LAYOUT-STYLEFNAME = 'CELLSTYLE' и здесь отдельные ячейки заблокированы, а не все строка.. BCALV*EDIT* |
Автор: | sonics [ Чт, окт 19 2017, 13:53 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
Besa написал: sonics написал(а): вынес за цикл. Какой пример посмотреть следует? я нашел только через LAYOUT-STYLEFNAME = 'CELLSTYLE' и здесь отдельные ячейки заблокированы, а не все строка.. BCALV*EDIT* жаль, но не нашел в этих примерах. или мой администратор вычистил таблицы с этими данными. |
Автор: | Besa [ Чт, окт 19 2017, 14:44 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
Не нашел что? Данные? https://wiki.scn.sap.com/wiki/display/ABAP/Flight+Data+Application+-+Demo+Example+for+Integration+Technologies |
Автор: | Bimit [ Чт, окт 19 2017, 14:46 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
Вот в этой программе смотрите BCALV_TEST_GRID_EDITABLE |
Автор: | sonics [ Чт, окт 19 2017, 15:21 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
Bimit написал(а): Вот в этой программе смотрите BCALV_TEST_GRID_EDITABLE там вроде только открыть/закрыть редактирование всей таблицы происходит. это я уже реализовал. |
Автор: | Kuranov.Dmitry [ Чт, окт 19 2017, 15:25 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
sonics написал(а): Bimit написал(а): Вот в этой программе смотрите BCALV_TEST_GRID_EDITABLE там вроде только открыть/закрыть редактирование всей таблицы происходит. это я уже реализовал. там можно и для ячеек установить посмотрите на использование поля P_CELLSF радиабаттон "Вкл. строки можно обработать" в частности форму d0100_set_grid_edit. там есть кусок Code: when con_edit_cell. *... Zellen-Editierbar * In Layout wird Feld SYTLEFNAME auf 'HANDLE_STYLE' gesetzt cs_layo-stylefname = 'HANDLE_STYLE'. loop at gt_outtab into ls_outtab. l_index = sy-tabix. l_erg = l_index mod 2. if l_erg eq 0. loop at gs_test-edit_fields into ls_field. ls_edit-fieldname = ls_field. ls_edit-style = cl_gui_alv_grid=>mc_style_enabled. ls_edit-style2 = space. ls_edit-style3 = space. ls_edit-style4 = space. ls_edit-maxlen = 8. insert ls_edit into table lt_edit. endloop. insert lines of lt_edit into table ls_outtab-handle_style. modify gt_outtab index l_index from ls_outtab transporting handle_style. endif. endloop. он каждую четную открывает, сделайте по аналогии но с вашим условием |
Автор: | sonics [ Чт, окт 19 2017, 16:21 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
Cпасибо тебе, добрый человек, за то, что всегда помогаешь. |
Автор: | sonics [ Пт, окт 20 2017, 13:33 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
Code: loop at gt_outtab assigning <fs_outtab>. clear: <fs_outtab>-celltab, lt_alv_style_list. loop at gt_fieldcat[] assigning <fs_fieldcat>. ls_alv_cell_style-fieldname = <fs_fieldcat>-fieldname. if sy-uname = <fs_outtab>-whocreate. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_enabled. else. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_disabled. endif. [s] if <fs_outtab>-fieldname = id. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_disabled. endif.[/s] insert ls_alv_cell_style into table lt_alv_style_list. endloop. append lines of lt_alv_style_list to <fs_outtab>-celltab. endloop. все заполняется, все работает. только нужно исключить некоторые поля, чтобы закрыть редактирование навсегда. Code: if <fs_outtab>-fieldname = id. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_disabled. endif. здесь ругается sap Цитата: The data object <fs_outtab> does not have a component called "FIELDNAME я бы тут через or перечислил все поля, но что-то не так. пробовал через: Code: case ls_alv_cell_style-fieldname. when 'ID'. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_enabled. when 'DATECREATE'. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_enabled. when 'WHOCREATE'. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_enabled. when 'DATECHANGE'. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_enabled. when 'WHOTECHANGE'. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_enabled. when 'PODRAZD'. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_enabled. when 'DEPART'. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_enabled. endcase. но и здесь не сработало. |
Автор: | Kuranov.Dmitry [ Пт, окт 20 2017, 13:44 ] |
Заголовок сообщения: | Re: Запрет редактирования ячейки по имени пользователя |
Code: The data object <fs_outtab> does not have a component called "FIELDNAME как <fs_outtab> объявлен? судя по названию, это филд символ на таблицу данных, а не на таблицу филдкаталога Code: if <fs_fieldcat>-fieldname = id. ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_disabled. endif. Может так вы имели в виду? |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |