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

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


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

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


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

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