Использование события для запуска фонового задания
В системе SAP присутствует возможность запуска фоновых заданий посредством инициации события. Эти события должны быть предварительно настроены, и в последующем могут быть использованы для вызова, например, из ABAP программы. Ниже я разберу небольшой пример, демонстрирующий такую возможность.
0. Мат часть
См. Events in Background Processing Explained
1. Задача
Выполнить запуск фонового задания посредством инициации события. Инициировать событие необходимо через ABAP программу.
2. Исходные данные
Для демонстрации в этой заметке в фоновом режиме я буду запускать отчет, доступный для работы из транзакции S_PH0_48000450. Для него же настроен вариант запуска.
См. Monitoring of Tasks (Infotype 0019)
3. Создание события
Создание нового события выполняется посредством работы с транзакцией SM62
4. Планирование фонового задания
На следующем видеофрагменте представлена последовательность действий, в результате которой будет запланировано фоновое задание, ожидающее наступление предварительно настроенного события (См. описание шага #3)
5. Запуск события из ABAP программы
Для того, чтобы выполнить запуск события я создам программу, где будет осуществлен вызов функционального модуля BP_EVENT_RAISE
См. BP_EVENT_RAISE: Trigger an Event from an ABAP Program
REPORT zdemo_job_schedule.
DATA: lv_start TYPE boolean VALUE abap_false.
IF lv_start EQ abap_true.
CALL FUNCTION 'BP_EVENT_RAISE'
EXPORTING
eventid = 'ZDEMO_EVENT'
* EVENTPARM = ' '
* TARGET_INSTANCE = ' '
* TARGET_MODE = ' '
EXCEPTIONS
bad_eventid = 1
eventid_does_not_exist = 2
eventid_missing = 3
raise_failed = 4
OTHERS = 5.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
Запускаю программу, предварительно проверив, что в транзакции SM37 под моим пользователем не запланировано никаких программ
Обратите свое внимание на то, что если при планировании фонового задания вы не активируете параметр Periodic Job
Фоновое задание будет выполнено только один раз. И вот яркое тому доказательство
6. Программа BTC_EVENT_RAISE
Инициировать созданное событие можно также через стандартную программу BTC_EVENT_RAISE. Об этом небольшой видеоряд ниже
7. Логирование вызова событий
Для ваших нужд может быть активировано логирование выполненных вызовов событий
Пробуем
Если в этом нет необходимости, лог можно деактивировать.
Спасибо за внимание. Обнимаю вас по-новогоднему. С любовью, ignatov