今天是农历鼠年大年初四,本文是鼠年第4篇文章,也是汪子熙公众号第203篇原创文章。
大家这几天在家里宅得如何了?貌似不少朋友都闷坏了。
我们继续学习。
Jerry之前的文章 SAP错误消息调试之七种武器:让所有的错误消息都能被定位 介绍的第五种武器孔雀翎SAT,曾经提到了下面这张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来跟踪?这也是Jerry的同事过去经常问我的一个问题。
尽管我们可以用SAT界面右部的In Parellel Session来完成,但Jerry觉得其步骤稍嫌繁琐,反正Jerry从来不用,详细步骤在这篇SAP社区博客里有详细介绍:
Next Generation ABAP Runtime Analysis (SAT) How to analyze program flow
本文介绍另一种办法,这也是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事务码,看到这个成功生成的结果文件。
树形结构的调用栈,每个栈的执行性能清晰地罗列出来。
大家可以把这种方法和Jerry在文章开头提到的博客里介绍的另一种办法做比较,看自己更喜欢哪一种。
感谢阅读,祝大家在家中宅得愉快。
更多阅读
- 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条件断点的三种方式
相关推荐
程序跟踪是 SAP 系统性能调优的另一个重要工具,包括 ABAP Trace、SAT 和 SQL Trace。这些工具可以帮助管理员跟踪程序的执行过程,identify 性能瓶颈并进行优化。 程序调优是 SAP 系统性能调优的核心部分,包括内表...
SAP ABAP 程序性能调优介绍 SAP ABAP 程序性能调优是指通过对 SAP ABAP 程序的优化,...通过对用户交互过程、系统监控、程序跟踪、程序调优、SQL 优化等方面的知识点的掌握,可以有效地提高 SAP 系统的性能和可靠性。
SAT 问题是计算机科学中一个非常重要的问题,解决这个问题需要使用高性能计算和并行算法。DP 并行算法和 DPLL 算法是解决 SAT 问题的两种常用方法,高性能计算和 MPI 是实现这些算法的有力工具。
详解使用SAT对ABAP程序进行性能分析视频教程
- SAT:SAP应用程序测试工具,用于性能测试和系统健康检查。 这些Tcodes是BASIS管理员日常工作中不可或缺的一部分,他们通过这些工具确保SAP系统的稳定运行、高效性能以及数据安全。了解和熟练掌握这些Tcodes的...
通过使用SAT格式,ABB能够实现跨平台的设计协同,优化工作流程,提升工作效率,并确保机器人造型的精确性和功能性。这份PDF文件很可能是对这种应用的详细阐述,可能包含具体的案例、步骤和最佳实践,对于理解如何在...
创建一个新的权限对象并将其应用于程序中进行权限检查是SAP安全管理和开发工作中的一项重要任务。 1. **创建自定义权限对象**:首先通过事务代码`PFCG`(权限对象创建)创建一个自定义权限对象。在创建过程中,需要...
SAT,SIM工具包,是Sim卡上的一种应用程序接口,它允许运营商在用户的Sim卡上部署服务和应用,而无需改变手机硬件或操作系统。SAT工具包提供了丰富的命令集,允许用户通过Sim卡与网络交互,执行各种操作,如订阅新闻...
1. SAT和SMT求解器基础:介绍这两个工具的基本概念和应用。 2. SMT-LIB语言详解:深入探讨SMT-LIB的语法、结构和在验证中的作用。 3. 如何使用SMT-LIB与SMT求解器交互:展示如何编写SMT-LIB代码并将其连接到求解器。...
SAT算法,全称为Boolean Satisfiability Problem(布尔满足问题),是一种重要的计算机科学理论...在实际应用中,通过结合各种优化技术,如冲突驱动的 clauses learning,SAT求解器能够在大规模问题上达到很好的性能。
证明 it is unsatisfiable, but its efficiency is relatively low; while the local search algorithm has a faster solving speed...这一研究对于推动SAT算法的发展,尤其是在复杂问题求解和实际应用中具有重要意义。
- 使用SAT(Transaction Code: ST05)运行分析工具,根据注释和形式名称定位。 - **Customer-Exit查找**: - 查找E类(Function Exits):在SAP发布的版本中,通过调用`CALL CUSTOMER-FUNCTION`找到函数模块。 -...
### 基于寻找2-SAT子问题的SAT算法 #### 概述 在理论计算机科学领域中,可满足性问题(Satisfiability Problem, ...这种算法为解决复杂的SAT问题提供了新的思路和方法,有望在未来的研究中得到更广泛的应用和发展。
基于 DPLL 的完备性 SAT 算法研究 (1)预处理:将公式转换为对应的CNF (2)加速搜索的一些启发式策略: BCP(Boolean Constraint Propagation,布尔约束传播)、变量决策策略、冲突分析、子句学习、回溯机制 (3...
"【2-sat】专题~ - Amb@HDU - 博客园_files"和"2-SAT总结 - kuangbin - 博客园_files"这两个文件夹可能包含了与博客文章相关的图片、代码示例或其他辅助材料,有助于读者更好地理解2-SAT的实现和应用。 总的来说,...
Minisat是一款开源的、高效的布尔可满足性问题(SAT)求解器,由Erik Engebak和Niklas Een在2003年开发。SAT问题是最著名的NP完全问题之一,是计算机科学理论中的一个重要研究领域。Minisat因其小巧、高效且易于扩展...
"sat benchmark"可能指的是包含所有测试数据的文件夹或压缩包,其中包含了各种3-SAT问题实例,每例都有不同的难度和规模,旨在全面地测试算法的性能。 综上所述,"3sat 问题的benchmark"是一系列用于评估3-SAT问题...
SAT 考试的报名和考务管理由 College Board 负责,考试的出题和评分则由 Educational Testing Service (ETS) 负责。考试的试卷包括阅读、数学、写作三个部分,每个部分都有其特定的题型和评分标准。 考试形式 SAT ...
SAT 问题即命题逻辑公式的可满足性问题(satisfiability problem),是计算机科学与人工智能基本问题,是一个典型的 NP 完全问题,可广泛应用于许多实际问题如硬件设计、安全协议验证等,具有重要理论意义与应用价值...
这表明MMAS-SAT算法具有较高的搜索效率和较强的全局寻优能力,非常适合用于求解复杂的SAT问题。 综上所述,通过将SAT问题转换为无约束的离散优化问题,并结合改进的最大最小蚁群系统(MMAS-SAT)算法,我们提供了一种...