SAP后台JOB的Submit & EVENT JOB

时间:2023-03-09 08:53:39
SAP后台JOB的Submit & EVENT JOB

SM35执行一个后台作业后,想及时停止,

运行SM37后,点击ctr + F1停止活动的作业,系统根本就没反应。

解决方法:

第一步:SM50,

找到,Ty.列为BGD的(Background),然后再找到你刚运行的那个后台Job的行,选中;然后在菜单点击:Process---Cancel with core. 即可。

第二步:SM37查看Background Job,应该为“取消”状态。

第三步:SM35,选中Session Name,点击小绿旗release即可。

http://blog.sina.com.cn/s/blog_76c57b480100rumm.html

How to define event background job in SAP?

以下为操作中会用到Function和T-code:

Function: BP_EVENT_RAISE

T-code:SM62、SM36、SM37

1. 首先来定义一个Event ID。

a.执行SM62

有关Event定义没有严格的要求,只要能辨别出是你的,用来触发那个Job就行了。

SAP后台JOB的Submit & EVENT JOB

2. 为被触发程式(Program2)定义Background Job。

执行SM36(这里记录的是关键步骤,有疑问请复习一下SM36的使用。)

Start condition > After event >

通过红色标记选项处先出事先定义的Event,完成后保存。

SAP后台JOB的Submit & EVENT JOB

3. 在触发程式(Program1)中调用激活触发事件的Function。

"以下是在程式开始定义的一个变量,也可以是一个常量。

PARAMETERS: P_EVENT() TYPE C OBLIGATORY                           

                       DEFAULT 'Evt_TEST'.

"以下是在程式最后定义的一个Group,也可以单一调用。

FORM AUTO_CREAT_WO_BY_GROUP. 

DATA: WRK_TIMES() TYPE C . 

DATA: WRK_EVENT() TYPE C .

  DO P_GROUP TIMES.     

WRK_TIMES = WRK_TIMES + .    

CONCATENATE P_EVENT WRK_TIMES INTO WRK_EVENT .    

CALL FUNCTION 'BP_EVENT_RAISE'          

EXPORTING EVENTID = WRK_EVENT          

OTHERS = 

.   

ENDDO.

ENDFORM. 

* 操作步骤3,保证程式中定义常量或者变量中已定义的或者将要定义的Event值要和你通过SM62定义的Event名称要一致

JOB_SUBMIT 示例程序:设置后台Job,更多功能请看函数组:BTCH

 *&---------------------------------------------------------------------*
*& Report Z_BARRY_SET_JOB *
*& *
*&---------------------------------------------------------------------*
*& 设置后台Job,更多功能请看函数组:BTCH *
*&---------------------------------------------------------------------* REPORT z_barry_set_job . DATA: jobcount LIKE tbtcjob-jobcount.
DATA: abort TYPE c,
finish TYPE c,
prelim TYPE c,
ready TYPE c,
run TYPE c,
sched TYPE c. PARAMETERS: p_name LIKE tbtcjob-jobname OBLIGATORY DEFAULT 'Z_BARRY_TEST_JOB',
p_date LIKE sy-datum OBLIGATORY,
p_time LIKE sy-uzeit OBLIGATORY.
SELECT-OPTIONS s_rept FOR sy-repid NO INTERVALS OBLIGATORY . START-OF-SELECTION.
CALL FUNCTION 'JOB_OPEN' "定义一个Job
EXPORTING
jobname = p_name
IMPORTING
jobcount = jobcount "Job id
EXCEPTIONS
cant_create_job =
invalid_job_data =
jobname_missing =
OTHERS = .
IF sy-subrc <> .
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF. LOOP AT s_rept .
CALL FUNCTION 'JOB_SUBMIT' "Scheduled 这个Job
EXPORTING
authcknam = sy-uname
jobcount = jobcount
jobname = p_name
report = s_rept-low
* VARIANT = 'TEST'
EXCEPTIONS
bad_priparams =
bad_xpgflags =
invalid_jobdata =
jobname_missing =
job_notex =
job_submit_failed =
lock_failed =
program_missing =
prog_abap_and_extpg_set =
OTHERS = .
IF sy-subrc <> .
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDLOOP. CALL FUNCTION 'JOB_CLOSE' "Release 这个Job
EXPORTING
jobcount = jobcount
jobname = p_name
sdlstrtdt = p_date
sdlstrttm = p_time
EXCEPTIONS
cant_start_immediate =
invalid_startdate =
jobname_missing =
job_close_failed =
job_nosteps =
job_notex =
lock_failed =
OTHERS = .
IF sy-subrc <> .
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF. CALL FUNCTION 'SHOW_JOBSTATE'
EXPORTING
jobcount = jobcount
jobname = p_name
IMPORTING
aborted = abort
finished = finish
preliminary = prelim
ready = ready
running = run
scheduled = sched
EXCEPTIONS
jobcount_missing =
jobname_missing =
job_notex =
OTHERS = .
IF sy-subrc <> .
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF. WRITE : / 'Canceled :' , abort ,
/ 'Finished :' , finish,
/ 'Scheduled Temporarily :' , prelim,
/ 'Ready for Execution :' , ready,
/ 'Active :' , run,
/ 'Scheduling Released :' , sched.

后台作业信息存储在透明表TBTCP(批作业步骤概述)中,试图V_OP中。

函数组BTCH中有很多方法可以处理。

* 取后台作业记录
  SELECT *
    INTO TABLE LI_OP
    FROM V_OP
    WHERE JOBNAME LIKE 'ZPSMAM_RFC%'
      AND SDLUNAME = SY-UNAME
      AND ( STATUS   = 'A' OR STATUS = 'F' ).

PS:台作业状态(STATUS)信息和参数对照如下:

1  Active       STATUS = R

2  就绪          STATUS = Y

3  已调度的 STATUS = P

4  已释放      STATUS = S

5  已取消      STATUS = A

6   已完成     STATUS = F

7  批准/暂停 STATUS = Z

*  删除后台记录

LOOP AT LI_OP INTO LW_OP.

CALL FUNCTION 'BP_JOB_DELETE'
      EXPORTING
        JOBCOUNT                       = LW_OP-JOBCOUNT
        JOBNAME                        = LW_OP-JOBNAME
*       FORCEDMODE                     = ' '
*       COMMITMODE                     = 'X'

。。。。。。。。。。。

ENDLOOP.
---------------------
作者:SAP剑客
来源:****
原文:https://blog.****.net/zhongguomao/article/details/79091618
版权声明:本文为博主原创文章,转载请附上博文链接!