Текущее время: Вс, июл 20 2025, 23:10

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Событие "Добавить", "Удалить" в ALV GRID
СообщениеДобавлено: Вт, июл 25 2006, 14:12 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 28 2005, 08:50
Сообщения: 141
Добрый день!

Подскажите пожалуйста, на каком событий можно отловить нажатие кнопок Toolbar "Добавить", "Удалить", события before_user_command и button_click не срабатывают при нажатии этих кнопок.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: re
СообщениеДобавлено: Вт, июл 25 2006, 14:50 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
кнопки типа Добавить Скопировать выполняются на клиентском пк
(локальные для activex объекта),
и по умолчанию не относятся user command

можно сделать так:
регистрируются события handle_toolbar и before/after_user_command

в обработчике события handle_toolbar заменить коды функций
&LOCAL&APPEND
&LOCAL&INSERT_ROW
&LOCAL&COPY_ROW
например снять префикс &LOCAL&,
а кнопка Удалить строку вроде бы user command.

в обработчике before/after_user_command ловишь эти команды
Code:
method
    handle_toolbar
*      for event
*        toolbar  of cl_gui_alv_grid
*      importing
*        e_object
*        e_interactive
*        sender
  .

    delete e_object->mt_toolbar[]
      where function eq '&MB_SUM'
         or function eq '&MB_SUBTOT'
         or function eq '&&SEP05'
         or function eq '&GRAPH'
         or function eq '&&SEP06'
         or function eq '&&SEP07'
         or function eq '&INFO'.

    data lr_button type ref to stb_button.
    loop at e_object->mt_toolbar
      reference into lr_button
      where function eq '&LOCAL&APPEND'
         or function eq '&LOCAL&INSERT_ROW'
         or function eq '&LOCAL&COPY_ROW'
    .
      shift lr_button->function left by 7 places.  " strip &LOCAL&
    endloop.

  endmethod.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: re
СообщениеДобавлено: Вт, июл 25 2006, 15:16 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 28 2005, 08:50
Сообщения: 141
trop написал(а):
кнопки типа Добавить Скопировать выполняются на клиентском пк
(локальные для activex объекта),
и по умолчанию не относятся user command

можно сделать так:
регистрируются события handle_toolbar и before/after_user_command

в обработчике события handle_toolbar заменить коды функций
&LOCAL&APPEND
&LOCAL&INSERT_ROW
&LOCAL&COPY_ROW
например снять префикс &LOCAL&,
а кнопка Удалить строку вроде бы user command.

в обработчике before/after_user_command ловишь эти команды
Code:
method
    handle_toolbar
*      for event
*        toolbar  of cl_gui_alv_grid
*      importing
*        e_object
*        e_interactive
*        sender
  .

    delete e_object->mt_toolbar[]
      where function eq '&MB_SUM'
         or function eq '&MB_SUBTOT'
         or function eq '&&SEP05'
         or function eq '&GRAPH'
         or function eq '&&SEP06'
         or function eq '&&SEP07'
         or function eq '&INFO'.

    data lr_button type ref to stb_button.
    loop at e_object->mt_toolbar
      reference into lr_button
      where function eq '&LOCAL&APPEND'
         or function eq '&LOCAL&INSERT_ROW'
         or function eq '&LOCAL&COPY_ROW'
    .
      shift lr_button->function left by 7 places.  " strip &LOCAL&
    endloop.

  endmethod.


Этот способ я уже пробовал, событие срабатывает, но не выполняются функции, т.е. если &APPEND, то строка не добавляется, "Удалить" не юзер комманд, у него же тоже префикс &LOCAL


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 25 2006, 16:43 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Попробуй cобытие DATA_CHANGED вместе с
CALL METHOD grid->register_edit_event( cl_gui_alv_grid=>MC_EVT_MODIFIED ).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: re
СообщениеДобавлено: Вт, июл 25 2006, 17:00 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 01 2005, 13:23
Сообщения: 303
Откуда: Питер
Пол: Мужской
Xenon написал(а):
trop написал(а):
кнопки типа Добавить Скопировать выполняются на клиентском пк
(локальные для activex объекта),
и по умолчанию не относятся user command

можно сделать так:
регистрируются события handle_toolbar и before/after_user_command

в обработчике события handle_toolbar заменить коды функций
&LOCAL&APPEND
&LOCAL&INSERT_ROW
&LOCAL&COPY_ROW
например снять префикс &LOCAL&,
а кнопка Удалить строку вроде бы user command.

в обработчике before/after_user_command ловишь эти команды
Code:
method
    handle_toolbar
*      for event
*        toolbar  of cl_gui_alv_grid
*      importing
*        e_object
*        e_interactive
*        sender
  .

    delete e_object->mt_toolbar[]
      where function eq '&MB_SUM'
         or function eq '&MB_SUBTOT'
         or function eq '&&SEP05'
         or function eq '&GRAPH'
         or function eq '&&SEP06'
         or function eq '&&SEP07'
         or function eq '&INFO'.

    data lr_button type ref to stb_button.
    loop at e_object->mt_toolbar
      reference into lr_button
      where function eq '&LOCAL&APPEND'
         or function eq '&LOCAL&INSERT_ROW'
         or function eq '&LOCAL&COPY_ROW'
    .
      shift lr_button->function left by 7 places.  " strip &LOCAL&
    endloop.

  endmethod.


Этот способ я уже пробовал, событие срабатывает, но не выполняются функции, т.е. если &APPEND, то строка не добавляется, "Удалить" не юзер комманд, у него же тоже префикс &LOCAL


