如何自行给指定的SAP OData服务添加自定义日志记录功能
有的時候,SAP標(biāo)準(zhǔn)的OData實現(xiàn)或者相關(guān)的工具沒有提供我們想記錄的日志功能,此時可以利用SAP系統(tǒng)強大的擴展特性,進行自定義日志功能的二次開發(fā)。
以SAP CRM Fiori應(yīng)用“My Opportunity”為例:我們首先在其OData服務(wù)CRM_OPPORTUNITY的實現(xiàn)類CL_CRM_OPPORTUNITY_IMPL的構(gòu)造函數(shù)方法CONSTRUCTOR里設(shè)置一個值為GET_BADI的動態(tài)斷點,這樣調(diào)試模式下,ABAP調(diào)試器會自動停在所有出現(xiàn)了GET BADI關(guān)鍵字調(diào)用的地方。
通過這個方法,我們很快找到了一個能夠放置我們自定義日記記錄邏輯的地方:就是代碼85行的BAdI定義,CRM_OPPORTUNITY_ODATA_DB. 在SAP標(biāo)準(zhǔn)OData服務(wù)實現(xiàn)的讀取操作里,每次從數(shù)據(jù)庫調(diào)用One Order API讀取Opportunity數(shù)據(jù)后,都要執(zhí)行這個BAdI.
這是該BAdI執(zhí)行的調(diào)用棧:
事務(wù)碼SE18,根據(jù)我們剛剛找到的BAdI定義創(chuàng)建一個增強實現(xiàn):
 
 
這個增強實現(xiàn)類ZCL_JERRY_ODATA_TRACE里,現(xiàn)在可以編寫我們的日志記錄邏輯了。
首先創(chuàng)建一個數(shù)據(jù)庫表,用于存放我們的日志記錄。為簡單起見,我僅僅記錄了請求的用戶名,請求日期和時間,大家可以根據(jù)自己實際需求添加相關(guān)字段。
增強代碼也很簡單:
DATA(ls_log) = VALUE zorder_guid( user_name = sy-unamereq_date = sy-datum req_time = sy-timlo ).CALL FUNCTION 'SYSTEM_UUID_CREATE'IMPORTINGuuid = ls_log-guid.INSERT zorder_guid FROM ls_log.激活這個增強后,到Fiori UI上隨便做幾個點擊操作:
回到我們自定義的日志記錄表里,發(fā)現(xiàn)填充了一些記錄了,這個自定義日志記錄功能就實現(xiàn)了。
要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號"汪子熙":
 
總結(jié)
以上是生活随笔為你收集整理的如何自行给指定的SAP OData服务添加自定义日志记录功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 如何在SAP gateway系统配置路由
 - 下一篇: Qt编写安防视频监控系统(界面很漂亮)「