Jerry带您了解Restful ABAP Programming模型系列之三:云端ABAP应用调试

简介: Jerry的Restful ABAP Programming模型介绍系列的前两篇文章:30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用Jerry带您了解Restful ABAP Programming模型系列之二:Action和Validation的实现今天咱们来聊聊SAP云平台ABAP环境上的调试问题。

Jerry的Restful ABAP Programming模型介绍系列的前两篇文章:

  • 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用
  • Jerry带您了解Restful ABAP Programming模型系列之二:Action和Validation的实现

今天咱们来聊聊SAP云平台ABAP环境上的调试问题。

Jerry在SAP社区上写了600多篇博客,阅读量最高的大概要算下面这篇写于2013年的文章:Six kinds of debugging tips to find the source code where the message is raised

clipboard1,1

其实实际阅读量远大于14万,因为2016年SAP社区改版,之前的阅读量清零了。

这个数字也说明广大SAP开发者们对代码调试这个话题的重视程度。

clipboard2,2

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:

clipboard3,3

不幸的是,我没能看到期望中的状态变化,而是下面这个所有ABAP编程人员都不愿意看见的ABAP运行时错误提示界面。

clipboard4,4

不过,大家注意到了上图右下角的Debug超链接么?和SAPGUI一样,点击之后立即就能打开调试器,能够观察发生这个运行时错误的调用栈,引起错误的详细代码位置和相关变量的值。

顺便提一句,如果您想自定义在SAP GUI里出现的ABAP运行时错误显示(就是在On-Premises环境下ST22事务码里看到的内容),比如添加一段"佛祖保佑,永无BUG",那么可以参考Jerry这篇文章:

你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧

clipboard5,5

回到ABAP Development Tool里,我们先点击Show超链接,就可以看到运行时错误明细:Short Text告诉我们,我们点击Accept按钮后,相关的处理框架有意地抛出一个CX_CSP_ACT_RESPONSE的异常。抛出异常的位置是在程序CL_CSP_ACT_CHECK_FEATS_ACTIONS里,这暗示我们,这个错可能和Action执行前的检查(CHECK)有关。

clipboard6,6

继续向下滑动鼠标,发现在框架代码内,因为从第353行内表it_feature_result里没有读出任何内容,因此sy-subrc不为0,导致进入第355行的RAISE SHORTDUMP分支。

clipboard7,7

在SAP Cloud Platform ABAP环境下当前登录用户发生的所有运行时错误,可以在ABAP Development Tool的Feed Reader视图下查看,这个功能相当于SAP GUI里的ST22事务码。

clipboard8,8

现在我们关于这个运行时错误的静态信息了解得差不多了,下一步在调试器里观察。

重新启动Fiori应用,再次点击Accept按钮,出现运行时错误后点击Debug超链接,ABAP调试器自动弹出,引起运行时错误的那一行代码被高亮,同时左边显示出调用栈。
clipboard9,9

把鼠标放在it_feature_result上,发现这个内表是空的,当然无法从里面读出数据了。这个内表是当前ABAP类CL_CSP_ACT_CHECK_FEATS_ACTIONS的方法handle_rejected_instances的输入参数,需要搞清楚为啥这个输入参数为空。

clipboard10,10

从抛出运行时异常的栈帧往外看一帧,就知道这个输入的内表是通过第291行的execute_feature_controllers生成的,这个方法会通过回调函数的方式,调用我们在Behavior Definition实现的一个get_features方法里:

clipboard11,11

这里我们就找到了引起这个运行时错误的根源:因为之前Jerry出于测试目的,注释了一段代码,导致get_features被框架回调时,没有返回框架期望的数据:

clipboard12,12

当Jerry把这段需要的代码重新enable然后设置断点,点击Accept按钮,通过调用栈可以清晰看到框架的execute_feature_controllers是如何调用到我们实现的get_features回调方法的。

clipboard13,13

希望通过Jerry这个简单的例子能够让大家对SAP Cloud Platform ABAP编程环境里如何进行调试有一个初步的印象,感谢阅读。

本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

相关文章
|
搜索推荐 程序员
Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现
Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现
Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现
|
前端开发 JavaScript Java
Jerry的ABAP, Java和JavaScript乱炖
Jerry的ABAP, Java和JavaScript乱炖
Jerry的ABAP, Java和JavaScript乱炖
Jerry自己写的ABAP处理中文字符的工具类
Jerry自己写的ABAP处理中文字符的工具类
144 0
|
SQL 监控 JavaScript
Jerry的ABAP原创技术文章合集
我之前发过三篇和ABAP相关的文章:
156 0
Jerry的ABAP原创技术文章合集
Jerry Wang的ABAP Development Tool培训材料 - SAP 引入ADT的初衷
Jerry Wang的ABAP Development Tool培训材料 - SAP 引入ADT的初衷
103 0
Jerry Wang的ABAP Development Tool培训材料 - SAP 引入ADT的初衷
|
JavaScript Java 开发者
Jerry带您了解Restful ABAP Programming模型系列之三:云端ABAP应用调试
Jerry带您了解Restful ABAP Programming模型系列之三:云端ABAP应用调试
148 0
Jerry带您了解Restful ABAP Programming模型系列之三:云端ABAP应用调试
Jerry带您了解Restful ABAP Programming模型系列之二:Action和Validation的实现
相信通过Jerry的前一篇文章 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用,想必大家对Restful ABAP Programming模型已经有了一个最基本的了解吧? 简单回忆一下,我们在前一篇文章里,在SAP云平台ABAP编程环境里创建了一个Z表,然后基于这张自定义数据库表创建了CDS view,基于该view创建Service Definition,把view暴露成服务,然后通过Behavior Definition实现对Z表的增删改查。
630 0
|
SQL Java 关系型数据库
Jerry的ABAP原创技术文章合集
我之前发过三篇和ABAP相关的文章: 1. Jerry的ABAP, Java和JavaScript乱炖 这篇文章包含我多年来在SAP成都研究院使用ABAP, Java和JavaScript工作过程中的一些感悟: 三种语言里一些具体技术点的横向比较。
2751 0
|
JavaScript 前端开发 Java
Jerry的ABAP, Java和JavaScript乱炖
写这个系列的初衷是SAP Chengdu office有越来越多的应届毕业生加入,这些新同事通过在大学的专业学习,具备了Java和JavaScript背景,但是进入SAP之后大家觉得ABAP没有Java和JavaScript好学。
1372 0
|
搜索推荐 程序员
Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现
2017年4月29日~5月1日,国际劳动节, 三天的小长假。 在国内,小长假往往是这样的: 然而我当时在戏称为”德村”(德国农村)的Walldorf出差并且住在Wiesloch, 这里的五一小长假能听见鸟叫,虫鸣,和风吹过的声音,除此之外再无其他。
1275 0