Текущее время: Пн, июл 28 2025, 08:55

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Не обновляется ALV
СообщениеДобавлено: Пт, июн 03 2011, 15:44 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, май 19 2010, 12:10
Сообщения: 87
добрый (надеюсь для остальных) день :)
вообщем такая вот проблемка... есть модальный экран, на нем контейнер, в который засунута АЛВ-таблица. Этот экран может вызыватсья с двух других экранов программы.
варианты проблемных ситуаций такие:
1) если по закрытии экрана с АЛВ не чистим/дестроим объект вида cl_gui_alv_grid с нашей АЛВ-шкой, то почему-то при вызове из экрана А оно работает, а при вызове из экрана Б АЛВ не рисуется ...(если же сначала попрбовать вызвать с экрана Б то не ресуется потом с экрана А)
закрываю модальное окно так: leave to screen 0.
2) если сделать free alvgrid. при закрытии экрана (соотвественно в ПБО потом опять вызывается создание объекта) , то АЛВ потом рисуется в обоих случаях, но данные не обновляются пока например на АЛВ-шке не нажмеш кнопку сортировка и т.п.
в дэбагере смотрел метод
Code:
call method alvgrid->refresh_table_display
      EXCEPTIONS
        finished = 1
        others   = 2.

вызывается.... (sy-subrc = 0).
3) а вот call method alvgrid->FREE. я наверно пользоваться неумею... после if alvgrid is initial. в "иначе" обходит, и соответственно падает...

вот код: вызов экрана call screen 110 start at 5 5.
переменные:
Code:
data: alvgrid   type ref to cl_gui_alv_grid,
      C_MAINCONT type ref to cl_gui_custom_container,
      t_exclude type ui_functions ,
      i_alv        type lvc_t_fcat.

PBO:
Code:
if alvgrid is initial .
    create object C_MAINCONT
      EXPORTING
        container_name              = 'C_MAINCONT'
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        others                      = 6.

    create object alvgrid
      EXPORTING
        i_parent          = C_MAINCONT
      EXCEPTIONS
        error_cntl_create = 1
        error_cntl_init   = 2
        error_cntl_link   = 3
        error_dp_create   = 4
        others            = 5.

    perform fieldcat_initv   changing i_alv .

    call method alvgrid->set_table_for_first_display
      EXPORTING
        is_layout                           = st_lay "пустой
        it_toolbar_excluding          = t_exclude
      CHANGING
        it_outtab                     = i_tabl[]
        it_fieldcatalog               = i_alv
      EXCEPTIONS
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
        others                        = 4.

    call method alvgrid->refresh_table_display
      EXCEPTIONS
        finished = 1
        others   = 2.

  else .

    call method alvgrid->refresh_table_display
      EXCEPTIONS
        finished = 1
        others   = 2.
  endif .

потом заполняется статус

PAI:
Code:
MODULE USER_COMMAND_0110 INPUT.
  CASE  sy-UCOMM.
    WHEN 'OK'.
      perform save.
     "call method alvgrid->FREE.
      free alvgrid.
      leave to screen 0.
     WHEN 'CANCEL'.
      "call method alvgrid->FREE.
      free alvgrid.
leave to screen 0.
    WHEN OTHERS.
  ENDCASE.
ENDMODULE.   



п.с. может кто-то скажет хотябы какая из этих попыток неграмотна, чтобы я ее исключил...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не обновляется ALV
СообщениеДобавлено: Пт, июн 03 2011, 16:04 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, май 19 2010, 12:10
Сообщения: 87
да кстати, еще один момент... если ити по первой ветке, то экран без АЛВ "виснет" (обычно при попытке закрыть его)... и как-то так виснет что потом даже по таймауту не падает...
(хотя если в паи поставить брекпоинт и потом прогнать его в дэбагере, то закрывается все как положено...)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не обновляется ALV  Тема решена
СообщениеДобавлено: Пн, июн 06 2011, 08:25 
Специалист
Специалист

Зарегистрирован:
Вс, янв 11 2009, 11:05
Сообщения: 152
Пол: Мужской
1) в ПБО
Code:
    call method alvgrid->refresh_table_display
      EXCEPTIONS
        finished = 1
        others   = 2.

не нужен
2) при выходе из скрина. call method alvgrid->FREE. free alvgrid. все правильно.
3) не могут у Вас контейнеры пересекаться в скринах из которого вызывается окно с АЛВ и в окне с АЛВ?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не обновляется ALV
СообщениеДобавлено: Пн, июн 06 2011, 09:14 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, май 19 2010, 12:10
Сообщения: 87
_garycor_ написал:
2) при выходе из скрина. call method alvgrid->FREE. free alvgrid. все правильно.
3) не могут у Вас контейнеры пересекаться в скринах из которого вызывается окно с АЛВ и в окне с АЛВ?

нет, не пересикаются.

а вообще спасибо, разобрался)
помогает вот такая штука при закрытии экрана:
Code:
call method C_MAINCONT->free.
free: alvgrid, C_MAINCONT.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не обновляется ALV
СообщениеДобавлено: Пн, июн 06 2011, 09:32 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 133
Откуда: Набережные Челны
Пол: Мужской
Вместо
Code:
if alvgrid is initial
лучше прописать
Code:
if alvgrid is not bound


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не обновляется ALV
СообщениеДобавлено: Пн, июн 06 2011, 13:27 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, май 19 2010, 12:10
Сообщения: 87
ок, спасибо)


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

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


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

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


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

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