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