Текущее время: Вт, мар 19 2024, 10:52

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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