Текущее время: Чт, мар 28 2024, 19:11

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Вт, окт 17 2017, 16:14 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Необходима проверка, если 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.

Но не сработало.
Подскажите в чем моя ошибка пожалуйста.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Вт, окт 17 2017, 21:23 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
sonics, Вам уже советовали, читайте документацию, пользуйтесь поиском, смотрите стандартные примеры, в том числе и специальные ДЕМО примеры, многие Ваши вопросы очень простые и лежат на поверхности.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Ср, окт 18 2017, 08:40 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Besa написал:
sonics, Вам уже советовали, читайте документацию, пользуйтесь поиском, смотрите стандартные примеры, в том числе и специальные ДЕМО примеры, многие Ваши вопросы очень простые и лежат на поверхности.

Я посмотрел и пришел с вопросом, и с готовым кодом, который, к сожалению, не работает.
Я ищу ошибку.
По сути, по логике, все должно работать.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Ср, окт 18 2017, 10:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
sonics написал(а):
По сути, по логике, все должно работать.

Вы привели только код, в котором меняете данные таблицы. Этого недостаточно для анализа проблемы. Ну и на форуме такое отладить не получится. Необходимо смотреть в отладке: когда вы выполняете изменение стилей, что в итоге получается в таблице с данными, какие действия выполняются далее с алв в программе и т.д.
Т.е. чтобы решить эту проблему, нужно или иметь представление что и как работает в вашей программе или провести сравнительный анализ работы вашей программы с корректно работающими программами с аналогичными функциями (например, стандартные демо-примеры из пакета SLIS)

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Ср, окт 18 2017, 11:47 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
Присоединяюсь к предыдущих советам.
А по коду вижу 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.

С уважением,
Руслан

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Ср, окт 18 2017, 14:00 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
вынес за цикл.
Какой пример посмотреть следует?
я нашел только через LAYOUT-STYLEFNAME = 'CELLSTYLE'
и здесь отдельные ячейки заблокированы, а не все строка..


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Ср, окт 18 2017, 15:03 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
sonics написал(а):
вынес за цикл.
Какой пример посмотреть следует?
я нашел только через LAYOUT-STYLEFNAME = 'CELLSTYLE'
и здесь отдельные ячейки заблокированы, а не все строка..

BCALV*EDIT*


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Чт, окт 19 2017, 13:53 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Besa написал:
sonics написал(а):
вынес за цикл.
Какой пример посмотреть следует?
я нашел только через LAYOUT-STYLEFNAME = 'CELLSTYLE'
и здесь отдельные ячейки заблокированы, а не все строка..

BCALV*EDIT*

жаль, но не нашел в этих примерах.
или мой администратор вычистил таблицы с этими данными. :(


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Чт, окт 19 2017, 14:44 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Не нашел что? Данные?

https://wiki.scn.sap.com/wiki/display/ABAP/Flight+Data+Application+-+Demo+Example+for+Integration+Technologies


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Чт, окт 19 2017, 14:46 
Специалист
Специалист

Зарегистрирован:
Пн, июл 11 2011, 10:50
Сообщения: 197
Вот в этой программе смотрите BCALV_TEST_GRID_EDITABLE


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Чт, окт 19 2017, 15:21 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Bimit написал(а):
Вот в этой программе смотрите BCALV_TEST_GRID_EDITABLE

там вроде только открыть/закрыть редактирование всей таблицы происходит.
это я уже реализовал.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя  Тема решена
СообщениеДобавлено: Чт, окт 19 2017, 15:25 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
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.


он каждую четную открывает, сделайте по аналогии но с вашим условием


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Чт, окт 19 2017, 16:21 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Cпасибо тебе, добрый человек, за то, что всегда помогаешь.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Пт, окт 20 2017, 13:33 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
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.

но и здесь не сработало.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет редактирования ячейки по имени пользователя
СообщениеДобавлено: Пт, окт 20 2017, 13:44 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
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.


Может так вы имели в виду?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot], Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB