====== Jobs ====== __Création__ : ''SM36'' __Monitoring__ : ''SM37'' ''SM39'' Job Analysis ''SM62'' Maintain Events ''SM64'' Release of an Event ''SM65'' Background Processing Analysis Tool ===== Déclenchement ===== Un job peut être exécuté une fois ou plusieurs fois (= périodique). Il peut être déclenché manuellement, à la volée, schedulé ou encore par un évènement. ==== A la volée ==== Cette méthode permet de créer dynamiquement un job sans avoir à le créer en ''SM36'' au préalable. Exemple : FUNCTION zcreate_job. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" REFERENCE(I_JOBNAME) TYPE TBTCJOB-JOBNAME *" REFERENCE(I_REPID) TYPE REPID *" REFERENCE(I_VARIANT) TYPE VARIANT OPTIONAL *"---------------------------------------------------------------------- DATA lv_jobcount TYPE btcjobcnt. CALL FUNCTION 'JOB_OPEN' EXPORTING jobname = i_jobname IMPORTING jobcount = lv_jobcount EXCEPTIONS cant_create_job = 1 invalid_job_data = 2 jobname_missing = 3 OTHERS = 4. IF sy-subrc <> 0. RAISE others. ENDIF. CALL FUNCTION 'JOB_SUBMIT' EXPORTING authcknam = sy-uname jobcount = lv_jobcount jobname = i_jobname report = i_repid variant = i_variant EXCEPTIONS bad_priparams = 1 bad_xpgflags = 2 invalid_jobdata = 3 jobname_missing = 4 job_notex = 5 job_submit_failed = 6 lock_failed = 7 program_missing = 8 prog_abap_and_extpg_set = 9 OTHERS = 10. IF sy-subrc <> 0. RAISE others. ENDIF. CALL FUNCTION 'JOB_CLOSE' EXPORTING jobcount = lv_jobcount jobname = i_jobname EXCEPTIONS cant_start_immediate = 1 invalid_startdate = 2 jobname_missing = 3 job_close_failed = 4 job_nosteps = 5 job_notex = 6 lock_failed = 7 invalid_target = 8 OTHERS = 9. IF sy-subrc <> 0. RAISE others. ENDIF. ENDFUNCTION. ==== Déclenchement sur évènement ==== [[http://wiki.scn.sap.com/wiki/display/ABAP/SAP+Event|Resource]] Cette méthode a l'avantage de pouvoir être déclenché depuis une update task (contrairement à la création dynamique). Mise en place : - Créer l'évènement en ''SM62''. - Créer le job en ''SM36''. - Appeler la méthode ''cl_batch_event=>raise'' avec l'ID job nouvellement créé dans le programme déclencheur. ===== Monitoring des jobs en ABAP ===== Exemple : rechercher le nombre de jobs en cours avec un nom particulier : SELECT COUNT( * ) INTO lv_nbjob FROM tbtcp WHERE jobname = 'ZPLOP' AND status = 'R'. ===== Détecter si l'exécution se déroule en arrière-plan (background) ===== Ou mieux : détecter si un GUI est disponible : CALL FUNCTION 'GUI_IS_AVAILABLE' IMPORTING return = rv_available.