SAP PO 訊息報文儲存詳解(SAP PO 訊息報文儲存詳解二)

2020-09-19 12:04:45

為什麼要詳解這塊內容?

因為需要把PO的訊息報文讀到我們自己的系統資料庫中,永久儲存資料。而在PO的HANA資料中,還是按照10天的儲存期儲存紀錄檔就好。

(SAP PO 是SAP公司推出的ESB中介軟體產品,就是本文的PO;不是採購訂單PO,也不是JAVA持久化物件POJO)

一、PO的HANA資料庫中,存放訊息報文相關的表和檢視:

BC_MSG_LOG   存放訊息紀錄檔報文

BC_MSG_LOG_STAT   存放訊息傳輸的狀態

BC_MSG_LOG_VIEW   按BC_MSG_LOG_STAT表去BC_MSG_LOG中抓紀錄檔資料和報文

 

二、一個WebService介面範例,PO的工作元件、步驟和紀錄檔:

BI=2,AM=2,MS=2的時候,PO上的三個元件都記錄紀錄檔,可以看到紀錄檔的型別有BIMSAM:

(這幾個引數在PO中的設定,請檢視上一篇blog文章)

紀錄檔元件的官方說明:

MS:  between receiver determination and mapping step
AM:  between mapping and schema validation
BI:    before inbound processing
SC:   no logged?

 

在資料call方向,有三個步驟:0,1,2;在資料Rtrn方向,有兩步:0,1。
在BC_MSG_LOG_STAT表中,記錄了一個方向上最後一步的狀態是成功還是失敗。
在BC_MSG_LOG_VIEW檢視中,會參照BC_MSG_LOG_STAT表中的內容去BC_MSG_LOG表取數,

如果紀錄檔記錄全開,BI=2,AM=2,MS=2的時候,BC_MSG_LOG_VIEW檢視會看到call方向上的最後第2步的傳遞狀態,在return方向上可以看到最後1步的傳遞狀態。STATUS欄位中 「DLVD」 表示成功傳遞(我猜的),「FAIL」表示訊息失敗。

BC_MSG_LOG_VIEW檢視其實也就是PO管理端頁面看到的內容,這也就是一次介面訊息是成對出現的原因,其實是記錄了call和return兩個方向的報文內容:

三、報文放在哪兒?

報文放在BC_MSG_LOG表的MSG_BYTES欄位中,以二進位制的方式儲存,要檢視報文只需要把二進位制轉換成文字即可。

我們可以簡單把報文讀到自己的資料庫中,永久儲存。

call的報文

return的報文:

而在ERP S4系統sxi_monitor中看到的報文,是存放在ERP的資料庫中,和PO的資料庫關係不大。

sxi_monitor引數中可以設定紀錄檔儲存的天數。