Использование события для запуска фонового задания

Как выполнить настройку события для запуска фонового задания через работу с ABAP программой

В системе 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