Фоновое задание – это неинтерактивный процесс, который выполняется за обычными интерактивными операциями. Они работают параллельно и не мешают интерактивным процессам и операциям.
Это запланировано от SM36. Вы можете проанализировать его из SM37, просмотрев его журнал работы.
Преимущества фоновой работы
- Это уменьшает ручное усилие и автоматизирует задачу.
- Это может быть запланировано по выбору пользователя.
- Это уменьшает взаимодействие с пользователем и может работать в фоновом режиме без участия пользователя
- После того, как вы определили вариант для фонового задания, пользователю не нужно беспокоиться о вводе значений в поле. Таким образом, путаница пользователей также уменьшается.
- Идеально подходит для трудоемких / ресурсоемких программ, которые могут быть запланированы для запуска в ночное время (при низкой загрузке системы).
Фоновые задания делятся на три категории –
- Класс A (высокий / критический приоритет) : – Некоторые задачи являются срочными или критическими и должны быть запланированы с приоритетным заданием класса A. Приоритет класса А резервирует один или несколько фоновых рабочих процессов. Пользователи должны решить, сколько фоновых рабочих процессов следует назначить приоритетному заданию класса А. Предположим, что пользователь выбирает 2 фоновых рабочих процесса для этой категории, затем доступные фоновые рабочие процессы для класса B и C = (Общее количество рабочих процессов, установленных в режимах работы RZ03) – (Фоновые рабочие процессы, разрешенные для категории класса A).
- Класс B (средний приоритет) : – После выполнения заданий класса A задание класса B начнется в фоновом режиме перед заданиями класса C.
- Класс C (низкий приоритет) : -Он запускается после выполнения заданий класса A и класса B.
Возможный статус фоновых заданий
- Запланировано: – Вы определили имя и вариант программы, но не определили условия запуска, такие как Дата начала, Дата окончания, Частота и т. Д. Это означает, что вы не определили, когда задание должно быть запланировано в системе.
- Выпущено: – Все необходимые критерии выполнены для определения должности. Условие запуска должно быть для задания, чтобы быть в состоянии выпуска.
Готов: – Все необходимые условия выполнены для запуска задания в фоновом рабочем процессе. Но планировщик заданий поместил задание в очередь, потому что он ожидает освобождения фонового рабочего процесса.
SAP — Schedule ABAP program to run in background
Активно: – Работа запущена в фоновом режиме. Мы не можем изменить статус задания, когда оно находится в активном состоянии.
Закончено: – Задание выполнено успешно. Это означает, что задание выполнено без ошибок.
Отменено: – Для этого есть две возможности. Администратор принудительно отменил задание или может возникнуть проблема с заданием. Вы можете исследовать это из журналов вакансий.
Как запланировать фоновую работу?
Вы можете запланировать фоновое задание, используя SM36 . Запланированные или немедленные работы могут быть запланированы.
Включение принудительной работы приложений в фоновом режиме на телефонах samsung galaxy
Шаг 1) Выполнить Т-код SM36 .
Шаг 2) Заполните имя задания, приоритет (A / B / C) и целевой сервер. Фоновые задания, запланированные на целевом сервере, выполняются на этом сервере. Основной целью определения целевого сервера является балансировка рабочей нагрузки.
Шаг 3) Нажмите « Получатель списка спула» . Вы получите вывод в свой почтовый ящик. Вы можете проверить электронную почту от SBWP.
Шаг 4 ) Вставьте свое имя пользователя SAP и нажмите кнопку копирования.
Шаг 5 ) Нажмите кнопку Шаг , чтобы определить программу ABAP, детали варианта и т. Д.
Шаг 6) Определите название программы, детали варианта.
- Введите название вашей программы, имя варианта в поле. Если вы не создали вариант согласно вашему требованию, оставьте его пустым.
- Нажмите кнопку Сохранить.
Шаг 7) После того, как вы запланировали работу, вы увидите следующий экран.
Шаг 8) Нажмите Условия начала, чтобы заполнить дату начала, дату окончания, периодичность и т. Д. Для задания. Если вы не укажете условие запуска, то задание всегда останется в запланированном состоянии . Работа в запланированном состоянии никогда не будет выполняться.
- Нажмите на дату / время (для периодических работ) . Если вы нажмете «Немедленно», то работа начнется сразу же. Но это не будет установлено как периодическая работа. Это как « нажми и беги».
- Определите дату / время начала работы, дату / время окончания. Задание будет выпущено только после того, как оно соответствует запланированной дате / времени начала .
- Нажмите периодические значения.
Шаг 9) Нажмите на Почасовой / Ежедневный / Еженедельный период, чтобы определить частоту работы согласно вашему требованию. Мы выберем Другой период
Шаг 10) Здесь вы указываете повторяющиеся критерии задания. Например, вы можете запускать задание через каждые 5 дней с даты начала. Здесь мы выбираем работу для запуска каждые 10 минут
Шаг 11) Нажмите на кнопку Сохранить .
Шаг 12) Нажмите на сохранить еще раз.
Шаг 13) Нажмите сохранить снова
Шаг 14) После определения шага задания и условий запуска появится следующее окно.
Шаг 15) Нажмите сохранить.
Шаг 16) Перейти к SM37 , чтобы узнать о состоянии работы.
Шаг 17) Выберите ваши критерии для работы, которую вы хотите отслеживать.
- Укажите ваше имя и имя пользователя, который запланировал работу.
- Выберите статус работы.
- Укажите диапазон дат. В нашем сценарии мы просто указываем дату окончания, сохраняя дату открытия открытой.
Шаг 18) Вы получите следующий экран. Посмотрите на статус, это означает, что условия запуска соблюдены, и задание находится в очереди, ожидая освобождения фонового рабочего процесса.
Как перенести фоновую работу
Перепланированные задания не будут выполняться в будущем. Помните, вы не можете отменить задание, когда оно находится в активном состоянии.
Шаг 1) Выполнить SM37.
Шаг 2) Заполните критерии.
- Имя задания и имя пользователя, под которым запланировано задание.
- Выберите статус. Чтобы отменить задание, вы можете выбрать только статус Выпущено / Готов.
- Укажите диапазон дат.
- Нажмите кнопку Выполнить (F8).
Шаг 3) Выберите указанное задание и нажмите Работа -> (Выпущено -> Запланировано).

