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 на экране больше ничего не предполагается выводить):
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, система в фоновом режиме сгенерирует дамп. Я поэтому написал что-то типа такого:
IF cl_gui_alv_grid=>offline( ) IS INITIAL. PERFORM alv_set_grid_events USING gc_alv_grid. ENDIF.
т.е. если активно фоновое выполнение, тогда никакие события для ALV-таблицы не создаются, что впрочем логично, так как результат вы получите в виде данных спула, после завершения выполнения задания.