Как нам удалось сохранить файл локально в фоне? | ABAP
Бизнес задача
Каждый день, утром сформировывать заполненный Excel файл и предоставлять его менеджерам компании.
Условия
Компания работает 24 часа в сутки, менеджерам компании некогда заходить в программу и нажимать на кнопку “Выгрузить файл”.
Решение
Настроить запуск программы на определенное время в фоновом режиме и на ежедневной основе отправлять менеджерам на почту сформированный файл. После того, как в тести столкнулись с ограничениями на размер вложения письма, сначала от SAP (что решилось настройкой) следом от Outlook-а. Было принято решение отойти от писем.
В компании уже была настроена общая сетевая папка для менеджеров, поэтому осталось понять, как соединить формирование файла и выгрузка его с фоновым режимом. Если с формирование файла проблем нет, то выгрузка файла на фронт не работала с фоновым режимом. Но по названию понятно, что нам удалось это сделать, вот так:
- Формирование файла с помощью ZXLWB_WORKBENCH
- Сохранение файла на Application Server с помощью OPEN/CLOSE DATASET
- Копирование файла с Application Server-а в локальную общую папку при помощи вызова внешней команды COPY в SXPG_COMMAND_EXECUTE
Формирование файла
Открываем транзакцию ZXLWB_WORKBENCH, создаем или импортируем готовый шаблон файла Excel, подробную инструкцию по работе с данной транзакцией можно посмотреть здесь: XLSX Workbench
Сохранение файла на Application Server
Используем конструкцию OPEN/CLOSE DATASET. Которая позволит наш сформированный файл сохранить на апликейшен сервере.
Где путь из апликейшена можно посмотреть по транзакции AL11.
Копирование файла с Application Server-а в локальную общую папку
Для того, чтобы использовать команду из вне, нужно её создать в транзакции SM69. Указываем команду CMD /c copy.
Теперь наша программа готова, к тому, чтобы её запускать в фоне и файл будет формироваться в общей папке.
P.S. В моём случае файл из апликейшена после копирования надо удалять, это уже можно сделать с помощью DELETE DATASET или с помощью ФМ ‘EPS_DELETE_FILE’.