在ABAP裡實現條件斷點的三種方式

i042416發表於2018-02-25

背景

有不同的同事問我這個問題:例如下圖的LOOP要執行1000次,我只對其中的某一次比如第501次迴圈感興趣,我肯定不可能按500次F5然後進入第501次的除錯。或者我只對LOOP裡某個變數為某一個具體值的那一次迴圈感興趣。如何才能避免重複按F5,讓斷點直接停在滿足我期望的條件上?

在ABAP裡實現條件斷點的三種方式

其實有三種方法實現。

方法1 - 使用ABAP偵錯程式自帶的條件斷點功能

假設上圖的例子裡,我希望迴圈體內的第15行,當<data>等於22時觸發斷點。

建立一個新的動態斷點:

在ABAP裡實現條件斷點的三種方式

在此處維護該斷點觸發的條件:

在ABAP裡實現條件斷點的三種方式

按F8,當<data>的值在迴圈體內被賦以22時,斷點觸發:

在ABAP裡實現條件斷點的三種方式

方法2 - 採用如下選單建立觀察點

在ABAP裡實現條件斷點的三種方式
在ABAP裡實現條件斷點的三種方式

這種方法和法1類似。

在ABAP裡實現條件斷點的三種方式
在ABAP裡實現條件斷點的三種方式

方法3 - 使用ABAP偵錯程式指令碼

切換到Script tab,建立一個新的指令碼:

在ABAP裡實現條件斷點的三種方式

點選Script嚮導按鈕, 雙擊選項Variable Value(for Simple Variable):

在ABAP裡實現條件斷點的三種方式

這個嚮導會自動生成一些指令碼原始碼,也就是下圖紅色方框內的程式碼。我們需要做的事情就是手動寫下第51行到第53行的程式碼。點選按鈕"Save As"儲存這段指令碼並給其取個名字,例如ZJERRY_TEST。

在ABAP裡實現條件斷點的三種方式

再次啟動您的程式,載入剛才儲存的指令碼ZJERRY_TEST。

在ABAP裡實現條件斷點的三種方式

然後點選下面的按鈕:

在ABAP裡實現條件斷點的三種方式

斷點同樣會自動停下來:

在ABAP裡實現條件斷點的三種方式

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:

在ABAP裡實現條件斷點的三種方式
在ABAP裡實現條件斷點的三種方式

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2151230/,如需轉載,請註明出處,否則將追究法律責任。

相關文章