在开始介绍事物码 SAT 之前,让我们简单回顾一下 ABAP Platform 的概念。
ABAP 平台是基于 SAP HANA 数据库和数据管理平台的基于 ABAP 的 SAP 解决方案的基础。ABAP 平台充分利用了 SAP HANA 提供的底层创新。这与 SAP NetWeaver
不同,在 SAP NetWeaver 中,Application Server ABAP 为 SAP支持的所有数据库系统
提供了一个公共层。相比之下,ABAP 平台是完全为 SAP HANA 优化的。
ABAP 平台是基于 ABAP 平台的基础插件。
在 SAP HANA 数据库中,池(pool)和集群表(cluster tables)的概念被认为是过时的。因此,不再支持池表和集群表。任何现有的池表、集群表、表池(table pools)和表集群(table clusters)都已删除。
在 ABAP Platform 里,现在可以配置 ABAP 守护进程(Daemon)的自动启动。配置的守护进程应该由系统或应用程序服务器实例自动启动,并显示在事务 SMDAEMON
中。为了允许配置监控,ABAP Daemons Start-Up configuration视图已经添加到事务中。
Release 7.53与内核 773 一起发布,它不向下兼容任何较低的 ABAP 版本。因此,以技术上不兼容的方式改变了几个关于 ICM 的参数。
ABAP 服务器和 SAP Web Dispatcher 在服务器角色中支持 HTTP/2 协议已经有一段时间了,但是,默认情况下它没有启用。HTTP/2 通过重用单个 TCP 连接和额外的压缩提供了性能改进,特别是在慢速网络中。从7.53版本开始,默认启用HTTP/2协议。
除了在服务器角色中支持HTTP/2外,ABAP HTTP客户端现在也支持HTTP/2协议。如果所有连接参数(目标主机、端口、代理、客户端证书)都相同,建立的连接将跨ABAP HTTP客户端类CL_HTTP_CLIENT的多个实例和多个用户会话重用。如果通信伙伴也支持HTTP/2协议,这种重用可以显著减少已使用的出站连接的数量。
默认情况下,客户端角色中 HTTP/2 的使用是关闭的,以避免可能的不兼容。它可以通过设置profile参数 icm/HTTP/client/support_http2 = true
来打开。
最后,就是本文要介绍的事物码 SAT. 这个事物码是 ABAP 系统里的一个工具,用于对 SAP 应用进行性能监控和度量。
下面是一张 SAP ABAP 系统事物码 SAT 的截图:
大家最常使用SAT的方式,也就是在上图In Dialog区域里,输入事务码,ABAP报表或者Function Module的名称,然后点击Execute按钮. 如此一来,指定的这些ABAP程序会在SAT Trace模式下运行,自动生成包含了执行性能和调用栈等信息,在程序结束退出Trace模式下之后即可查看。
SAT生成的Trace结果,以树形结构显示ABAP程序执行的每一调用栈和性能数据,无论是进行性能分析,还是学习一段陌生代码的执行逻辑,都非常有用。
那么这里有个问题,如果想跟踪或者想研究的应用,是通过浏览器打开的,例如SAP S/4HANA Fiori应用,SAP ABAP WebDynpro,WebClient UI这种,倘若想研究浏览器里某个应用点了某个按钮之后,背后发生了什么,如何用SAT来跟踪?这也是笔者的同事过去经常问我的一个问题。
尽管我们可以用SAT界面右部的 In Parellel Session来完成,但Jerry觉得其步骤稍嫌繁琐,反正Jerry从来不用,详细步骤在这篇SAP社区博客里有详细介绍。
本文介绍另一种办法,这也是Jerry工作中用的办法。
假设有一个SAP Fiori应用,点了某个按钮后,会触发一个OData服务调用,从ABAP Netweaver服务器上取数据。我已经在Chrome开发者工具里把这个OData服务的url抄了下来,维护在Postman里,随时可以重复调用。
这种方法的思路概括如下:
(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节点:
凡是浏览器里从ABAP Netweaver后台发起的HTTP调用,只要url包含/sap/opu/odata, 必定会被SICF事务码里odata这个节点分配的ABAP Handler类处理。
双击进入这个类的HANDLE_REQUEST方法,在其方法开始的位置设置断点1,在这个方法的最后一行设置断点2.
现在打开浏览器或者执行Postman以触发断点1,在调试器里点击New Tool按钮,
在弹出窗口里,点击Special Tools里的Trace按钮,
双击这个图标,开启SAT的跟踪模式:
Status栏看到绿灯,说明当前已经在Trace模式了:
F8执行到第二个断点,双击下图蓝色区域的图标以关闭SAT跟踪模式。关闭后,Status栏的绿灯变红,同时TraceFile里出现一个卷轴图标,提示我们SAT跟踪文件已经生成了。
打开SAT事务码,看到这个成功生成的结果文件。
树形结构的调用栈,每个栈的执行性能清晰地罗列出来。
总结
本文首先介绍了 ABAP Platform 的基本概念,接着详细叙述了事物码 SAT 在对通过浏览器启动的 SAP 应用进行性能监控和测量的具体步骤。