@TOC
筆者曾經寫過一篇文章,介紹瞭如何根據 ABAP 錯誤訊息找到準確的丟擲該錯誤訊息的程式碼位置:
這七種武器的第四種,即根據 ABAP 系統提供的兩款標準工具,輸入關鍵字,在指定的 ABAP 開發包裡,搜尋並列出所有包含了指定關鍵字的 ABAP 程式碼的準確位置。
本文及後續步驟,我們就來給尚未使用過這兩款程式碼搜尋工具的朋友們做一個詳細介紹。
ABAP 程式碼搜尋工具:ABAP 報表 RS_ABAP_SOURCE_SCAN
這個報表的名稱,筆者是這樣記憶的。
RS 代表 Reuse Service,可重用的服務。SOURCE SCAN 代表原始碼掃描。
執行報表後,看到下圖所示的輸入介面。
筆者絕大多數時候,只使用了這個報表的 1 ~ 4 輸入引數,如下圖所示:
(1) 搜尋的關鍵字。注意這個工具支援指定一個 正規表示式
作為搜尋關鍵字。
(2) Package:在哪些 ABAP 開發包裡進行搜尋。
(3) 在指定的 function group 內搜尋。
(4) 在指定的 Class 範圍內搜尋。
一般來說,搜尋條件指定越詳細,則搜尋範圍越小,則搜尋速度越快。
我們來看一個實際工作中的例子。
下圖是 SAP CRM 產品主資料的搜尋介面。
使用者可以在 UI 的下拉選單裡,指定不同組合的搜尋條件來查詢產品主資料:
使用 SAP CRM 這個產品的客戶,其後臺產品主資料的規模通常都是很大的,存放產品主資料的資料庫表記錄數動輒上千萬,本教程之前的步驟曾經提到,OPEN CURSOR 和 FETCH NEXT CURSOR 這對關鍵字,是用來在這種記錄數眾多的資料庫表裡讀取時避免高記憶體消耗的一種有效方式:
- 77. 簡單聊聊 ABAP 變數消耗的記憶體空間這個話題
- 78. 淺談 ABAP 程式執行時出現『記憶體耗盡』錯誤的問題
- 79. 使用 OPEN CURSOR 和 FETCH NEXT CURSOR 對 SAP 資料庫表進行分塊讀寫
- 80. 使用事務碼 SAT 比較傳統的 SELECT SQL 語句和 OPEN / FETCH CURSOR 分塊讀取 ABAP 資料庫表兩種方式的效能差異
- 81. 使用 SAP ABAP Memory Inspector 對應用程式消耗記憶體進行檢測時常犯的錯誤
實際工作中的一個需求:找到 SAP CRM 產品主資料搜尋實現裡使用了 OPEN CURSOR 關鍵字的準確位置
現在我們工作中接到一個調研需求:找出 SAP CRM 產品主資料標準程式裡呼叫 OPEN CURSOR / FETCH NEXT CURSOR 的程式碼位置。
假設是一個剛接觸 SAP CRM 不久的新人被分配到這個任務,組裡的老同事只告訴他,SAP CRM 產品搜尋實現的入口函式是 CRM_PRODUCT_GETLIST2
.
詳細使用方法參考這篇文章。