通過SAP的錯誤消息定位出錯的程序的6種方法


在SAP項目中,經常會遇到一個比較復雜的程序報出個錯誤消息(有時會是一個標准SAP程序報錯),但是不知道到底是哪段ABAP代碼出錯了。

1、定位到那條數據

 

 

2、創建斷點

 

 

 后台JOB斷點

進入SM37 查找到自己想要debug的后台程序,這里運行完畢或者正在運行的均可進入debug 查找到后打中job前面的勾 然后在控制框輸入JDBG回車,即進入debug

 

 

 

下面通過一個簡單的例子,來介紹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中找不到就會報錯。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM