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

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

VirVit One comment
Заметки на полях Программы

Привет.

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

Сначал мы создаем свое событие в 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 писал заметку.

 

One comment

Calm

Сентябрь 25, 2017 в 10:57 дп

Круто 🙂

 

Вы должны быть авторизованы, чтобы оставить комментарий.