今天是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各种问题的合集:
2017年的五一节我在德国“农村”,就着代码和面包度过的:
Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现.
2018年的五一节前后,我在捣鼓区块链:
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开发人员手头上可用的工具很多,如何在不同情形下灵活选择最合适的工具去解决问题,是我们需要不断去练习和提高的。
感谢阅读,祝大家五一劳动节快乐。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关推荐
这仅是对“从实例学SAP ABAP编程(1-19章)”可能涉及的知识点的大致概述,每个章节应详细介绍了相应知识点的理论基础、编程技巧以及实例演练,帮助读者快速掌握ABAP编程,并将其应用于实际的SAP系统开发工作中。
以下是一些SAP ABAP中常用的T-CODE及其用途: #### ABAP开发工具 - **SE38**:运行ABAP程序。 - **SE11**:创建ABAP对象。 - **SE12**:调试ABAP程序。 - **SE13** / **SE14** / **SE15**:显示ABAP对象。 - **SE30...
在学习SAP ABAP的过程中,理论与实践相结合至关重要,下面将对这个领域的核心知识点进行详细阐述。 1. **基础语法与数据类型** SAP ABAP拥有丰富的数据类型,如I(整型)、N(数值型)、C(字符型)、D(日期型)...
这个"从实例学SAP ABAP编程(1-19章)"的教程是一个全面的入门指导,适合对SAP ABAP感兴趣的初学者。以下是对该教程各章节可能涉及的知识点的详细解析: 1. **ABAP基础**:这一部分通常会介绍ABAP的基本语法,包括...
### SAP-ABAP-OO 实现 CL-SALV-TABLE 的关键知识点 #### 1. ABAP 面向对象的 ALV 显示方法 在 SAP 的 ABAP 环境中,ALV (Application List Viewer) 是一种非常常用的技术,用于在屏幕上以表格的形式展示数据。传统...
这个函数模块是用户自定义的,它的主要功能是从指定的 Excel 工作表中读取数据并存储到 SAP 内部表中。它可能包含以下几个步骤: - 初始化:设置 `CL_XLSM_FILE` 对象,并打开指定的 Excel 文件。 - 遍历工作表:...
内容简介: 《SAP ABAP开发从入门到精通》以应用实例的形式,讲解了SAPABAP开发的相关知识点,详细介绍了SAPABAP开发者必须掌握的包与变更传输系统(CTS)、数据类型、数据库、模块化程序、内表、调试、ABAP数据...
本文旨在探讨ABAP开发中涉及PP模块的关键知识点,并对生产相关的报表、数据库表及其取数要点进行详细介绍。 #### PP模块常见报表 在ABAP开发过程中,经常会涉及到与生产相关的报表开发。以下是一些常见的生产报表...
在IT领域,SAP ABAP(Advanced Business Application Programming)是一种专用的编程语言,用于开发SAP R/3和SAP NetWeaver系统的企业级应用程序。本教程“实战SAP程序开发——从实例学SAP.ABAP编程1-12”旨在引导...
随着学习的深入,会涉及ABAP的数据存储,如数据库表(内部表和透明表)的创建和操作,以及如何使用ABAP的数据访问语法来与数据库交互。接着,将学习到ABAP报表编程,包括编写动态SQL和使用ABAP的Report程序来生成...
SAP ABAP 实例13-19章-2,由于太大,只能分两个文件传
SAP-ABAP-Certification-Review.pdf
- Tables处理:学会使用SELECT语句从数据库获取数据,以及如何在内部表中操作数据。 - Structures与内部表:创建和使用结构化数据,以及内部表的读写操作。 - Database Communication:理解数据库通信的概念,如...
本资料集“SAP数据表大全ABAP数据表大全”显然提供了关于ABAP数据表的详尽资源,对理解SAP系统的数据结构和数据库操作具有重要意义。 1. **ABAP数据表的类型**: - 透明表:这是最常见的一种数据表类型,数据直接...
SAP ABAP(Advanced Business Application Programming)是SAP公司推出的一种高级业务应用编程语言,用于开发在SAP R/3和SAP NetWeaver平台上的应用程序。这些电子书提供了全面的资源,帮助学习者深入理解并掌握SAP ...
abap的初级教材,很全也很实用,有abap基础介绍,以及form、alv、screen、function等的介绍。包括分为两个包,给需要的朋友
### SAP初探之ABAP-数据库对象 #### 1. 概述 SAP系统作为全球领先的ERP(Enterprise Resource Planning)解决方案提供商,在企业信息化管理领域占据着举足轻重的地位。其中,ABAP(Advanced Business Application ...
《SAP ABAP开发详解与高端应用》这本书深入探讨了SAP ABAP(Advanced Business Application Programming)编程语言,这是SAP系统中用于开发业务应用程序的关键技术。ABAP是SAP平台上的核心编程语言,用于创建自定义...
- SAP Workbench提供了图形化的开发工具,如SE38用于编写和调试ABAP代码,SE16用于查看和编辑数据库表。 - 了解如何使用Transaction Codes进行开发和测试。 7. **ABAP Objects**: - ABAP Objects引入了面向对象...
- SQL语句:ABAP支持标准SQL,如SELECT, INSERT, UPDATE, DELETE等,用于操作数据库。 - Open SQL和Procedures:Open SQL用于用户接口,Procedures用于更复杂的数据库操作。 6. **内部表和表类型** - 内部表:...