sap后台作業管理:
后台作業,主要用於運行需要處理大量數據,對交互沒有要求的程序。個人認為,簡單的創建,配置和監控后台作業沒有什么難度。后台作業管理最為困難的解決方案的取舍,系統負載的調控。失控的后台作業,往往對系統帶來災難性的性能問題,也會導致權限管理的風險,結果是得不償失,而且可能導致流程混亂。所以個人認為,要創建一個周期性的后台作業之前,首先應該慎重分析。比方說,一個已經明顯偏向 OLAP類型的報表,如果能夠用BI去實現,為什么還要堅持在生產系統去跑長時間的后台作業?這極有可能是一種嚴重的重復運行的性能問題。再比方說,用戶獲得授權隨意創建后台作業,結果導致后台作業失控,在業務繁忙的時候,因為大量的后台作業導致整個系統的停頓,會造成實實在在的經濟損失。再比如說,后台作業安排的不合理,可能耗資源的和重要的后台作業直接或者間接安排到了同一個時間段,那么必然會影響流程的運作。
詳細解釋一下sap得后台作業。 sap得后台作業的啟動方式可以是定時地,也是可以是事件觸發的。后台作業里面包含一個或者多個步驟,每一個步驟則包含調用的程序,外部shell命令以及外部程序,也包含了調用者以及變量,還可以定義打印參數。后台作業的名字往往需要遵循一定的命名規則,用來明確該后台作業的重要程度,啟動方式,作用等等。我們往往通過SM36去創建后台作業,(也可以通過SM36去查看SAP標准后台作業),通過SM37去監控和管理后台作業。
后台作業有Scheduled, Released, Ready, Active, Finished, Canceled六種狀態。另外還可以指定執行的服務器組(后台job執行的服務器組可以用sm61來配置)。 Scheduled狀態的job是創建了但是還沒有release,這種狀態的job是不會跑的。Released狀態的job在啟動條件滿足后會啟動,Ready就是啟動條件滿足后,系統開始為該job分配但尚未分配合適的后台進程的一個中間狀態,Active代表這個job正在運行當中,換言之,其相應的后台進程正在運行job某一個step得程序;Finished代表job得所有step都成功的完成了。Canceled代表job在某一個step得運行過程中異常中止了。
sap job得信息存在一系列的表TBTC*里面。有的時候,某個job對應的進程中止了,但是表里面的狀態信息仍然沒有更新,會出現job是active狀態,而實際沒有進程在跑的情況,那么,我們只需要check status,就可以手動修正表里面的狀態信息。
如果要分析job cancel得原因,應該檢查job log,往往job得step都是跑的是abap程序,所以,job cancel得時候常伴隨着dump產生,這個時候,雙擊job log的條目,可以跳轉對應的dump。另外,有的時候,因為進程被中止導致的job cancel沒有被寫入日志,需要結合system log去分析。job log是保存在\usr\sap\SID\SYS\global日志文件<client nr>JOBLOG中的,在某些特定的情況下,日志文件訪問問題會導致所有的job cancel,在DI上出現這種問題的時候,據說可能是NFS不穩定,這個我還不確定。
觸發Event 基本本是function module BP_EVENT_RAISE或者sapevt.exe。
sap打印管理:
完整SAP打印過程基本上是: 1 選擇打印的文檔,創建spool request(printer-independent); 2 如果是立即打印,則根據output device創建output request(printer-dependent); 3 output request被移交給sap print process處理 4 sap print process將打印數據轉換成打印機可識別的格式移交給操作系統打印管理器。
在adm里面強調了一點,就是如果操作系統層面打印機不可用,對sap來說該打印機也不可用。 此外,sap打印機的access method,主要和操作系統差異(NT,Unix)以及SAP print process和os spooler所在服務器有關. Access Method: F類型是針對用戶端為windows平台,具體是通過sap spool->saplpd->windows spool實現的。 L(調用unix shell command lp/lpr)和C(調用windows API)類型分別對應unix和winodws平台的應用服務器得local類型,local類型的意思是sap print process和os spool在同一物理服務器上。 U和S分別針對unix平台和windows平台的遠程打印,遠程打印的意思是sap print process和os spooler不在同一服務器。需要說明的是,s類型還是需要調用打印服務器端的saplpd.
下面大致說明一下簡單的sap 打印機配置過程(oms得復雜類型配置暫且略過,我還沒有做過) 一般我們配置的打印機(output device)多為L類型的。 SPAD創建打印機 output device:大小寫區分 device type:選擇對應的型號,如果沒有默認的,首先去sap官網下載最新的device type導入,如果還沒有,就去供應商官網查找。sapnote 8928 delievery classs: 打印機用standard printer authorization group: 打印機權限管理,不需要可以略過(我沒有配置過) Model,location, Message都是描述性字段,根據各公司的命名規則去填寫,以便實際管理 lock printer in SAP System: 是否在sap系統鎖定該打印機?當然不了 Host Acces method:L Host Printer Name: 打印機名稱(這個字段將用於lp/lpr命令) Host Name:打印服務器機器名(比如我的打印機安裝在sidhau上,那么這一欄自然就是sidhau) 一般為了性能良好,都將Do not query Host Spooler for output status打上勾。 其他默認。
關於F類型打印機,下面貼一個SDN關於PDF1打印機配置的BLOG。這個包含了F類型打印機配置,同時給出了不用第三方軟件提供將報表轉pdf格式文件得解決方案。已測試通過。 請注意打印配置,實際上不同類型的打印機,比如L和C得,代表着不同的接口。L類型打印機,sap傳遞給os得是lp/lpr命令,C類型的,則是調用windows平台的saplpd。 https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/1523
對於spool得維護和監控也是相當重要的。需要定期清理舊的spool request和output request. sap有標准的后台作業SAP_REORG_SPOOL( rspo1041)和SAP_CHECK_SPOOL(rspo1043)詳細信息可以查看sap note 130978和98065