轉自:http://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=217385588
在一些日常業務中,總有一些長時間處理的任務,系統運行這些任務需要一晚甚至一個週末。
這就需要後臺運行單元(background work process)來完成,而且其是不會發生超時(time out) 錯誤的。
進程(job)有下面幾種類型:
時間驅動(Time-driven job):按照用戶預先設定的有時間啓動進程。
事件驅動(Event-Driven job):在一個事件或另一個進程後,該進程啓動。
週期型(periodic job) :在每時或每天,定時執行的進程。
刪除型(deleting job): 爲刪除系統中盈餘的數據的進程,可能會執行較長時間,需要在
後臺進行。
進程的屬性:
Job name:進程的名最長爲32字符。
Job count:爲了去該進程在系統中的唯一性。比如週期性進程的名都是一樣的,
Job name+Job count就能確定其的唯一性。
Step:在該進程內中定義的程序數量。
Start data:啓動的時間點有:立即(immediatlly),指定時間(data/time),
時間(event)…等等。
Job owner:產生該進程的用戶。
Job class:該進程在系統中的執行等級。
Client:決定該進程在哪個Client中執行,有些系統進程必須在Client000中執行。
Target sever:決定該進程在那個服務器中執行,這有助於合理的分配系統資源
進程狀態:
Planned:進程已經被定義,但是還沒有開始。
Release:進程已經開始,但是進程中定義的程序還沒有被執行。
Ready: 進程已經開始,所有程序開始的條件(啓動時間)也已滿足,等候系統分配運行資源
(運行所需的後臺進程處理單元<BTC-WP>)。
Active: 進程開始,而且定義的每一個程序(STEP)都被按序執行。
Finished: 進程順利完成。
Cancelled:因爲錯誤,進程沒有正常完成。
各個進程的關係:
Planned <> Release > Ready -> Active --> finished or Cancelled
執行後臺進程的方法:
事務執行命令(transaction code):
SM36,SM37, SA38
ABAP 程序:
SAP系統程序或客戶自定義的程序。
外部程序或工具:
外部工具(第三方)通過BAPI-XBP接口,從外部定義執行後臺進程。
後臺進程相關的系統表:
TBTCO: 存放後臺進程所有的信息和狀態。
TBTCP:存放後臺進程中定義程序的信息。
TBTCS: 時間驅動進程相關的信息。
BTCEVTJOB:事件驅動進程相關的信息。
後臺進程的日誌(joblog):
日誌存放在文件系統(其是TemSe子系統)中,列如:/usr/sap/<sid>/sys/global/001joblg…
一般的問題處理:
問題1: 後臺進程沒有啓動。
原因1:系統沒有足夠的資源。可以用T-cd:Sm51,Rz04,SM66,Sm37確認。
原因2:進程調度(Scheduler)沒有運行。T-cd:Sm61確認。
原因3:無法生產日誌,用Sm21確認系統日誌,和ST11確認developer trace。
可能是有TemSe不整合或有OS文件的訪問問題。
原因4:TCTCO,TCTCP…等一系列表之間的不整合;用SM65->Goto->Additional test->
選擇:Perform TemSe check
Consistency check DB Table
Remove inconsistencies
->執行
問題2:後臺進程在執行的過程中,發生互鎖。
原因1:確認應用程序的邏輯,一般情況下這個問題都是有應用程序本身導致的。
原因2:數據庫的原因,但是這樣的情況較少。
原因3:兩個週期進程,間隔時間太短,以至於第一個還沒有執行完,第二個已開始執行。
建議·: 根據note-16083中的說明,設定標準進程,以減少系統負擔和數據盈餘。