如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容

i042416發表於2020-05-04

SAP幫助文件上提到:當一個buffered資料庫表被修改時,其buffer也會自動被更新,包括其他應用伺服器例項上針對該表的buffer也會以非同步的方式自動被更新。

Buffer表被修改的記錄會被寫入一箇中央日誌表DDLOG. Buffer的非同步更新就是應用伺服器定期地檢視該表是否存在新的記錄而實現的。


如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容


我處於好奇,想在SE16裡檢視DDLOG的記錄長什麼樣,發現notebook這個欄位的型別為LRAW:


如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容


為了做測試,我選擇了一個buffer表,CRMC_PROC_TYPE, 往裡面寫入了一些資料:


如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容


然後SE16,找不到我剛才插入的記錄,記載在這張表的什麼地方了:


如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容


我當然可以用SELECT * 把包括notebook欄位在內的所有資料都讀取到ABAP內表裡,但是我不知道如何解析型別為LRAW的欄位,所以讀出來也沒用。

我國有句古話:毒蛇出沒之處,七步之內必有解藥。同樣,DDLOG這張表儲存的資料,如果沒有對應的讀取API,那麼這些資料也毫無存在的價值。

所以對DDLOG執行where used list操作,必定可以找到讀取該表的API.


如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容


果然找到了一些有用的函式和類:


如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容


一些和這個DDLOG資料庫表有關的操作和工具:

ABAP資料庫表buffer同步監控工具RSDBBUF3


如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容


解析DDLOG-NOTEBOOK欄位的函式:SBUF_SEL_DDLOG_RECS

用法如下:

DATA: lt_sync_tab    TYPE sync_tab_t,
      lv_tstamp_from TYPE ddlog-timestamp,
      lv_tstamp_to   TYPE ddlog-timestamp.
lv_tstamp_from   = '20160621061955'.
lv_tstamp_to    = '20160623000000'.
CALL FUNCTION 'SBUF_SEL_DDLOG_RECS'
  EXPORTING
    from_time      = lv_tstamp_from
    to_time        = lv_tstamp_to
    max_cnt        = 10000
    keep_db2_tstmp = 'X'
  CHANGING
    sync_tab       = lt_sync_tab.
SORT lt_sync_tab BY tabname.

使用這個函式,就能查到我之前修改資料庫表CRMC_PROC_TYPE後自動寫入表DDLOG的記錄了。


如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容


要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":


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

相關文章