SAP ABAP SM50的另类用途 - ABAP工作进程对数据库表读取操作的检测
今天是2020年五一國(guó)際勞動(dòng)節(jié),Jerry祝大家勞動(dòng)節(jié)快樂。
雖然五一國(guó)際勞動(dòng)節(jié)來源于一百多年前國(guó)外無產(chǎn)階級(jí)的一次大罷工,但由于國(guó)情原因,國(guó)內(nèi)很多行業(yè)的從業(yè)人員,好像天生就是勞碌命。比如程序員行業(yè)。
2014年五一勞動(dòng)節(jié),我在和一個(gè)不是總能重現(xiàn)的SAP CRM incident做斗爭(zhēng)。詳情參考Jerry之前的文章記一次SAP開發(fā)工程師給微軟Azure報(bào)incident的體驗(yàn).
當(dāng)時(shí)處理完這個(gè)復(fù)雜的問題后,我復(fù)盤總結(jié)了經(jīng)驗(yàn)教訓(xùn),發(fā)布在SAP社區(qū)上的博客:
My Tips about how to handle complex and tricky issues
2016年的五一節(jié)前一天,4月30日,我寫了一篇通過調(diào)試方式解決SAP UI5各種問題的合集:
My UI5 debugging tips and experience collection – how to resolve UI5 issues through debugging by yourself
2017年的五一節(jié)我在德國(guó)“農(nóng)村”,就著代碼和面包度過的:
Jerry 2017年的五一小長(zhǎng)假:8種經(jīng)典排序算法的ABAP實(shí)現(xiàn).
2018年的五一節(jié)前后,我在搗鼓區(qū)塊鏈:
300行ABAP代碼實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的區(qū)塊鏈原型
2019年的五一節(jié)前后,我利用空閑時(shí)間,把一位同事在這公眾號(hào)上寫的文章做了簡(jiǎn)單的修改然后發(fā)了出來:一個(gè)SAP顧問的回憶:我過去很胖!
不過有付出就有收獲,而且周董的作品《四面楚歌》里也唱到,“我只知道好像認(rèn)真的男人最美麗”。
所以,今年的五一勞動(dòng)節(jié),讓我們繼續(xù)認(rèn)真勞動(dòng),繼續(xù)美麗下去吧。
本文標(biāo)題的SM50事務(wù)碼,在SAP系統(tǒng)里描述信息是“Work Processes of AS Instance”,即應(yīng)用服務(wù)器實(shí)例上的工作進(jìn)程監(jiān)控器。
在Jerry的文章 一個(gè)13年ABAP老兵的建議:了解這些基礎(chǔ)知識(shí),對(duì)ABAP開發(fā)有百利而無一害 曾經(jīng)介紹過工作進(jìn)程(Work Process)的概念。在基于ABAP技術(shù)棧的SAP產(chǎn)品里,客戶無論是從瀏覽器,SAPGUI,或者API的方式向SAP系統(tǒng)發(fā)起請(qǐng)求,最后的業(yè)務(wù)處理都是通過這些勤勤懇懇的工作進(jìn)程完成的。
上述文章還介紹了SM50里能夠查看到的工作進(jìn)程的不同類型,這里不再重復(fù)。
本文要介紹的,是使用SM50檢測(cè)出工作進(jìn)程長(zhǎng)時(shí)間讀取一張數(shù)據(jù)庫表這個(gè)行為的小技巧。SM50界面有一列名為"Current Action Info",如果啟動(dòng)SM50時(shí),當(dāng)前工作進(jìn)程正在持續(xù)讀取一張數(shù)據(jù)庫表,則該列會(huì)顯示出數(shù)據(jù)庫表的名稱。
比如上圖顯示了編號(hào)為9743的工作進(jìn)程,當(dāng)前狀態(tài)為Running,正在client 000以系統(tǒng)用戶SAPSYS的身份,執(zhí)行ABAP系統(tǒng)程序SAPMSSY2, 讀取數(shù)據(jù)庫表TBTCO.
我曾經(jīng)用這個(gè)小技巧,完成了實(shí)際工作中的一個(gè)任務(wù)。
在我還在做SAP CRM標(biāo)準(zhǔn)開發(fā)時(shí),我需要找出監(jiān)聽了CL_BSP_WD_COLLECTION_WRAPPER這個(gè)類拋出的NEW_FOCUS事件的所有ABAP類。
于是我使用ABAP workbench里的Where-Used List功能,等待了5分鐘過后仍然出結(jié)果。我又以后臺(tái)作業(yè)的方式執(zhí)行了Where-Used List操作,或許是待檢索的ABAP類的總數(shù)太過龐大的緣故,十分鐘過去了仍無結(jié)果。
于是我換了一種方式,打開SE80的Repository Information System,根據(jù)如下條件搜索:
然而這個(gè)過濾條件只能顯示哪些類發(fā)布,而非監(jiān)聽了NEW_FOCUS事件。
于是我打開SM50,一眼就看到了當(dāng)前進(jìn)程正陷入讀取VSEOCOMPDF的泥潭之中。
這是一個(gè)數(shù)據(jù)庫視圖:
ABAP類和其發(fā)布事件的關(guān)聯(lián)關(guān)系維護(hù)在了數(shù)據(jù)庫表SEOCOMPODF中。我在SE16里按照如下過濾條件進(jìn)行檢索:
不到一秒鐘就得到了我想要的列表:
這個(gè)例子如果采用我之前文章 SAP錯(cuò)誤消息調(diào)試之七種武器:讓所有的錯(cuò)誤消息都能被定位 里提到的工具之一,即用ST05跟蹤Where-Used List執(zhí)行時(shí)訪問到了哪些表,結(jié)果一定會(huì)出來長(zhǎng)長(zhǎng)的一串。而使用SM50的Current Action Info,能避開所有干擾信息,迅速準(zhǔn)確找出存儲(chǔ)ABAP類和其監(jiān)聽事件的關(guān)聯(lián)關(guān)系的存儲(chǔ)表。
ABAP開發(fā)人員手頭上可用的工具很多,如何在不同情形下靈活選擇最合適的工具去解決問題,是我們需要不斷去練習(xí)和提高的。
感謝閱讀,祝大家五一勞動(dòng)節(jié)快樂。
要獲取更多Jerry的原創(chuàng)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙":
總結(jié)
以上是生活随笔為你收集整理的SAP ABAP SM50的另类用途 - ABAP工作进程对数据库表读取操作的检测的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP Netweaver后台作业的几种
- 下一篇: linux cmake编译源码,linu