Всем привет!

Меня зовут Юрий, я консультант SAP ERP. Как любой IT-специалист, я постоянно ищу пути автоматизировать рабочие дела.

Один из подходящих инструментов — фоновое задание. Оно позволяет не наблюдать на мониторе за выполнением программы, а откладывать запуск, например, до ночи, чтобы не нагружать систему тяжёлой операцией днём, планировать регулярные операции… В общем, преимуществ много для любого специалиста, который регулярно ставит задания в SAP ERP.

Далее расскажу, как создавать задания двумя способами и как их отслеживать. А если вы только начинаете разбираться в SAP ERP, дам несколько полезных советов, которые сильно упростят работу и помогут использовать весь потенциал фоновых заданий. 

Что такое фоновое задание

Это задание программе: запускаться и работать самостоятельно, без пользователя. Преимущество очевидное — пока программа выполняет фоновое задание, можно делать другие дела.

К сожалению, как бывает в жизни, и тут есть некоторые ограничения. Например, невозможно выполнение в фоне операций, которые требуют ввод данных от пользователя или вывод информации на экран, а еще в фоне нельзя запускать enjoy-транзакции. Но зато фоновые задания сильно помогают формировать большие отчёты и обрабатывать крупные массивы данных. 

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

Создать фоновое задание можно несколькими способами. Более быстрый — запустить отчет, но указать, что формироваться он должен будет в фоновом режиме. Тогда часть параметров в задании система заполнит автоматически (например, имя). Для этого нужно воспользоваться пунктом меню «Программа — Фоновое выполнение», если он есть:

Система спросит условие запуска, а все остальные данные заполнит сама. Условия бывают такие:

  • «Немедленно».

  • «Дата/время» — запустится в указанное время. Также можно поставить «время отсечения» — например, если задание запланировано на 2 часа ночи, по каким-либо причинам к 3 часам ещё не запустилось, но запускать его так поздно уже не нужно, можно отсечь такой «запоздалый» запуск именно этой настройкой.

  • «После Здн» — запустится по окончании другого фонового задания.

  • «После события» — запустится по наступлении события.

  • «При режиме работы» — запустится, когда система перейдет в указанный режим работы.

Здесь же можно установить повторение фонового задания через определённые периоды. Это полезно для программ, обслуживающих систему или обрабатывающих данные.

Правда, запланировать периодическое задание после другого периодического задания нельзя, потому что на самом деле «после задания» — это частный случай «после события», где событие — это SAP_END_OF_JOB с уникальным указателем на «задание-условие». Поскольку при следующем запуске задания-условия ключ у него будет уже другим, старый указатель SAP_END_OF_JOB не сработает. Но есть несколько решений. Например, в конце «задания-условия» добавить вызов уникального события (которое больше нигде не используется) с помощью BTC_EVENT_RAISE, а нужное нам задание запускать уже с условием «после события».

Как еще можно создать фоновое задание

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

Для этого нужно воспользоваться транзакцией «SM36 Фоновый запрос» и создать новое задание (или скопировать существующее). В таком случае помимо уже описанных условий запуска потребуется указать и другие данные. В первую очередь: имя задания, класс задания (приоритет) и цель выполнения:

Цель выполнения — это инстанция или группа серверов.

Класс задания не влияет на выполнение, а важен в момент запуска. Если на одно и то же время запланированы несколько заданий, то запускать их система будет в порядке приоритета: сначала A, потом B, потом C. Ещё возможно выделить инстанцию только под фоновые задания определённого класса.

Далее нужно выбрать непосредственно сам шаг или шаги — что же будет выполняться в нашем фоновом задании.

Если программа или отчёт требуют заполнить какие-либо данные перед выполнением, такие данные должны быть сохранены как вариант. Учтите: когда мы создаём задание через меню «Программа — Фоновое выполнение», в шаг автоматически записывается текущая программа, а в вариант сохраняется заполнение экрана на момент выбора пункта меню.

В варианте можно использовать переменные, например, задать дату не в явном виде, а через переменную:

Стоит отметить, что можно выбрать ABAP-программу в качестве шага, благодаря чему возможна достаточно сложная логика выполнения. Например, нам нужно запланировать регулярный запуск операции, время выполнения которой заранее не известно, но сделать ещё и так, чтобы одновременно выполнялась только одна такая операция. В этом нам поможет программа RSBTONEJOB2, мы планируем в фоновом задании именно её запуск (а не нужной нам операции), и задаем ей параметры:

  • какое фоновое задание проверять (если задание с таким именем всё ещё активно, останавливаем работу, а вот если нет — продолжаем),

  • какую программу и с каким вариантом запускать, если проверку выше об отсутствии активного задания мы прошли — именно эта программа и будет выполнять нужную нам операцию.

 Таким образом можно избежать параллельной работы одной и той же программы, если необходимо исключить данный риск.

Где отследить фоновое задание?

Для этого есть транзакция «SM37 Обзор выборки заданий», у которой есть простой и расширенный режимы выбора (отличаются количеством условий для поиска). Помимо имени задания и логина пользователя, от чьего имени шло выполнение, нужно выбрать статус фонового задания. Они бывают такими:

  • Запланировано (Scheduled) — статус фонового задания после создания, когда ещё не заполнено условие запуска. Изменять можно только ФЗ с этим статусом.

  • Деблокировано (Released) — все данные по заданию указаны, в том числе условие для запуска. Чтобы отредактировать такое задание, сначала нужно сменить статус: в контекстном меню пункт «Деблокировано → Запланировано».

  • Готово (Ready) — все условия запуска соблюдены, задание ожидает своей очереди (например, ещё не выполнилось задание с более высоким приоритетом). Как правило, этот статус держится недолго и вскоре сменяется статусом «активно». Если возникли какие-то проблемы и статус завис, можно его перепроверить через SM37: пункт меню «Задание → Проверить статус».

  • Активно (Active) — этот статус имеют фоновые задания в момент выполнения. Приостановить их нельзя, можно только прервать.

Итогом выполнения фонового задания станет один из двух статусов:

  • Завершено (Finished) — выполнилось без ошибок.

  • Отменено (Cancelled) — если возникли ошибки (можно посмотреть журнал, чтобы увидеть, какие именно).

После того как мы заполнили условия выбора заданий, запускаем поиск и видим журнал. В нём у каждого задания отображается статус, время старта и окончания, а по двойному клику можно открыть детальный просмотр именно этого задания:

Здесь виден журнал сообщений (если возникнут ошибки, они будут именно там), выполненные шаги и даже вариант заполнения экрана, если таковой имелся:

Результат выполнения фонового задания система может отправить на почту, сохранить в спул, а в зависимости от версии, и в базу данных.

Итак, в статье вы узнали общую информацию о фоновых заданиях в SAP ERP, посмотрели несколько способов их создания, ознакомились с тем, как можно отследить результаты выполнения фоновых заданий, рассмотрели примеры нетипичных требований к заданиям и что можно сделать в таких случаях. Надеюсь, эта информация окажется полезной и теперь вы сможете автоматизировать больше операций, чем раньше. 

Комментарии (1)


  1. korvax
    08.12.2023 05:31

    Статья полезная, но пришлось перечитать 4 раза, пока понял ))

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