Текущее время: Ср, июл 23 2025, 13:09

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с &REFRESH в ALV Grid.
СообщениеДобавлено: Пт, июн 08 2012, 15:54 
Специалист
Специалист

Зарегистрирован:
Ср, окт 28 2009, 11:37
Сообщения: 117
Всем привет!
Есть ALV отчет, вызываемый через ФМ:
Code:
 
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
          i_callback_program                = sy-repid
          i_callback_user_command           = 'USER_COMMAND'
          i_callback_pf_status_set          = 'SET_PF_STATUS'
          is_layout                         = gs_layout
          it_fieldcat                       = gt_fieldcat
          i_default                         = 'X'
      TABLES
          t_outtab                          = t_info[]
      EXCEPTIONS
          program_error                     = 1
          OTHERS                            = 2.

Есть кнопка обновления грида с кодом функции &REFRESH, обработчик событий USER_COMMAND выглядит следующим образом:
Code:
FORM user_command USING r_ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
    CASE r_ucomm.
      WHEN '&REFRESH'.
        PERFORM <Сбор данных во внутреннюю таблицу t_info>.
        selfield-refresh = 'X'.
    ENDCASE.
  ENDIF.
ENDFORM.

Но при нажатии на нее ничего не происходит.
Мне надо чтобы по нажатию обновлялись данные во внутренней таблице и перерисовывались в ALV. Не подскажете что я упускаю?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с &REFRESH в ALV Grid.
СообщениеДобавлено: Пт, июн 08 2012, 16:02 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Скорее всего у вас изменения из ALV не переносятся во внутреннюю таблицу. Если так, попробуйте в FORM user_command получить ссылку на объект ALV через ФМ get_globals_from_slvc_fullscr и вызвать метод check_changed_data


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с &REFRESH в ALV Grid.
СообщениеДобавлено: Сб, июн 09 2012, 07:24 
Специалист
Специалист

Зарегистрирован:
Ср, окт 28 2009, 11:37
Сообщения: 117
Спасибо!
Тут немного другая ситуация - данный ALV не редактируемый. Внутренняя таблица собирается селектами из таблиц БД.
По нажатию на кнопки я хочу актуализировать таблицу(то есть снова вызывать все селекты) и перерисовывать грид с обновленной таблицей.
Не получается...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с &REFRESH в ALV Grid.
СообщениеДобавлено: Сб, июн 09 2012, 13:57 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Чт, май 17 2012, 11:45
Сообщения: 24
А что мешает после нажатия на "обновить" и после новых селектов опять нарисовать ALV?
Конечно, не самое удачное решение. Т.е. потом, при выходе из ALV, Вы будете попадать на старые ALV.
Но и этого можно избежать, заполнив параметр slis_selfield-exit = 'X'.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с &REFRESH в ALV Grid.
СообщениеДобавлено: Сб, июн 09 2012, 22:30 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
По-моему для стандартных кнопок не срабатывает USER_COMMAND.
Обычно в таких случаях можно скопировать стандартный статус в свой, поменять там код кнопки и только потом уже обрабатывать ее.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с &REFRESH в ALV Grid.
СообщениеДобавлено: Ср, июн 13 2012, 07:20 
Специалист
Специалист

Зарегистрирован:
Ср, окт 28 2009, 11:37
Сообщения: 117
Ну например на &IC1 (дабл-клик) он попадает в user_command и все как надо обрабатывает, а вот на &REFRESH - нет. И я не пойму почему. Во всех примерах что я нашел именно такой код используется :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с &REFRESH в ALV Grid.
СообщениеДобавлено: Ср, июн 13 2012, 09:07 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Alexgo написал(а):
Ну например на &IC1 (дабл-клик) он попадает в user_command и все как надо обрабатывает, а вот на &REFRESH - нет. И я не пойму почему. Во всех примерах что я нашел именно такой код используется :(

Рисуйте свою кнопку и вешайте на нее обработку. Если очень хочется отловить &REFRESH и ей подобные, то можете использовать it_event_exit.
Code:
  gs_event_exit-ucomm = '&REFRESH'.
  gs_event_exit-before = 'X'.
  append gs_event_exit to gt_event_exit.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с &REFRESH в ALV Grid.
СообщениеДобавлено: Ср, июн 13 2012, 11:48 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, янв 14 2010, 13:26
Сообщения: 70
Откуда: Санкт-Петербург
Пол: Мужской
Alexgo написал(а):
Всем привет!
Есть ALV отчет, вызываемый через ФМ:
Code:
 
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
          i_callback_program                = sy-repid
          i_callback_user_command           = 'USER_COMMAND'
          i_callback_pf_status_set          = 'SET_PF_STATUS'
          is_layout                         = gs_layout
          it_fieldcat                       = gt_fieldcat
          i_default                         = 'X'
      TABLES
          t_outtab                          = t_info[]
      EXCEPTIONS
          program_error                     = 1
          OTHERS                            = 2.

Есть кнопка обновления грида с кодом функции &REFRESH, обработчик событий USER_COMMAND выглядит следующим образом:
Code:
FORM user_command USING r_ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
    CASE r_ucomm.
      WHEN '&REFRESH'.
        PERFORM <Сбор данных во внутреннюю таблицу t_info>.
        selfield-refresh = 'X'.
    ENDCASE.
  ENDIF.
ENDFORM.

Но при нажатии на нее ничего не происходит.
Мне надо чтобы по нажатию обновлялись данные во внутренней таблице и перерисовывались в ALV. Не подскажете что я упускаю?


Code:
FORM user_command USING r_ucomm LIKE sy-ucomm
                                          selfield TYPE slis_selfield.

DATA: L_GRID TYPE REF TO CL_GUI_ALV_GRID,
          L_STABLE TYPE LVC_S_STBL.

    L_STABLE-COL = 'X'.
    L_STABLE-ROW = 'X'.

    CASE r_ucomm.
      WHEN '&REFRESH'.
        PERFORM <Сбор данных во внутреннюю таблицу t_info>.
        CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
           IMPORTING
             E_GRID = L_GRID.
        CALL METHOD L_GRID->REFRESH_TABLE_DISPLAY
          EXPORTING
            IS_STABLE = L_STABLE.
    ENDCASE.
  ENDIF.
ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Проблема с &REFRESH в ALV Grid.
СообщениеДобавлено: Ср, июн 13 2012, 13:57 
Специалист
Специалист

Зарегистрирован:
Ср, окт 28 2009, 11:37
Сообщения: 117
Такая штука валит программу в дамп. Грид же вызывается не средствами ОО, а через ФМ.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с &REFRESH в ALV Grid.
СообщениеДобавлено: Ср, июн 13 2012, 14:39 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, янв 14 2010, 13:26
Сообщения: 70
Откуда: Санкт-Петербург
Пол: Мужской
Alexgo написал(а):
Такая штука валит программу в дамп. Грид же вызывается не средствами ОО, а через ФМ.

Так вот эта штука как раз и дает ссылку на объект класса вашего грида:
Code:
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
           IMPORTING
             E_GRID = L_GRID.


Что за дамп?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Проблема с &REFRESH в ALV Grid.
СообщениеДобавлено: Ср, июн 20 2012, 16:29 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, янв 25 2012, 01:54
Сообщения: 59
для стандартных кнопок надо использовать события before user command и after user command


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

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


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

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


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

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