點(diǎn)擊藍(lán)字 關(guān)注我們
一
前言
數(shù)據(jù)同步平臺是在ABAP中開發(fā)的一個數(shù)據(jù)同步工具,類似于LTRC,通過配置實(shí)現(xiàn)任意兩個數(shù)據(jù)庫的數(shù)據(jù)同步(ABAP需要配置相關(guān)的外部數(shù)據(jù)庫連接).
數(shù)據(jù)同步平臺的底層通過調(diào)用ADBC類實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)庫的讀取,寫入.
詳情請參閱以下鏈接
詳見鏈接無峰,公眾號:ABAP 技巧與實(shí)戰(zhàn)SAP工具箱 數(shù)據(jù)同步平臺( 一 簡介 )
詳見鏈接無峰,公眾號:ABAP 技巧與實(shí)戰(zhàn)SAP工具箱 數(shù)據(jù)同步平臺( 二 配置 )
詳見鏈接無峰,公眾號:ABAP 技巧與實(shí)戰(zhàn)SAP工具箱 數(shù)據(jù)同步平臺(三 改進(jìn))
詳見鏈接無峰,公眾號:ABAP 技巧與實(shí)戰(zhàn)SAP工具箱 數(shù)據(jù)同步平臺(四 大表處理改進(jìn))
本文主要介紹數(shù)據(jù)平臺的日志功能改進(jìn)
二
舊版日志功能局限
數(shù)據(jù)同步平臺的第一版只考慮了ABAP的表與外部系統(tǒng)表之間的同步,因此大部分功能包括日志功能都會讀取ABAP中的數(shù)據(jù)字典對象, 用來定義內(nèi)表,定義ALV的字段.
優(yōu)化數(shù)據(jù)同步平臺的平臺屬性后(可以通過平臺同步任意兩個非ABAP的外部數(shù)據(jù)庫),原本獲取ABAP數(shù)據(jù)內(nèi)容的邏輯就會出現(xiàn)問題. 有可能讀取不到數(shù)據(jù)字典對象,會導(dǎo)致日志顯示同步內(nèi)容時報(bào)錯.
三
思維導(dǎo)圖
作為一個程序員,很慚愧一直都沒有使用思維導(dǎo)圖,因此在這個日志改進(jìn)時,嘗試畫了一個思維導(dǎo)圖.
思維導(dǎo)圖對于梳理思路還是有一定作用的.
關(guān)于思維導(dǎo)圖軟件
Xmind 收費(fèi),好看,功能強(qiáng)大
freemind 免費(fèi),相對難看,功能差不多
四
新版日志功能改進(jìn)
通過程序調(diào)用ID整合日志
考慮字段映射標(biāo)記
考慮大表分包日志記錄
日志中記錄表名信息
01
程序調(diào)用ID整合日志
每個接口編號可能定義一個主表/多個從表,因此每次執(zhí)行時會顯示多個表的執(zhí)行結(jié)果.
每個表的執(zhí)行結(jié)果單獨(dú)記錄日志ID. 在接口中通過程序調(diào)用ID來整合這個接口的所有的日志ID(圖一).
日志顯示時,可以看到同一個程序調(diào)用ID的所有日志信息(如圖二)
如果選中的日志存在多個表,會彈窗讓用戶選擇最終要顯示的表內(nèi)容(如圖三)
圖一
圖二
圖三
02
日志中記錄表名信息
日志ID的記錄維度是表名及表的分包,寫入日志表時,把目標(biāo)表名同時寫入了<產(chǎn)生的單據(jù)號碼>字段(如圖四).這樣,在日志顯示時,可以直觀的看到表名信息.
圖四
03
考慮字段映射標(biāo)記
字段映射功能用來設(shè)置是否啟用配置表 ZTSYNC_C2中配置的字段隱射規(guī)則.如果啟用了字段隱射, 源表內(nèi)容和目標(biāo)表內(nèi)容就可能不一致.
改進(jìn)的日志功能考慮了數(shù)據(jù)的字段映射標(biāo)記(圖五),同時記錄源表數(shù)據(jù)內(nèi)容及目標(biāo)表數(shù)據(jù)內(nèi)容.并且根據(jù)源或目標(biāo)數(shù)據(jù)庫是否為當(dāng)前ABAP系統(tǒng)(連接名DEFAULT)來確定是否使用數(shù)據(jù)字典定義(使用數(shù)據(jù)字典定義可以獲取更多的字段信息,比如字段描述).
啟用后,顯示日志時會拆分成源表/目標(biāo)表兩個選項(xiàng),用戶可以選擇顯示源表或目標(biāo)表的日志(如圖三)
對于沒有配置字段隱射的接口, 因?yàn)樵幢砼c目標(biāo)表相同,日志中只需要顯示目標(biāo)表內(nèi)容(如圖六)
圖五
圖六
04
考慮大表分包處理
為了避免大表處理出現(xiàn)內(nèi)存溢出的錯誤,記錄的日志內(nèi)容也依賴于配置中的分包數(shù).每個分包記錄一份日志.
如圖一的同步結(jié)果看到接口SYN001配置了一個主表ZTTS_H,一個從表ZTTS_I .
點(diǎn)擊顯示日志時, 可以看到主表7條記錄按包數(shù)2拆分成了4個包,從表6條記錄按包數(shù)2拆分成3個分包(如圖二)
勾選多個日志,可以把這些日志中記錄的表內(nèi)容合并顯示. (如圖七,因?yàn)槭峭獠繑?shù)據(jù)庫表,沒有獲取字段描述,ALV中用字段名顯示)
圖八中使用了數(shù)據(jù)字典定義ALV,所以包含了字段描述信息及主鍵信息.
圖七
圖八
五
總結(jié)
數(shù)據(jù)同步平臺改進(jìn)平臺屬性后, 日志功能也隨之改變.
這樣可以真正作為一個平臺,同步任意兩個數(shù)據(jù)庫系統(tǒng)之間的數(shù)據(jù),并且記錄詳細(xì)的操作日志,數(shù)據(jù)傳遞內(nèi)容日志.
這些日志整合在接口日志查詢中(ZIFLOG), 可以查詢數(shù)據(jù)同步平臺的執(zhí)行情況及執(zhí)行傳遞的數(shù)據(jù)內(nèi)容. 如果接口中啟用了字段映射,日志中可以分別查看映射前的源表數(shù)據(jù)及隱射后的目標(biāo)表數(shù)據(jù).