在SAP項(xiàng)目中,經(jīng)常會(huì)遇到一個(gè)比較復(fù)雜的程序報(bào)出個(gè)錯(cuò)誤消息(有時(shí)會(huì)是一個(gè)標(biāo)準(zhǔn)SAP程序報(bào)錯(cuò)),但是不知道到底是哪段ABAP代碼出錯(cuò)了。
下面通過(guò)一個(gè)簡(jiǎn)單的例子,來(lái)介紹6種方法來(lái)定位報(bào)message的ABAP程序。
- 程序名 ZMMR020
- 事物碼 ZMM020
- 消息號(hào) TD600【沒(méi)有發(fā)現(xiàn)文本 4500000003 ID F01 語(yǔ)言 ZH】E
錯(cuò)誤的類型:
| 代號(hào) | 類型 | 描述 |
|---|---|---|
| E | Error | 錯(cuò)誤 |
| W | Warning | 警告 |
| I | Information | 信息窗口 |
| A | Abortion | 終止程序 |
| S | Success | 成功 |
第一種 利用Where use list功能
- T-code:SE91
- 輸入
- 點(diǎn)擊Where-Used List【使用位置列表】
- Message Class【消息類】 :TD
- Message【消息】- Number 【編號(hào)】 :600
- 一般會(huì)找到很多程序,這時(shí)候只能靠人工過(guò)濾,找到正確的出錯(cuò)位置,然后設(shè)置斷點(diǎn),再運(yùn)行一下程序,確認(rèn)一下。
第二種 設(shè)置Sy-msgid的Watch Point斷點(diǎn)
- 在命令欄輸入/h,回車激活Debug模式
- 選擇Break./Watchpoint【斷點(diǎn)/監(jiān)控點(diǎn)】窗口
- 選擇Watchpoint【監(jiān)控點(diǎn)】窗口
- Create Watchpoint【創(chuàng)建監(jiān)控點(diǎn)】
- Variable【變量】 :Sy-msgid
- Free Condition Entry【可用條件條目】 := ‘TD’
- Create Watchpoint【創(chuàng)建監(jiān)控點(diǎn)】
- Variable【變量】 :Sy-msgno
- Free Condition Entry【可用條件條目】 := ‘600’
- 激活監(jiān)控點(diǎn)后,回到【桌面 3】窗口,點(diǎn)擊F7,跳轉(zhuǎn)到消息處。
第三種 設(shè)置ABAP Command類型斷點(diǎn)
- 在命令欄輸入/h,回車激活Debug模式
- 選擇Breakpoints【斷點(diǎn)】- Breakpoint At【斷點(diǎn)位置】- Breakpoint At Message【消息處斷點(diǎn)】
- 選擇Message【消息】窗口
- 輸入
- ID :TD
- Number 【編號(hào)】 :600
- 回到【桌面 3】窗口,點(diǎn)擊F7,跳轉(zhuǎn)到消息處。
第四種 源代碼查詢
方法1 RS_ABAP_SOURCE_SCAN
- T-code:SE38
- 運(yùn)行RS_ABAP_SOURCE_SCAN
- 輸入
- String Searched For【字符串搜索】 :MESSAGE E600
- Package【包】 :STXD
- 然后手動(dòng)分析結(jié)果,找到出錯(cuò)的ABAP程序。
方法2 CODE_SCANNER
- T-code:CODE_SCANNER
- 輸入
- Package【包】 :STXD
- Search String 1【搜索字符串 1】 :MESSAGE E600
- 然后手動(dòng)分析結(jié)果,找到出錯(cuò)的ABAP程序。
第五種 使用SAT工具
- T-code:SAT
- 選擇Edit【編輯】- Variant【變式】- Create...【創(chuàng)建...】
- 選擇Aggregation【集合】 – None【無(wú)】
- 保存 - DEFAULT
- 然后在SAT主屏幕中輸入
- Variant【變式】 :DEFAULT
- Transaction【業(yè)務(wù)】 :ZMM020
- 點(diǎn)擊Execute【執(zhí)行】
- 運(yùn)行后返回,會(huì)顯示跟蹤結(jié)果,選擇Call Hierarchy【調(diào)用層級(jí)】窗口
- 點(diǎn)擊Find【查找】
- 輸入
- Statement/Event【說(shuō)明/事件】 :MESSAGE E600
- 在Hit List【命中清單】中雙擊行就能跳到具體的ABAP代碼處。
第六種 使用ST05工具
- T-code:ST05
- 點(diǎn)擊Activate Trace,啟動(dòng)追蹤
- 點(diǎn)擊打印彈出錯(cuò)誤信息
- 點(diǎn)擊Deactivate Trace,關(guān)閉追蹤
- 點(diǎn)擊Display Trace,進(jìn)入追蹤信息
- 點(diǎn)擊Execute,執(zhí)行
- 選擇黃色位置,點(diǎn)擊Display ABAP Call Location,顯示報(bào)錯(cuò)代碼位置。