云端ABAP应用调试方法是什么
本篇内容介绍了“云端ABAP应用调试方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联建站专业为企业提供清镇网站建设、清镇做网站、清镇网站设计、清镇网站制作等企业网站建设、网页设计与制作、清镇企业网站模板建站服务,10年清镇做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
Jerry之前在SAP Cloud Platform上进行nodejs和Java开发的时候,对运行在云上的用这两门语言开发的应用的单步调试很头痛。尽管仍然可以通过Jerry这篇文章 如何提高后台服务应用问题的排查效率?日志 VS 远程调试 里介绍的端口映射方式实现在本地电脑上调试云端应用的功能,但Jerry还是怀念On-Premises ABAP里面那种单步调试的便捷性——鼠标轻轻一点,断点即设置好,无需任何配置,立即就能进行单步调试。
那么现在ABAP到了云端后,其单步调试还和之前的On-Premises环境里一样易于使用么?答案是肯定的。
咱们就拿一个具体例子来体验。
Jerry通过Restful ABAP Programming系列的前两篇,已经开发出了一个支持增删改查,支持自定义数据校验和Action的Fiori应用。
我选中ID为103这条记录,点击Accept Travel按钮后,期望通过该Action将其状态设置为Accepted:
不幸的是,我没能看到期望中的状态变化,而是下面这个所有ABAP编程人员都不愿意看见的ABAP运行时错误提示界面。
不过,大家注意到了上图右下角的Debug超链接么?和SAPGUI一样,点击之后立即就能打开调试器,能够观察发生这个运行时错误的调用栈,引起错误的详细代码位置和相关变量的值。
顺便提一句,如果您想自定义在SAP GUI里出现的ABAP运行时错误显示(就是在On-Premises环境下ST22事务码里看到的内容),比如添加一段"佛祖保佑,永无BUG",那么可以参考Jerry这篇文章:
你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧
回到ABAP Development Tool里,我们先点击Show超链接,就可以看到运行时错误明细:Short Text告诉我们,我们点击Accept按钮后,相关的处理框架有意地抛出一个CX_CSP_ACT_RESPONSE的异常。抛出异常的位置是在程序CL_CSP_ACT_CHECK_FEATS_ACTIONS里,这暗示我们,这个错可能和Action执行前的检查(CHECK)有关。
继续向下滑动鼠标,发现在框架代码内,因为从第353行内表it_feature_result里没有读出任何内容,因此sy-subrc不为0,导致进入第355行的RAISE SHORTDUMP分支。
在SAP Cloud Platform ABAP环境下当前登录用户发生的所有运行时错误,可以在ABAP Development Tool的Feed Reader视图下查看,这个功能相当于SAP GUI里的ST22事务码。
现在我们关于这个运行时错误的静态信息了解得差不多了,下一步在调试器里观察。
重新启动Fiori应用,再次点击Accept按钮,出现运行时错误后点击Debug超链接,ABAP调试器自动弹出,引起运行时错误的那一行代码被高亮,同时左边显示出调用栈。
把鼠标放在it_feature_result上,发现这个内表是空的,当然无法从里面读出数据了。这个内表是当前ABAP类CL_CSP_ACT_CHECK_FEATS_ACTIONS的方法handle_rejected_instances的输入参数,需要搞清楚为啥这个输入参数为空。
从抛出运行时异常的栈帧往外看一帧,就知道这个输入的内表是通过第291行的execute_feature_controllers生成的,这个方法会通过回调函数的方式,调用我们在Behavior Definition实现的一个get_features方法里:
这里我们就找到了引起这个运行时错误的根源:因为之前Jerry出于测试目的,注释了一段代码,导致get_features被框架回调时,没有返回框架期望的数据:
当Jerry把这段需要的代码重新enable然后设置断点,点击Accept按钮,通过调用栈可以清晰看到框架的execute_feature_controllers是如何调用到我们实现的get_features回调方法的。
“云端ABAP应用调试方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
文章名称:云端ABAP应用调试方法是什么
浏览地址:http://myzitong.com/article/jsoohi.html