ABAP Daemon Framework

Демоны abap - это фоновые сеансы с неограниченным сроком жизни. Время выполнения которых, зависит только от работы сервера. В случае ошибок, возникших во время работы, демон перезапускается.

Попробуем создать простой демон для примера. Он будет следить за входом пользователя в указанную транзакцию.  По большому, счету это повторение демо-примера от SAP. Можно сразу смотреть там.

Для остальных ниже:

1. Создадим класс ZCL_DAEMON_TEST унаследованный от абстрактного класса CL_ABAP_DAEMON_EXT_BASE.
2. В интерфейсы прописываем IF_ABAP_TIMER_HANDLER - для таймера.
2. Переопределим метод ON_ACCEPT -  он запускается перед запуском  демона и позволяет принять или отклонить запуск. В нашем случае, мы проверяем, что демон запускается именно из нашего класса. 

3. Далее переропределяем метод ON_START. Тут мы получаем значение mv_timeout которое будет служить для периода срабатывания таймера.

3. Переропределяем метод ON_MESSAGE -  срабатывает при получении сообщения. Здесь заполняются атрибуты класса именем искомого пользователя и транзакцией. А также запускаем таймер, по истечении времени которого, сработает событие  ON_TIMEOUT

4. Переопределяем метод ON_TIMEOUT . Ищем нужного пользователя и транзакцию среди активных сеансов. Если находим, выводим сообщение для пользователя запустившего демон. Если нет, Перезапускаем таймер.

5. Далее реализуем три статических метода для Запуска, Передачи сообщения Демону и его Остановки. Думаю, тут особых комментариев не нужно.

Также необходимо добавить некоторые атрибуты и константы в класс

Готово. 
Запускаем демон следующим кодом:

Заходим в транзакцию SE91  и получаем сообщение.
Посмотреть запущенные демоны можно в транзакции SMDAEMON.
Останавливаем демон:

Немного скриншотов:

Подробнее...

 

 

 

 

Добавить комментарий

Ваш адрес email не будет опубликован.