ABAP 在程式中啟動後台JOB

2021-07-22 05:23:27 字數 3418 閱讀 8801

data

: lv_job_name 

like 

tbtco

-jobname

, "作業名

lv_job_nr 

like 

tbtco

-jobcount

, "作業號

lv_job_released 

type c,

lv_job_start_sofort 

type c,

lv_print_parameters 

type 

pri_params.

data

:lt_rspar 

type 

table 

of rsparams,

lw_line 

like 

line 

of lt_rspar.

"如果是要傳給parameter  根據需求設定螢幕引數

lw_line-selname 

= 'p_monat'

.lw_line-kind 

= 'p'

.lw_line-

sign 

= 'i'

.lw_line-option 

= 'eq'

.lw_line-low 

= p_monat.

lw_line 

to lt_rspar.

"傳值給 select-option

lw_line-selname 

= 's_werks'

.lw_line-kind 

= 's'

.lw_line-

sign 

= 'i'

.lw_line-option 

= 'eq'

.lw_line-low 

= '1000'.

lw_line 

to lt_rspar.

lw_line 

to lt_rspar.

"job 名稱

lv_job_name 

= job_name 

."開啟job 通過job name 獲得job號

call 

function 

'job_open'

exporting

jobname 

= lv_job_name

importing

jobcount 

= lv_job_nr

exceptions

cant_create_job = 1

invalid_job_data = 2

jobname_missing = 3

others = 4

.if 

syst-subrc = 0

."呼叫需要跑job的程式

submit 

(lv_job_name)

with 

selection-table 

lt_rspar 

user syst-uname 

" mandatory

via job lv_job_name 

number 

lv_job_nr 

and 

return

."執行結束 

關閉job

if sy-subrc = 0

.call 

function 

'job_close'

exporting

jobcount 

= lv_job_nr

jobname 

= lv_job_name

strtimmed 

= 'x'

importing

job_was_released 

= lv_job_released

exceptions

cant_start_immediate = 1

invalid_startdate = 2

jobname_missing = 3

job_close_failed = 4

job_nosteps = 5

job_notex = 6

lock_failed = 7

others = 8

.if 

syst-subrc 

<> 0.

message 

'關閉後台作業出錯' 

type 

'i'.

else

.message 

'後台job開始執行' 

type 

'i'.

endif

.endif

.endif.

附: job相關系統表:tbtc*

job的狀態: 可以使用系統函式檢視  

bdl_read_job_status  或者是自己去表 tbtco 中查詢根據status 字段判斷是否完成  f 就是結束 a 出錯終止  r 是執行中

job日誌檢視:系統中的日誌好像是沒有存放在系統表而是檔案中,可以通過函式 bp_joblog_read 獲取,傳入job名和job編號就可以獲得日誌資訊。

"獲取失敗日誌

data

:lt_log 

type 

table 

of tbtc5 

with 

header 

line.

call 

function 

'bp_joblog_read'

exporting

client 

= sy-mandt

jobcount 

= lw_job-jobcount

jobname 

= lw_job-jobname

tables

joblogtbl 

= lt_log

exceptions

cant_read_joblog = 1

jobcount_missing = 2

joblog_does_not_exist = 3

joblog_is_empty = 4

joblog_name_missing = 5

jobname_missing = 6

job_does_not_exist = 7

others = 8

.if 

sy-subrc 

<> 0.

message 

id sy-msgid 

type 

sy-msgty 

number 

sy-msgno

with 

sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

endif.

在Linux中後台執行程式

由於網路等原因,當ssh鏈結斷開後,該會話中的程序會收到核心發出的sig hup 掛機 訊號,預設情況下程式會結束執行。所以想要長期穩定地執行乙個程序,可以將其放入後台。一種簡單方法是用shell的作業控制機制來實現。執行python test.py時,只需在shell中輸入以下命令 nohup p...

在iOS中後台執行程式

ios預設是不支援程式的後台執行的,但是也提供了一些途徑來使得程式能後在切入後台時也正常工作。其中拋開常見的後台 等擦邊球手段,比較正規的就是聲請乙個後台任務,但是任務的執行時間被限制為10分鐘,並且在10分鐘之後再次聲請也不會成功。本文採用的手段就是在聲請10分鐘的任務時間到達時利用乙個while...

Python 後台啟動程式

在python開發工作中我們會遇上乙個程式或者指令碼執行時間過長的問題,在linux程式下操作時間超過180分鐘會自動退出,這樣就會中斷我們的程式,前功盡棄的感覺真的難受 那有什麼好的解決方案呢?我們可以 方案1,將程式或者介面部署到nginx伺服器上,這樣程式進入listening 持續監聽 狀態...