您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“云端ABAP應(yīng)用調(diào)試方法是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
Jerry之前在SAP Cloud Platform上進(jìn)行nodejs和Java開發(fā)的時候,對運(yùn)行在云上的用這兩門語言開發(fā)的應(yīng)用的單步調(diào)試很頭痛。盡管仍然可以通過Jerry這篇文章 如何提高后臺服務(wù)應(yīng)用問題的排查效率?日志 VS 遠(yuǎn)程調(diào)試 里介紹的端口映射方式實現(xiàn)在本地電腦上調(diào)試云端應(yīng)用的功能,但Jerry還是懷念On-Premises ABAP里面那種單步調(diào)試的便捷性——鼠標(biāo)輕輕一點,斷點即設(shè)置好,無需任何配置,立即就能進(jìn)行單步調(diào)試。
那么現(xiàn)在ABAP到了云端后,其單步調(diào)試還和之前的On-Premises環(huán)境里一樣易于使用么?答案是肯定的。
咱們就拿一個具體例子來體驗。
Jerry通過Restful ABAP Programming系列的前兩篇,已經(jīng)開發(fā)出了一個支持增刪改查,支持自定義數(shù)據(jù)校驗和Action的Fiori應(yīng)用。
我選中ID為103這條記錄,點擊Accept Travel按鈕后,期望通過該Action將其狀態(tài)設(shè)置為Accepted:
不幸的是,我沒能看到期望中的狀態(tài)變化,而是下面這個所有ABAP編程人員都不愿意看見的ABAP運(yùn)行時錯誤提示界面。
不過,大家注意到了上圖右下角的Debug超鏈接么?和SAPGUI一樣,點擊之后立即就能打開調(diào)試器,能夠觀察發(fā)生這個運(yùn)行時錯誤的調(diào)用棧,引起錯誤的詳細(xì)代碼位置和相關(guān)變量的值。
順便提一句,如果您想自定義在SAP GUI里出現(xiàn)的ABAP運(yùn)行時錯誤顯示(就是在On-Premises環(huán)境下ST22事務(wù)碼里看到的內(nèi)容),比如添加一段"佛祖保佑,永無BUG",那么可以參考Jerry這篇文章:
你的ABAP程序給佛祖開過光么?來試試Jerry這個小技巧
回到ABAP Development Tool里,我們先點擊Show超鏈接,就可以看到運(yùn)行時錯誤明細(xì):Short Text告訴我們,我們點擊Accept按鈕后,相關(guān)的處理框架有意地拋出一個CX_CSP_ACT_RESPONSE的異常。拋出異常的位置是在程序CL_CSP_ACT_CHECK_FEATS_ACTIONS里,這暗示我們,這個錯可能和Action執(zhí)行前的檢查(CHECK)有關(guān)。
繼續(xù)向下滑動鼠標(biāo),發(fā)現(xiàn)在框架代碼內(nèi),因為從第353行內(nèi)表it_feature_result里沒有讀出任何內(nèi)容,因此sy-subrc不為0,導(dǎo)致進(jìn)入第355行的RAISE SHORTDUMP分支。
在SAP Cloud Platform ABAP環(huán)境下當(dāng)前登錄用戶發(fā)生的所有運(yùn)行時錯誤,可以在ABAP Development Tool的Feed Reader視圖下查看,這個功能相當(dāng)于SAP GUI里的ST22事務(wù)碼。
現(xiàn)在我們關(guān)于這個運(yùn)行時錯誤的靜態(tài)信息了解得差不多了,下一步在調(diào)試器里觀察。
重新啟動Fiori應(yīng)用,再次點擊Accept按鈕,出現(xiàn)運(yùn)行時錯誤后點擊Debug超鏈接,ABAP調(diào)試器自動彈出,引起運(yùn)行時錯誤的那一行代碼被高亮,同時左邊顯示出調(diào)用棧。
把鼠標(biāo)放在it_feature_result上,發(fā)現(xiàn)這個內(nèi)表是空的,當(dāng)然無法從里面讀出數(shù)據(jù)了。這個內(nèi)表是當(dāng)前ABAP類CL_CSP_ACT_CHECK_FEATS_ACTIONS的方法handle_rejected_instances的輸入?yún)?shù),需要搞清楚為啥這個輸入?yún)?shù)為空。
從拋出運(yùn)行時異常的棧幀往外看一幀,就知道這個輸入的內(nèi)表是通過第291行的execute_feature_controllers生成的,這個方法會通過回調(diào)函數(shù)的方式,調(diào)用我們在Behavior Definition實現(xiàn)的一個get_features方法里:
這里我們就找到了引起這個運(yùn)行時錯誤的根源:因為之前Jerry出于測試目的,注釋了一段代碼,導(dǎo)致get_features被框架回調(diào)時,沒有返回框架期望的數(shù)據(jù):
當(dāng)Jerry把這段需要的代碼重新enable然后設(shè)置斷點,點擊Accept按鈕,通過調(diào)用棧可以清晰看到框架的execute_feature_controllers是如何調(diào)用到我們實現(xiàn)的get_features回調(diào)方法的。
“云端ABAP應(yīng)用調(diào)試方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。