使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈

今天是农历鼠年大年初四,本文是鼠年第4篇文章,也是汪子熙公众号第203篇原创文章。

大家这几天在家里宅得如何了?貌似不少朋友都闷坏了。

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第1张图片

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第2张图片

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第3张图片

我们继续学习。

Jerry之前的文章 SAP错误消息调试之七种武器:让所有的错误消息都能被定位 介绍的第五种武器孔雀翎SAT,曾经提到了下面这张SAT的截图:

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第4张图片

大家最常使用SAT的方式,也就是在上图In Dialog区域里,输入事务码,ABAP报表或者Function Module的名称,然后点击Execute按钮. 如此一来,指定的这些ABAP程序会在SAT Trace模式下运行,自动生成包含了执行性能和调用栈等信息,在程序结束退出Trace模式下之后即可查看。

SAT生成的Trace结果,以树形结构显示ABAP程序执行的每一调用栈和性能数据,无论是进行性能分析,还是学习一段陌生代码的执行逻辑,都非常有用。

那么这里有个问题,如果想跟踪或者想研究的应用,是通过浏览器打开的,例如SAP S/4HANA Fiori应用,SAP ABAP WebDynpro,WebClient UI这种,倘若想研究浏览器里某个应用点了某个按钮之后,背后发生了什么,如何用SAT来跟踪?这也是Jerry的同事过去经常问我的一个问题。

尽管我们可以用SAT界面右部的In Parellel Session来完成,但Jerry觉得其步骤稍嫌繁琐,反正Jerry从来不用,详细步骤在这篇SAP社区博客里有详细介绍:

https://blogs.sap.com/2011/01/18/next-generation-abap-runtime-analysis-sat-how-to-analyze-program-flow/

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第5张图片

本文介绍另一种办法,这也是Jerry工作中用的办法。

假设有一个SAP Fiori应用,点了某个按钮后,会触发一个OData服务调用,从ABAP Netweaver服务器上取数据。我已经在Chrome开发者工具里把这个OData服务的url抄了下来,维护在Postman里,随时可以重复调用。

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第6张图片

这种方法的思路概括如下:

(1) 在要跟踪的后台代码的起始和结束的位置各打一个断点,假设起始位置断点为1,结束位置为2.
(2) 在浏览器或者其他工具里启动应用,触发断点1,此时在调试器里开启SAT的Trace模式。
(3) 调试器里直接按F8,程序会执行到断点2然后停下来。此时在调试器里关闭SAT的Trace模式。
(4) 结束程序的执行,回到SAT,查看Trace结果。

这种方法的关键在于找准断点1和断点2的位置。如果是跟踪自己熟悉的应用,找准位置不难;如果跟踪的应用自己不熟悉,那么就在框架开始执行和结束的位置各设置一个断点就好了。

还是以上面的OData服务为例,因为抄下来的url片段包含了/sap/opu/odata/sap, 这起始已经告诉了我们在哪里设置断点。

打开事务码SICF,输入OData然后查询,在结果列表里双击OData节点:

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第7张图片

凡是浏览器里从ABAP Netweaver后台发起的HTTP调用,只要url包含/sap/opu/odata, 必定会被SICF事务码里odata这个节点分配的ABAP Handler类处理。

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第8张图片

双击进入这个类的HANDLE_REQUEST方法,在其方法开始的位置设置断点1,在这个方法的最后一行设置断点2.

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第9张图片

现在打开浏览器或者执行Postman以触发断点1,在调试器里点击New Tool按钮,

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第10张图片

在弹出窗口里,点击Special Tools里的Trace按钮,

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第11张图片

双击这个图标,开启SAT的跟踪模式:

Status栏看到绿灯,说明当前已经在Trace模式了:

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第12张图片

F8执行到第二个断点,双击下图蓝色区域的图标以关闭SAT跟踪模式。关闭后,Status栏的绿灯变红,同时TraceFile里出现一个卷轴图标,提示我们SAT跟踪文件已经生成了。

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第13张图片

打开SAT事务码,看到这个成功生成的结果文件。

树形结构的调用栈,每个栈的执行性能清晰地罗列出来。

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第14张图片

大家可以把这种方法和Jerry在文章开头提到的博客里介绍的另一种办法做比较,看自己更喜欢哪一种。

使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈_第15张图片

感谢阅读,祝大家在家中宅得愉快。

更多阅读

  • Jerry的ABAP, Java和JavaScript乱炖

  • ABAP开发人员未来应该学些什么

  • Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现

  • Jerry的ABAP原创技术文章合集

  • 300行ABAP代码实现一个最简单的区块链原型

  • 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数

  • 在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务

  • ABAP vs Java, 蛙泳 vs 自由泳

  • 聊聊C语言和ABAP

  • 动手使用ABAP Channel开发一些小工具,提升日常工作效率

  • 我用ABAP做过的那些无聊的事情

  • 不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧

  • 使用Visual Studio Code编写和激活ABAP代码

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

  • 在SAP云平台ABAP编程环境上编写第一段ABAP程序

  • SAP官方发布的ABAP编程规范

  • ABAP Code Inspector那些隐藏的功能,您都知道吗?

  • 还在用ABAP进行SAP产品的二次开发?来了解下这种全新的二次开发理念吧

  • ABAP Netweaver体内的那些寄生式编程语言

  • 从SAP社区上的一篇博客开始,聊聊SAP产品命名背后的那份情怀

  • 云端的ABAP Restful服务开发

  • 如何在SAP云平台ABAP编程环境里把CDS view暴露成OData服务

  • 使用abapGit在ABAP On-Premises系统和SAP云平台ABAP环境之间进行代码传输

  • 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用

  • Jerry带您了解Restful ABAP Programming模型系列之二:Action和Validation的实现

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

  • SAP云平台上的ABAP编程环境里如何消费第三方服务

  • ABAP开发者上云的时候到了 - 现在大家可以免费使用SAP云平台ABAP环境的试用版了

  • 学而不思则罔 - SAP云平台ABAP编程环境的由来和适用场景

  • SAP云平台里的三叉戟应用

  • 如何基于Restful ABAP Programming模型开发并部署一个支持增删改查的Fiori应用

  • SAP 2019 TechEd Key Note解读:云时代下SAP从业人员如何做二次开发?

  • 有哪些ABAP关键字和语法,到了ABAP云环境上就没办法用了?

  • ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了

  • 利用ABAP 740的新关键字REDUCE完成一个实际工作任务

  • 一段让人瑟瑟发抖的ABAP代码

  • 昨日万圣节ABAP怪兽级代码谜团,公布答案啦

  • 介绍一种在ABAP内核态进行内表高效拷贝的方法

  • 使用SAP Cloud Application Programming模型开发OData的一个实际例子

  • 当ABAP遇见普罗米修斯

  • 使用ABAP绘制可伸缩矢量图

  • ABAP开发环境语法高亮的那些事儿

  • SAP错误消息调试之七种武器:让所有的错误消息都能被定位

  • 使用ABAP操作Excel的几种方法

  • SAP GUI里的收藏夹事务码管理工具

  • SAP GUI和Windows注册表

  • 有了Debug权限就能干坏事?小心了,你的一举一动尽在系统监控中

  • ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX这些东东是什么鬼

  • 实现ABAP条件断点的三种方式

要获取更多Jerry的原创文章,请关注公众号"汪子熙":


你可能感兴趣的:(使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈)