SAP ABAP SM50的另類用途 - ABAP工作程式對資料庫表讀取操作的檢測
今天是2020年五一國際勞動節,Jerry祝大家勞動節快樂。
雖然五一國際勞動節來源於一百多年前國外無產階級的一次大罷工,但由於國情原因,國內很多行業的從業人員,好像天生就是勞碌命。比如程式設計師行業。
2014年五一勞動節,我在和一個不是總能重現的SAP CRM incident做鬥爭。詳情參考Jerry之前的文章 記一次SAP開發工程師給微軟Azure報incident的體驗.
當時處理完這個複雜的問題後,我覆盤總結了經驗教訓,釋出在SAP社群上的部落格:
My Tips about how to handle complex and tricky issues
2016年的五一節前一天,4月30日,我寫了一篇透過除錯方式解決SAP UI5各種問題的合集:
2017年的五一節我在德國“農村”,就著程式碼和麵包度過的:
Jerry 2017年的五一小長假:8種經典排序演算法的ABAP實現.
2018年的五一節前後,我在搗鼓區塊鏈:
2019年的五一節前後,我利用空閒時間,把一位同事在這公眾號上寫的文章做了簡單的修改然後發了出來: 一個SAP顧問的回憶:我過去很胖!
不過有付出就有收穫,而且周董的作品《四面楚歌》裡也唱到,“我只知道好像認真的男人最美麗”。
所以,今年的五一勞動節,讓我們繼續認真勞動,繼續美麗下去吧。
本文標題的SM50事務碼,在SAP系統裡描述資訊是“Work Processes of AS Instance”,即應用伺服器例項上的工作程式監控器。
在Jerry的文章 一個13年ABAP老兵的建議:瞭解這些基礎知識,對ABAP開發有百利而無一害 曾經介紹過工作程式(Work Process)的概念。在基於ABAP技術棧的SAP產品裡,客戶無論是從瀏覽器,SAPGUI,或者API的方式向SAP系統發起請求,最後的業務處理都是透過這些勤勤懇懇的工作程式完成的。
上述文章還介紹了SM50裡能夠檢視到的工作程式的不同型別,這裡不再重複。
本文要介紹的,是使用SM50檢測出工作程式長時間讀取一張資料庫表這個行為的小技巧。SM50介面有一列名為"Current Action Info",如果啟動SM50時,當前工作程式正在持續讀取一張資料庫表,則該列會顯示出資料庫表的名稱。
比如上圖顯示了編號為9743的工作程式,當前狀態為Running,正在client 000以系統使用者SAPSYS的身份,執行ABAP系統程式SAPMSSY2, 讀取資料庫表TBTCO.
我曾經用這個小技巧,完成了實際工作中的一個任務。
在我還在做SAP CRM標準開發時,我需要找出監聽了CL_BSP_WD_COLLECTION_WRAPPER這個類丟擲的NEW_FOCUS事件的所有ABAP類。
於是我使用ABAP workbench裡的Where-Used List功能,等待了5分鐘過後仍然出結果。我又以後臺作業的方式執行了Where-Used List操作,或許是待檢索的ABAP類的總數太過龐大的緣故,十分鐘過去了仍無結果。
於是我換了一種方式,開啟SE80的Repository Information System,根據如下條件搜尋:
然而這個過濾條件只能顯示哪些類釋出,而非監聽了NEW_FOCUS事件。
於是我開啟SM50,一眼就看到了當前程式正陷入讀取VSEOCOMPDF的泥潭之中。
這是一個資料庫檢視:
ABAP類和其釋出事件的關聯關係維護在了資料庫表SEOCOMPODF中。我在SE16裡按照如下過濾條件進行檢索:
不到一秒鐘就得到了我想要的列表:
這個例子如果採用我之前文章 SAP錯誤訊息除錯之七種武器:讓所有的錯誤訊息都能被定位 裡提到的工具之一,即用ST05跟蹤Where-Used List執行時訪問到了哪些表,結果一定會出來長長的一串。而使用SM50的Current Action Info,能避開所有干擾資訊,迅速準確找出儲存ABAP類和其監聽事件的關聯關係的儲存表。
ABAP開發人員手頭上可用的工具很多,如何在不同情形下靈活選擇最合適的工具去解決問題,是我們需要不斷去練習和提高的。
感謝閱讀,祝大家五一勞動節快樂。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2689684/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SAP ABAP資料表的操作
- 如何對 ABAP 資料庫表透過 ABAP 程式碼進行更新和刪除操作試讀版資料庫
- [ChatGPT 勘誤]:SAP ABAP 系統裡資料庫表 dlv_systc 的用途ChatGPT資料庫
- ABAP資料庫操作(轉)資料庫
- ABAP資料庫表的後設資料資料庫
- 如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容型別資料庫
- SAP ABAP裡資料庫表的Storage Parameters從哪裡來的資料庫
- 一種獲取SAP HANA資料庫表條目數的另類方法資料庫
- 如何用ABAP程式碼讀取CDS view association的資料View
- 如何建立最簡單的 ABAP 資料庫表,以及編碼從資料庫表中讀取資料 (上)資料庫
- 利用BSP call ABAP程式更新資料庫表資料庫
- 如何用ABAP讀取CDS view association的資料View
- SAP ABAP 系統進行資料庫表查詢的幾種常用方法的試讀版資料庫
- 一個好用的SAP ABAP工作程式跟蹤工具
- SAP ABAP操作Office Excel的開源專案abap2xlsxExcel
- 使用 Excel 讀取 SAP ABAP CDS View 通過 ODBC 暴露出來的資料ExcelView
- SAP ABAP 特性相關表取數邏輯
- SAP ABAP 程式之間的呼叫
- 使用 FOR ALL ENTRIES 將 ABAP 內表內容作為資料庫表的讀取條件之一試讀版資料庫
- SAP ABAP Netweaver 裡的 ABAP 會話概念會話
- SAP ABAP OData 服務的 $count 操作實現
- 使用 SAP ABAP Memory Inspector 對應用程式消耗記憶體進行檢測時常犯的錯誤試讀版記憶體
- 如何使用 ABAP 程式消費 SAP ABAP OData 服務
- SAP ABAP和Hybris Commerce的Sample資料
- SAP ABAP maintanence view的資料校驗機制AIView
- ABAP中對內表進行clear操作時的注意點
- 如何手動透過增強的方式,給 SAP ABAP 資料庫表增添新的欄位資料庫
- 如何修改 SAP ABAP OData 模型,使其支援 $expand 操作試讀版模型
- SAP ABAP OData 服務如何支援 $orderby (排序)操作試讀版排序
- VC的另類資料庫程式設計(轉)資料庫程式設計
- sap abap好用的函式函式
- ABAP 資料庫表 Size Category 欄位的準確含義資料庫Go
- SAP CRM user引數CRM_UI_PROFILE是在哪行ABAP程式碼裡讀取的UI
- SAP ABAP:獲取匯率的完整實現之一
- abap學習筆記-SAP欄位與表的對應關係筆記
- ABAP 從檢視獲得資料
- SAP ABAP Gateway Client 的 ABAP 實現,重用 HTTP ConnectionGatewayclientHTTP
- 使用特殊的技術更新資料庫(ABAP)資料庫