+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средства » SE24 - Построитель объектов (Модератор: Dmitriy)Тема:
|- CL_GUI_ALV_GRID - OO Class ALV List Viewer




Автор Тема: CL_GUI_ALV_GRID - OO Class ALV List Viewer  (Прочитано 1342 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 674
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
CL_GUI_ALV_GRID - OO Class ALV List Viewer
« : Январь 24, 2017, 04:28:47 pm »
1. Проблема выполнения CL_GUI_ALV_GRID в фоновом режиме  /Starting CL_GUI_ALV_GRID in the buckground

Вывод ALV-таблицы в фоновом режиме. В общем кажется с 7.40 если вы случайно попытаетесь вывести контейнер, в котором разместите объектный ALV, то в фоновом режиме такая тема не пройдет. Система упадет в дамп в связи с тем, что не будет найдено GUI. До 7.40, и кстати в интернете полно рекомендаций, вместо  CL_GUI_CUSTOM_CONTAINER, рекомендуют использовать в качестве контейнера  CL_GUI_DOCKING_CONTAINER, типа это должно помочь избежать проблем при работе с фоновым режимом. В настоящий момент, для новых версий системы, как оказалось данная рекомендация не работает. Поэтому чтобы вывести объектный ALV в фоновом режиме необходимо создавать его следующим образом (ну это если у вас кроме ALV на экране больше ничего не предполагается выводить):
Код: You are not allowed to view links. Register or Login
  CREATE OBJECT gc_alv_grid
    EXPORTING
      i_parent = cl_gui_container=>screen0.  "ALV-grid будет выведен на текущем активном экране
Далее следует обратить внимание на наличие  обработки событий в ALV-grid, т.е. если у вас в таблице например присутствуют какие-то кнопки, которые в диалоге нажимаются или что-то пересчитывается по каким-то событиям от работы пользователя в диалоге, то это так же надо отключить, иначе в момент выполнения команды: SET HANDLER:  gc_events->on_hotspot_click FOR gc_alv_grid, система в фоновом режиме сгенерирует дамп. Я поэтому написал что-то типа такого:
Код: You are not allowed to view links. Register or Login
IF cl_gui_alv_grid=>offline( ) IS INITIAL. PERFORM alv_set_grid_events USING gc_alv_grid. ENDIF.
т.е. если активно фоновое выполнение, тогда никакие события для ALV-таблицы не создаются, что впрочем логично, так как результат вы получите в виде данных спула, после завершения выполнения задания.