SAP BW 郵件傳送監控策略

leniz發表於2010-04-09

SAP BW 郵件傳送監控策略                       

以往的情況是郵件一提交到BW的郵件佇列我們就認為自己工作做完了。事實上卻沒有,並且我們一直被困惑著,因為郵件會錯、會拖、會等、會卡,所有小孩子會犯的錯,它都會,而我們卻不知道為什麼。

我們的規劃是能夠把郵件的傳送納入到可控範圍,可以知道有沒有錯誤,有沒有傳送,有沒有等待。


我們在規劃時,分了幾個步驟去實現:

1.      可以監控郵件系統是否存在等待狀況

2.      如果存在等待狀況,能夠自動觸發郵件傳送動作

3.      可以監控郵件系統是否存在異常郵件

4.      如果存在異常郵件,能夠自動觸發重發郵件動作

通過對郵件系統的資料日誌分析,我們找到了其中的對應關係。郵件系統會把目前處於等待狀態的郵件暫時性的儲存到SOST這個表中,在聯合SOOD這個儲存郵件基本資訊的表,我們很快就是實現了第一步。建立如下試圖:

Tables:

    SOOD

    SOSC

Join conditions:

    SOOD MANDT       =      SOSC      MANDT

    SOOD OBJTP          =      SOSC      OBJTP

    SOOD OBJYR         =      SOSC      OBJYR

    SOOD OBJNO         =      SOSC      OBJNO

View Fields:

   SOOD OBJNO

   SOOD OBJNAM

   SOOD OBJDES

   SOOD CRDAT

   SOOD CRTIM

  SOOD OBJSND

  SOOD SDDAT

   SOOD SDTIM

  SOSC  ENTRY_DATE

  SOSC  ENTRY_TIME

  SOSC  SNDPRI

  SOSC  STATUS

  SOSC  NEW_STATUS

  那麼我們可以通過查詢試圖獲得目前郵件等待情況。

  我們知道可以手動去傳送等待狀態的郵件,但是我們的目的是能夠讓系統自動做,所以我們找到了相應的Report:RSCONN01(至於如何找到程式,通過SDN和Debug就八九不離十了)。一定發現有等待的郵件,且郵件是我們需要監控的,那麼就讓程式去觸發郵件傳送動作。這樣我們又解決了第二個問題。

    第三步比較簡單,因為判斷是否錯誤無非是判斷Log的狀態資訊,但是問題是我們獲得的狀態編號是否就涵蓋了所有情況,也沒有這樣的文件說明。所以我們羅列的歷史以來日誌出現的狀態編號,比較笨,但是不得不說我們做到了。

    第四步的實現也是通過Debug程式找到的,Function:SO_SEND_PROCESS_REQUEUE。 這裡有心的可能會發出這樣的疑問,為什麼不用第二步的程式。原因是,第二步的程式只會把目前處於等待狀態的郵件重發,而郵件一旦異常,那麼郵件系統就會把這些郵件踢到非等待狀態,所以第二步出現的程式根本就碰不到這個異常郵件,所以也談不上用它來傳送了。這個Function會通過一個table儲存需要重發的郵件,所以我們要做的就是把郵件資訊重新放進去。

內表的格式如下:[加粗的是必填]

OBJTP

OBJYR

OBJNO

FORTP 

FORYR 

FORNO 

RECTP

ADR

RECYR

RECNO

MSGTP

REPEAT_CNT

WAIT_DATE

WAIT_TIME

NEW_STATUS

SNDREQ

IMMEDIATLY 

你可以通過SOOD和SOOS這2個表把所有資訊都填入到內表中,那麼就完成了重入佇列的動作,當然只是完成了重入佇列的動作,所以你還是需要執行第二步的動作(是否把IMMEDIATLY設為X,就可以立即傳送還要測試,不過小fang一再告我不要把所有兔子都打光,謹記)。

    通過以上的介紹,估計BW的郵件監控會是在你的掌控之中了。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/554557/viewspace-631661/,如需轉載,請註明出處,否則將追究法律責任。

相關文章