天天看點

如何檢視類型為LRAW的SAP ABAP資料庫表字段的内容

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資料庫表字段的内容