`
JerryWang_SAP
  • 浏览: 1001626 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Jerry带您了解Restful ABAP Programming模型系列之三:云端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

 

 

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

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

 

 

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回调方法的。

 

 

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

0
0
分享到:
评论

相关推荐

    SAP ABAP 通用接口日志&restful 动态调用FM

    在SAP ABAP环境中,通用接口日志和RESTful动态调用FM是两个重要的概念,它们在企业级应用开发中发挥着关键作用。本文将详细阐述这两个知识点,并结合RESTful服务,探讨它们如何协同工作。 首先,让我们了解SAP ABAP...

    Abap programming

    在IT领域,ABAP(Advanced Business Application Programming)是一种高级业务应用编程语言,主要应用于SAP系统,用于开发企业级的应用程序。本主题聚焦于“ABAP编程”与“JavaScript”的结合,探讨如何在SAP环境中...

    SAP_ABAP_4.7.rar_SAP abap4_abap_abap chm_abap 4_abap4

    - 数据类型:ABAP有多种数据类型,如CHAR、INT、FLOAT等,用于定义变量。 - 语句结构:包括选择、循环、条件判断等基本控制流程。 - 报表程序:用于生成报表的程序,包括内部表处理和数据输出。 - 对话模块:...

    abap-rap-utilities:ABAP RESTful应用程序编程模型实用程序

    ABAP(Advanced Business Application Programming)是SAP公司开发的一种编程语言,主要用于构建企业级的业务应用。在现代软件开发环境中,RESTful(Representational State Transfer)应用程序编程模型已经成为Web...

    ABAP 帮助 英文版

    ABAP(Advanced Business Application Programming)是SAP公司开发的一种编程语言,主要用于开发SAP系统中的业务应用程序。在“ABAP 帮助 英文版”这个资源中,你将找到一个ABAP4的帮助文件(ABAP.HLP),这对于那些...

    三月 精通 ABAP 编程

    ABAP,全称为Advanced Business Application Programming,是SAP公司开发的一种高级业务应用编程语言,用于构建企业级的应用程序,尤其在SAP系统中扮演着核心角色。本资源“三月精通ABAP”提供了一个深入学习ABAP...

    abap程序员之路

    ABAP(Advanced Business Application Programming)是SAP公司推出的一种编程语言,主要应用于SAP系统,用于开发企业级的业务应用程序。作为一个ABAP程序员,你需要掌握一系列的知识点来踏上你的程序员之路。 首先...

    1500+页的ABAP图文教程+SAP标准教程

    ABAP(Advanced Business Application Programming)是SAP公司开发的一种编程语言,主要用于构建企业级的业务应用。本教程集合了超过1500页的详细内容,涵盖了从基础到高级的ABAP知识,同时结合SAP的标准教程,为...

    abap-platform-refscen-flight:SFlight又回来了! 这是ABAP RESTful编程模型的飞行参考方案

    ABAP RESTful应用程序编程模型的ABAP飞行参考方案ABAP RESTful应用程序编程模型定义了用于在SAP BTP ABAP环境和Application Server ABAP上对SAP HANA优化的Fiori应用程序进行有效的端到端开发的体系结构。...

    sap abap用户指南

    SAP ABAP(Advanced Business Application Programming)是一种编程语言,用于在SAP系统中开发业务应用程序。作为SAP ABAP用户指南,它旨在帮助开发者和使用者理解如何有效地利用ABAP进行编程,以满足企业的需求。本...

    [转]三个月精通ABAP

    总的来说,"三个月精通ABAP"的学习之旅将涵盖ABAP的基本语法、工作台工具、数据库交互、面向对象编程、Web开发以及测试调试等多个方面。通过系统学习和不断实践,你可以成为一名熟练的ABAP开发者,为企业的信息化...

    ABAP Tips

    - **SOAP和RESTful服务**:ABAP支持创建和消费这些类型的Web服务。 - **RFC(Remote Function Call)**:SAP系统间的通信协议,也可用于与外部系统交互。 9. **开发工具与调试** - **SAP GUI**:标准的桌面...

    ABAP GIT 项目 AI SDK FOR ABAP 代码

    2. **ABAP RESTful Programming Model (RPMB)**:为了与AI服务通信,开发者可能需要使用ABAP RESTful Programming Model创建和调用RESTful服务。RPMB提供了一种基于HTTP和JSON的标准方法,使ABAP应用能与其他系统...

    ABAP用户指南(SAP ABAP开发)

    - **RESTful服务**:支持RESTful服务,方便与其他现代应用进行交互。 - **JSON处理**:ABAP支持JSON数据格式的处理。 #### 七、ABAP性能优化 - **代码分析**:使用ABAP的性能分析工具对代码进行检查,找出潜在的...

    实战sap程序开发——从实例学sap abap编程

    ABAP(Advanced Business Application Programming)是SAP系统中的核心编程语言,用于开发企业级业务应用程序。这本书通过丰富的实例,旨在帮助读者掌握ABAP的基础知识以及在实际工作中的应用技巧。 首先,我们要...

    ABAP完整版

    ABAP(Advanced Business Application Programming)是SAP公司推出的一种高级业务应用编程语言,主要用于开发和定制SAP系统。本篇文章将深入探讨SAP ABAP编程的基础知识、关键概念和技术,结合"实战SAP程序开发:从...

    BC402 - Advanced ABAP

    1. **ABAP Objects和面向对象编程**:ABAP Objects是ABAP的一个重要扩展,引入了类、对象、继承、多态等面向对象的概念。通过学习,开发者能够创建更灵活、可复用的代码结构。 2. **Enhancement Framework**:增强...

    ABAP面试-超级经典

    ABAP,全称为Advanced Business Application Programming,是SAP公司开发的一种高级业务应用编程语言,用于构建企业级的应用程序,特别是SAP系统中的模块定制和扩展。在“ABAP面试-超级经典”这个主题中,我们可以...

    abap基础教材-abap基础教材-

    6. **数据模型**:ABAP编程中,数据模型是数据结构的定义,包括表、结构和域。理解如何创建和使用这些数据模型对于构建高效的应用程序至关重要。 7. **工作台组织器**:工作台是SAP GUI的一部分,提供了管理和组织...

    SAP ABAP 大全

    SAP ABAP(Advanced Business Application Programming)是SAP公司开发的一种专用于其R/3系统和NetWeaver平台的编程语言,它在企业级应用开发中扮演着至关重要的角色。 一、ABAP简介 ABAP起源于20世纪70年代,最初...

Global site tag (gtag.js) - Google Analytics