Делаем свой File Event Scheduler

Привет.

Продолжаем разговор про планировщики заданий. Вот простое решение по автоматизации файловых событий. Если на диске появился файл, который нужно загрузить, то программа генерирует сигнал и запускается загрузчик. Автоматизированно.

Сначал мы создаем свое событие в SM62.

Создаем свои логические файлы (чтобы в случае переезда на новую операционную систему или смены хранилища не менять все исходники). Транзакция FILE.

Сначала логический путь к файлу.

Затем логическое имя файла, которое указывает на физическое имя.

Запускаем в фоне програмку (код ниже) каждые 5 минут. Программка смотрит указанный файл. Если он есть на диске, то вызывает системное событие. На это системное событие мы можем повесить другое задание или поток операций.

Вот и все. Вау эффект достигнут. Если на диске появляется файл, то система выбрасывает событие ZMONEY. Тут же планировщик заданий видит событие и запускает по нему наше задание. В задании мы можем прочитать файл с диска, обработать и удалить.

Соответственно, если у нас 10 разных интефейсов и файлов, которые нужно мониторить, то создаем либо 10 событий (если нам поле параметр события нужно для чего-то использовать своего) и планируем одну и ту же программу с 10 вариантами. Либо в поле параметр события вставляем признак интерфейса (зарплата, кадры, социалка или еще что), а в коде добавляем параметр на селекционник и в вызов ФМ BP_EVENT_RAISE.

Более того, мы можем также вызывать события в другой системе удаленно. Для этого нужно использовать ФМ BP_REMOTE_EVENT_RAISE с указанием удаленной системы. Это круто делать, когда мы в ERP загрузили файлики, а потом вызвали событие в BW для прогрузки данных.

Плюс, есть возможность с уровня самой операционной системы вызывать события с помощью программы sapevent (ноты 2015788 and 2014139). Написали скриптик на PowerShell или юниксовом шелле, в конце запустили событие в SAP.

Плюс, есть возможность вызывать события через веб. Нота 2001336 и дергаем сервис  /default_host/sap/bc/batch/event_raise, чтобы вызвать событие. Тем же curl с уровня операционной системы либо на любом языке программирования.

В качестве улучшайзинга нужно добавить блокировки, чтобы одно и тоже событие два раза не вызывалось, пока файл обрабатывается.

Трудозатраты на реализацию составили 30 минут. 20 из них вспоминал ABAP, 5 писал заметку.