Текущее время: Сб, июл 19 2025, 09:26

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


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

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


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

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