开发者社区> jerrywangsap> 正文

SAP ABAP SM50的另类用途 - ABAP工作进程对数据库表读取操作的检测

简介:
+关注继续查看

今天是2020年五一国际劳动节,Jerry祝大家劳动节快乐。

虽然五一国际劳动节来源于一百多年前国外无产阶级的一次大罢工,但由于国情原因,国内很多行业的从业人员,好像天生就是劳碌命。比如程序员行业。

2014年五一劳动节,我在和一个不是总能重现的SAP CRM incident做斗争。详情参考Jerry之前的文章记一次SAP开发工程师给微软Azure报incident的体验.

当时处理完这个复杂的问题后,我复盘总结了经验教训,发布在SAP社区上的博客:

My Tips about how to handle complex and tricky issues

2016年的五一节前一天,4月30日,我写了一篇通过调试方式解决SAP UI5各种问题的合集:

My UI5 debugging tips and experience collection – how to resolve UI5 issues through debugging by yourself

2017年的五一节我在德国“农村”,就着代码和面包度过的:

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



2018年的五一节前后,我在捣鼓区块链:

[300行ABAP代码实现一个最简单的区块链原型]()

2019年的五一节前后,我利用空闲时间,把一位同事在这公众号上写的文章做了简单的修改然后发了出来:一个SAP顾问的回忆:我过去很胖!

不过有付出就有收获,而且周董的作品《四面楚歌》里也唱到,“我只知道好像认真的男人最美丽”。


所以,今年的五一劳动节,让我们继续认真劳动,继续美丽下去吧。

本文标题的SM50事务码,在SAP系统里描述信息是“Work Processes of AS Instance”,即应用服务器实例上的工作进程监控器。

在Jerry的文章 一个13年ABAP老兵的建议:了解这些基础知识,对ABAP开发有百利而无一害 曾经介绍过工作进程(Work Process)的概念。在基于ABAP技术栈的SAP产品里,客户无论是从浏览器,SAPGUI,或者API的方式向SAP系统发起请求,最后的业务处理都是通过这些勤勤恳恳的工作进程完成的。

上述文章还介绍了SM50里能够查看到的工作进程的不同类型,这里不再重复。

本文要介绍的,是使用SM50检测出工作进程长时间读取一张数据库表这个行为的小技巧。SM50界面有一列名为"Current Action Info",如果启动SM50时,当前工作进程正在持续读取一张数据库表,则该列会显示出数据库表的名称。

比如上图显示了编号为9743的工作进程,当前状态为Running,正在client 000以系统用户SAPSYS的身份,执行ABAP系统程序SAPMSSY2, 读取数据库表TBTCO.

我曾经用这个小技巧,完成了实际工作中的一个任务。

在我还在做SAP CRM标准开发时,我需要找出监听了CL_BSP_WD_COLLECTION_WRAPPER这个类抛出的NEW_FOCUS事件的所有ABAP类。

于是我使用ABAP workbench里的Where-Used List功能,等待了5分钟过后仍然出结果。我又以后台作业的方式执行了Where-Used List操作,或许是待检索的ABAP类的总数太过庞大的缘故,十分钟过去了仍无结果。

于是我换了一种方式,打开SE80的Repository Information System,根据如下条件搜索:

然而这个过滤条件只能显示哪些类发布,而非监听了NEW_FOCUS事件。

于是我打开SM50,一眼就看到了当前进程正陷入读取VSEOCOMPDF的泥潭之中。

这是一个数据库视图:

ABAP类和其发布事件的关联关系维护在了数据库表SEOCOMPODF中。我在SE16里按照如下过滤条件进行检索:

不到一秒钟就得到了我想要的列表:

这个例子如果采用我之前文章 SAP错误消息调试之七种武器:让所有的错误消息都能被定位 里提到的工具之一,即用ST05跟踪Where-Used List执行时访问到了哪些表,结果一定会出来长长的一串。而使用SM50的Current Action Info,能避开所有干扰信息,迅速准确找出存储ABAP类和其监听事件的关联关系的存储表。

ABAP开发人员手头上可用的工具很多,如何在不同情形下灵活选择最合适的工具去解决问题,是我们需要不断去练习和提高的。

感谢阅读,祝大家五一劳动节快乐。

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(上)(2)
日常开发过程中,最常用的语句可能就是查询语句了。那么如果从数据库表中查询数据呢?
157 0
工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(上)(1)
日常开发过程中,最常用的语句可能就是查询语句了。那么如果从数据库表中查询数据呢?
193 0
工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(下)(2)
在上一篇文章中,我们介绍了 ABAP 的查询语句关键的三个部分: 1.SELECT result 部分 2.FROM source 部分 3.INTO target 部分
204 0
工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(下)(3)
在上一篇文章中,我们介绍了 ABAP 的查询语句关键的三个部分: 1.SELECT result 部分 2.FROM source 部分 3.INTO target 部分
150 0
工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(下)(1)
在上一篇文章中,我们介绍了 ABAP 的查询语句关键的三个部分: 1、SELECT result 部分 2、FROM source 部分 3、INTO target 部分
69 0
在 SAP ABAP 系统对事物码 SEGW 创建的 OData 服务进行配置并测试试读版
正如本教程的开篇介绍文章SAP OData 开发教程 - 从入门到提高(包含 SEGW, RAP 和 CDP)所提到的,SAP OData 服务开发,从实现技术上来说,可以分为三大类。
43 0
关于 SAPGUI 事物码在 Fiori Launchpad 中嵌入运行的技术细节(一)
笔者之前的文章到底什么样的 ABAP 系统能运行 Fiori 应用曾经提到,我们可以把SAP GUI里的传统事务码放到SAP Launchpad里启动,并在浏览器里运行。
42 0
ABAP 事物码 SE11 的自动化 - 如何用 ABAP 代码创建一个数据库表并激活
ABAP 事物码 SE11 的自动化 - 如何用 ABAP 代码创建一个数据库表并激活
19 0
SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析
SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析
75 0
SAP ABAP SM50的另类用途 - ABAP工作进程对数据库表读取操作的检测
SAP ABAP SM50的另类用途 - ABAP工作进程对数据库表读取操作的检测
64 0
+关注
文章
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
用RxSwift写易维护易读的愉悦代码
立即下载
Flash Player最新安全特性分析 及绕过思路
立即下载
Flash Player最新安全特性分析及绕过思路
立即下载