Шаг 4) Вы найдете сообщение в строке состояния, как только вы нажмете « Выпущено -> Запланировано ».
Источник: coderlessons.com
Использование события для запуска фонового задания
В системе SAP присутствует возможность запуска фоновых заданий посредством инициации события. Эти события должны быть предварительно настроены, и в последующем могут быть использованы для вызова, например, из ABAP программы. Ниже я разберу небольшой пример, демонстрирующий такую возможность.
0. Мат часть
1. Задача
Выполнить запуск фонового задания посредством инициации события. Инициировать событие необходимо через ABAP программу.
2. Исходные данные
Для демонстрации в этой заметке в фоновом режиме я буду запускать отчет, доступный для работы из транзакции S_PH0_48000450. Для него же настроен вариант запуска.
3. Создание события
Создание нового события выполняется посредством работы с транзакцией SM62
4. Планирование фонового задания
На следующем видеофрагменте представлена последовательность действий, в результате которой будет запланировано фоновое задание, ожидающее наступление предварительно настроенного события (См. описание шага #3)
5. Запуск события из ABAP программы
Для того, чтобы выполнить запуск события я создам программу, где будет осуществлен вызов функционального модуля BP_EVENT_RAISE
Запускаю программу, предварительно проверив, что в транзакции SM37 под моим пользователем не запланировано никаких программ
Обратите свое внимание на то, что если при планировании фонового задания вы не активируете параметр Periodic Job

Фоновое задание будет выполнено только один раз. И вот яркое тому доказательство
6. Программа BTC_EVENT_RAISE
Инициировать созданное событие можно также через стандартную программу BTC_EVENT_RAISE. Об этом небольшой видеоряд ниже
7. Логирование вызова событий
Для ваших нужд может быть активировано логирование выполненных вызовов событий
Если в этом нет необходимости, лог можно деактивировать.
Спасибо за внимание. Обнимаю вас по-новогоднему. С любовью, ignatov
Источник: signatov.com
ABAP Blog
Из-под покрова тьмы ночной,
Из чёрной ямы страшных мук
Благодарю я всех богов
За мой непокорённый дух.
И я, попав в тиски беды,
Не дрогнул и не застонал,
И под ударами судьбы
Я ранен был, но не упал.
Тропа лежит средь зла и слёз,
Дальнейший путь не ясен, пусть,
Но всё же трудностей и бед
Я, как и прежде, не боюсь.
Не важно, что врата узки,
Меня опасность не страшит.
Я — властелин своей судьбы,
Я — капитан своей души.
\ William Ernest Henley
Новое
- Получение инстанции cl_gui_alv_grid для SALV 11.09.2021
- Introduction to ABAP in the Cloud 18.08.2021
- Getting Started with FPM BOPF Integration 01.06.2021
- 30. How to Use Authority Checks in Business Object Processing Framework 29.05.2021
- 29. BOPF Extensibility 29.05.2021
- 28. BOPF Enterprise Procurement Model (EPM) 29.05.2021
- 27. BOPF Integration 29.05.2021
- 26. BOPF Business Configuration Objects 29.05.2021
- 25. BOPF Performance 29.05.2021
- 24. BOPF Supportability 29.05.2021
Последние комментарии
Vlad 21.06.2023 в 11:33 на Простые трансформации Автор очень скромен, и думает, что все такие же умные как и он сам. По сути статья помогает разработчикам найти ответы на возникающие у них вопросы. Для функционального консультанта — темный лес. Автор зачем то использует свою терминологию, не удосуживаясь вопросами определения терминов. Для примеро.
Инопланетянин 28.04.2023 в 13:10 на Динамические таблицы в ABAP простой способ, если структура известна и достаточна: CREATE DATA lo_data TYPE TABLE OF (‘PLAF’)
Анна 17.04.2023 в 14:48 на ABAP Best Practice Спасибо вам большое за эту статью. Очень пользуюсь.
Артем 20.03.2023 в 20:51 на Выгрузка в Excel через cl_fdt_xl_spreadsheet Метод создаёт 3 дополнительных таба. Можно как-то без них?
Татьяна 15.02.2023 в 17:06 на Модификация значений внутренней таблицы в одну строку Автора этого блога уже более года нет в живых. Светлая память!
Фоновые задания используя ABAP Objects (Часть 1)
В статье будут рассмотрены примеры создания фоновых заданий в ABAP используя классы из пакета SBTJOBAPI (CL_BP_ABAP_JOB, CL_BP_JOB_FACTORY и др.). Как управлять фоновыми заданиями используя «старое» API вы можете посмотреть тут. Старое в кавычках потому что новое лишь обертка над ним.
Стандартный пример по работе через классы с фоновыми заданиями программа: BP_JOBAPI_TUTORIAL. К сожалению в нем не рассмотрено как создавать фоновые задания с несколькими шагами, об этом я расскажу во второй части статьи.
И так, в стандартной транзакции по определению фоновых заданий в окне создания шага мы можем создать 1 из 3 видов шагов:

Типы шагов
На уровне классов за определение каждого из типа шагов отвечают классы:
- Запуск ABAP программ — CL_BP_ABAP_JOB
- Запуск команд — CL_BP_EXTCMD_JOB
- Запуск внешних программ — CL_BP_EXTPRG_JOB
Для создания экземпляров каждого из них рекомендую воспользоваться классом cl_bp_job_factory и его статическими методами:
- MAKE_ABAP_JOB( ) для создания объекта CL_BP_ABAP_JOB
- MAKE_EXTCMD_JOB( ) для создания объекта CL_BP_EXTCMD_JOB
- MAKE_EXTPRG_JOB( ) для создания объекта CL_BP_EXTPRG_JOB
Разница между ними и простым CREATE OBJECT в том что они задают тип для задачи и устанавливают состояние в редактируемое.
Последовательность действий для создания фонового задания состоящего из одного шага и выполняемого немедленно:
- Определиться с видом выполняемой задачи
- Создать экземпляр класса определяющего ее вид
- Задать основные параметры для задачи (Тип, Имя, Пользователь, Язык)
- Задать специфичные от вида задачи параметры (Отчёт, вариант, и т.п.)
- Запустить задачу на выполнение.
Пример простого запуска одно шаговой задачи с выполнением ABAP программы:
DATA : lo _ abapjob TYPE REF TO CL _ BP _ ABAP _ JOB .
lo _ abapjob = cl _ bp _ job _ factory = > MAKE _ ABAP _ JOB ( ) .
» Устанавливаем имя для фонового задания
lo _ abapjob — > set_name ( i _ name = ‘ZTESTJOB’ ) .
» Определяем шаг запуска ABAP отчёта
lo _ abapjob — > set_report ( i _ report = ‘ZMMTEST’ ) .
» Вариант с которым он будет запущен
lo _ abapjob — > set_variant ( i _ variant = ‘TEST’ ) .
» Под каким пользователем он будет выполнен
lo _ abapjob — > set_effective_user ( i _ authcknam = sy — uname ) .
» Под каким языком
lo _ abapjob — > set_language ( i _ language = sy — langu ) .
» Запускаем к немедленному выполнению
lo _ abapjob — > start ( ) .
После запуска если параметры шага указаны верно будет создана и запущена на выполнение фоновая задача. Для других типов задач код будет аналогичным за исключением заполнения специфичных для них параметров. В случае когда необходимо не запускать, а оставить задание в состоянии «запланировано» можно воспользоваться методом plan_job( ).
Триггеры
Под триггерами понимаются условия запуска, в стандартном определении задания это выглядит следующим образом:

На уровне классов за определение каждого из типа триггера отвечают следующие классы:
- После события — cl_tc_evt_trigger
- Дата/время — cl_tc_date_trigger
- При режиме работы — cl_tc_opmode_trigger
- Для запуска немедленно триггера нет (см. пример выше)
- Для запуска по рабочему календарю — cl_tc_onworkday_trigger
- После задания — cl_tc_afterjob_trigger
- Для запуска с периодичностью триггера нет (Пример создания такого задания будет рассмотрен во второй части статьи)
По аналогии с классами определяющими типы задач рекомендуется для создания триггеров использовать класс cl_tc_trigger_factory и его статические методы:
- MAKE_OPMODE_TRIGGER — триггер для режима работы
- MAKE_EVENT_TRIGGER — триггер после события
- MAKE_DATE_TRIGGER — триггер даты/времени
- MAKE_ONWORKDAY_TRIGGER — триггер по рабочему календарю
- для триггера запускающегося после задания нет подходящего метода (первый привет индусам), его необходимо создавать с помощью CREATE OBJECT.
Далее простой пример как прицепить к предыдущему заданию триггер на дату и запустить его:
Источник: abap-blog.ru