Запрет повторного запуска
Иногда требуется запретить одновременный запуск нескольких фоновых заданий с одним и тем же именем, делается это путём отслеживания статуса в таблице tbtco. Пример подобного решения в небольшой обёртке:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
*&---------------------------------------------------------------------* *& Report ZSM_STOP_DOUBLE_PLAN *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT zsm_stop_double_plan. IF zcl_sm_job_runtime=>get_instance( )->is_job_running( ). DATA(ls_rt_info) = zcl_sm_job_runtime=>get_instance( )->get_runtime_info( ). MESSAGE e001(00) WITH |Job { ls_rt_info-jobname } is running|. ELSE. WAIT UP TO 100 SECONDS. ENDIF. |
В данном примере имя задания определяется в Runtime. Репозитарий с полным кодом.