如何自行给指定的SAP OData服务添加自定义日志记录功能
有的時候,SAP標準的OData實現或者相關的工具沒有提供我們想記錄的日志功能,此時可以利用SAP系統強大的擴展特性,進行自定義日志功能的二次開發。
以SAP CRM Fiori應用“My Opportunity”為例:我們首先在其OData服務CRM_OPPORTUNITY的實現類CL_CRM_OPPORTUNITY_IMPL的構造函數方法CONSTRUCTOR里設置一個值為GET_BADI的動態斷點,這樣調試模式下,ABAP調試器會自動停在所有出現了GET BADI關鍵字調用的地方。
通過這個方法,我們很快找到了一個能夠放置我們自定義日記記錄邏輯的地方:就是代碼85行的BAdI定義,CRM_OPPORTUNITY_ODATA_DB. 在SAP標準OData服務實現的讀取操作里,每次從數據庫調用One Order API讀取Opportunity數據后,都要執行這個BAdI.
這是該BAdI執行的調用棧:
事務碼SE18,根據我們剛剛找到的BAdI定義創建一個增強實現:
這個增強實現類ZCL_JERRY_ODATA_TRACE里,現在可以編寫我們的日志記錄邏輯了。
首先創建一個數據庫表,用于存放我們的日志記錄。為簡單起見,我僅僅記錄了請求的用戶名,請求日期和時間,大家可以根據自己實際需求添加相關字段。
增強代碼也很簡單:
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上隨便做幾個點擊操作:
回到我們自定義的日志記錄表里,發現填充了一些記錄了,這個自定義日志記錄功能就實現了。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的如何自行给指定的SAP OData服务添加自定义日志记录功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在SAP gateway系统配置路由
- 下一篇: 使用Prometheus针对自己的服务器