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

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


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

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


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

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