ну напишите свою логику кнопок у которых сменили функц. код . Добавить, удалить строку - что тут сложного? Апендить и удалять строку из внутренней таблицы и рефрешить грид :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 29 2007, 18:20 
Начинающий
Начинающий

Зарегистрирован:
Вт, июл 19 2005, 11:17
Сообщения: 10
Так никто и не подскажет как затем заставить отработать стандартный функционал кнопки(&LOCAL&APPEND)?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 30 2007, 06:14 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 28 2005, 08:50
Сообщения: 141
oleg322 написал(а):
Так никто и не подскажет как затем заставить отработать стандартный функционал кнопки(&LOCAL&APPEND)?


Если необходимо прописать свой код, то можно это делать на событие before_user_command, прописываешь метод на это событие и там по параметру e_ucomm прописываеш свой код.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 30 2007, 11:21 
Начинающий
Начинающий

Зарегистрирован:
Вт, июл 19 2005, 11:17
Сообщения: 10
см. выше
кнопки типа Добавить Скопировать выполняются на клиентском пк
(локальные для activex объекта),
и по умолчанию не относятся user command
..

Просто хочется сделать следующую весчь - при нажатии в grid кнопки удалить проверять можно ли удалять данную строку, и если можно, то чтобы далее отработал стандартный функционал кнопки удалить


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 30 2007, 13:44 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
Попробуйте, то что посоветовал Т ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: re
СообщениеДобавлено: Вт, мар 27 2007, 21:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
oleg322 написал(а):
Так никто и не подскажет как затем заставить отработать стандартный функционал кнопки(&LOCAL&APPEND)?

попробуй такой способ:
Code:
call method lcl_grid->set_table_for_first_display
exporting
..
appl_events = 'X'
..

application события в гриде сыпятся в pai экрана,
чтобы запустить handler грида нужно вызвать в pai
Code:
cl_gui_cfw=>dispatch( ).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re:
СообщениеДобавлено: Ср, мар 21 2012, 10:18 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 17 2009, 00:53
Сообщения: 166
Откуда: Екатеринбург
Пол: Мужской
T написал:
Попробуй cобытие DATA_CHANGED вместе с
CALL METHOD grid->register_edit_event( cl_gui_alv_grid=>MC_EVT_MODIFIED ).

Спасибо! Работает!

_________________
Высшая степень уважения к клиенту - это разработать программу не так как он хочет, так как следует!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re:
СообщениеДобавлено: Пн, сен 24 2012, 10:37 
Начинающий
Начинающий

Зарегистрирован:
Пт, май 15 2009, 07:14
Сообщения: 16
T написал:
Попробуй cобытие DATA_CHANGED вместе с
CALL METHOD grid->register_edit_event( cl_gui_alv_grid=>MC_EVT_MODIFIED ).

Добрый день!
Столкнулся с той же проблемой - в тулбаре ALV Grid при нажатии кнопки "удалить"/"добавить" не могу непосредственно перед удалением/вставкой новой строки отреагировать на событие. Суть в том, что у пользователя при нажатии на кнопку "Удалить" требуется подтверждение операции. Я пробовал DATA_CHANGED вместе с CALL METHOD grid->register_edit_event( cl_gui_alv_grid=>MC_EVT_MODIFIED ). Но событие DATA_CHANGED срабатывает уже ПОСЛЕ удаление строки в гриде. Последовательность действий: 1) Выделяю строку в гриде
2) Жму на тулбаре "-" (удалить запись) 3) Выделенная строка удаляется из грида 4) Срабатыввает break-point в событии DATA_CHANGED
Мне же надо воткнуть подтверждение, например, POPUP TO CONFIRM, между пунктами 2 и 3 (после нажатия кнопки и непосредственно перед визуальным удалением строки из грида) Подскажите, пожалуйста, как решить эту проблемку. Буду признателен любым советам


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Событие "Добавить", "Удалить" в ALV GRID
СообщениеДобавлено: Пн, сен 24 2012, 10:47 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
отловить именно момент удаления не получится, так как выполняется он на клиентской машине в Activex компоненте.
http://sapboard.ru/forum/viewtopic.php?f=13&t=78140


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Событие "Добавить", "Удалить" в ALV GRID
СообщениеДобавлено: Пн, сен 24 2012, 11:01 
Начинающий
Начинающий

Зарегистрирован:
Пт, май 15 2009, 07:14
Сообщения: 16
Хлопчик написал(а):
отловить именно момент удаления не получится, так как выполняется он на клиентской машине в Activex компоненте.
viewtopic.php?f=13&t=78140

Читал эту ветку, просто предыдущий оратор отписал, что получилось, думал, я что-то недопонял. Ведь даже если поместить проверку
удаляемых данных в событии DATA_CHANGED, то даже в случае недопустимости удаления можно лишь сообщить об этом этом пользователю уже после удаления строки из грида. Мол, строку нельзя удалять, а она пропала) Нажмите кнопку "Обновить данные"/"Вернуть все обратно"
как-то не совсем по-человечески.
Видимо, для решения проблемы придется убирать эту кнопку совсем и делать непосредственное удаление из вн.таблицы с последующей перерисовкой записей в гриде.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Событие "Добавить", "Удалить" в ALV GRID
СообщениеДобавлено: Пн, сен 24 2012, 11:04 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
кнопку заменить своей с той же иконкой
написать обработчик для нее
апдейт внутренней таблицы и рефреш грида

все в этом топике описано выше


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

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


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

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


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

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