為什么要詳解這塊內容?
因為需要把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上的三個組件都記錄日志,可以看到日志的型別有BI,MS,AM:
(這幾個引數在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引數中可以設定日志保存的天數,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/82300.html
標籤:其他
