1. 程式人生 > 其它 >通過SAP的錯誤訊息定位出錯的程式的6種方法

通過SAP的錯誤訊息定位出錯的程式的6種方法

在SAP專案中,經常會遇到一個比較複雜的程式報出個錯誤訊息(有時會是一個標準SAP程式報錯),但是不知道到底是哪段ABAP程式碼出錯了。

下面通過一個簡單的例子,來介紹6種方法來定位報message的ABAP程式。

比如在SE38中輸入一個不存在的程式ZSDFSF,點選顯示按鈕,在下面的狀態列會彈出一個訊息,如下:

1, 利用Where use list功能

舉例說明,雙擊狀態列上的訊息,找到message class ID: DS, number 017,如下圖,

SE91,選中對應的訊息,點選where use list按鈕

一般會找到很多程式,

這時候只能靠人工過濾,找到正確的出錯位置,

然後設定斷點,再執行一下程式,確認一下。

2, 設定sy-msgid的watch point斷點

在命令欄輸入/h,回車啟用debug模式,

建立watch point如下:

程式執行後就會自動在message ID ‘DS' ,message號017處停下來。

建立watch point的詳細介面如下:

3, 設定ABAP Command型別斷點

在debug模式下,建立一個abap command型別的斷點,

輸入的abap命令是關鍵字message,如下:

 

程式執行是就會在每一個執行到的message語句停下。然後進一步定位錯誤。

4, 原始碼查詢

通過SAP標準程式RS_ABAP_SOURCE_SCAN可以搜尋到使用到相關message的abap程式。

SE38所在的package是SEDT,

執行RS_ABAP_SOURCE_SCAN,在package SEDT中查詢關鍵字message 017,

然後手動分析結果,找到出錯的abap程式。

也可以使用CODE_SCANNER來查詢,

5, 使用SAT工具

Tcode SAT,建立一個新的SAT 變式,在變式螢幕中,選擇“Aggregation – None”選項,

然後在SAT主螢幕中輸入SE38,選擇上面建立的變式,執行,

在SE38中輸入一個不存在的程式名,執行後,會顯示跟蹤結果,在結果集中查詢message關鍵字,在Hit list中雙擊行就能跳到具體的ABAP程式碼處。

附:[工具]SAT效能分析使用教程

6, 使用ST05工具

使用ST05跟蹤SE38後,在結果螢幕中,選中object Name是PROGDIR的行,點選display ABAP Call Location按鈕,

在定位到的774行程式附近就能找到相關的報出message的程式碼:

果然在813行找到了message。

注:為什麼要在ST05結果螢幕中找PROGDIR,是因為sap系統中,所有的程式名都儲存在表PROGDIR中,在PROGDIR中找不到就會報錯。。。