@TOC
笔者曾经写过一篇文章,介绍了如何根据 ABAP 错误消息找到准确的抛出该错误消息的代码位置:
这七种武器的第四种,即根据 ABAP 系统提供的两款标准工具,输入关键字,在指定的 ABAP 开发包里,搜索并列出所有包含了指定关键字的 ABAP 代码的准确位置。
本文及后续步骤,我们就来给尚未使用过这两款代码搜索工具的朋友们做一个详细介绍。
ABAP 代码搜索工具:ABAP 报表 RS_ABAP_SOURCE_SCAN
这个报表的名称,笔者是这样记忆的。
RS 代表 Reuse Service,可重用的服务。SOURCE SCAN 代表源代码扫描。
执行报表后,看到下图所示的输入界面。
笔者绝大多数时候,只使用了这个报表的 1 ~ 4 输入参数,如下图所示:
(1) 搜索的关键字。注意这个工具支持指定一个 正则表达式
作为搜索关键字。
(2) Package:在哪些 ABAP 开发包里进行搜索。
(3) 在指定的 function group 内搜索。
(4) 在指定的 Class 范围内搜索。
一般来说,搜索条件指定越详细,则搜索范围越小,则搜索速度越快。
我们来看一个实际工作中的例子。
下图是 SAP CRM 产品主数据的搜索界面。
用户可以在 UI 的下拉菜单里,指定不同组合的搜索条件来查询产品主数据:
使用 SAP CRM 这个产品的客户,其后台产品主数据的规模通常都是很大的,存放产品主数据的数据库表记录数动辄上千万,本教程之前的步骤曾经提到,OPEN CURSOR 和 FETCH NEXT CURSOR 这对关键字,是用来在这种记录数众多的数据库表里读取时避免高内存消耗的一种有效方式:
- 77. 简单聊聊 ABAP 变量消耗的内存空间这个话题
- 78. 浅谈 ABAP 程序运行时出现『内存耗尽』错误的问题
- 79. 使用 OPEN CURSOR 和 FETCH NEXT CURSOR 对 SAP 数据库表进行分块读写
- 80. 使用事务码 SAT 比较传统的 SELECT SQL 语句和 OPEN / FETCH CURSOR 分块读取 ABAP 数据库表两种方式的性能差异
- 81. 使用 SAP ABAP Memory Inspector 对应用程序消耗内存进行检测时常犯的错误
实际工作中的一个需求:找到 SAP CRM 产品主数据搜索实现里使用了 OPEN CURSOR 关键字的准确位置
现在我们工作中接到一个调研需求:找出 SAP CRM 产品主数据标准程序里调用 OPEN CURSOR / FETCH NEXT CURSOR 的代码位置。
假设是一个刚接触 SAP CRM 不久的新人被分配到这个任务,组里的老同事只告诉他,SAP CRM 产品搜索实现的入口函数是 CRM_PRODUCT_GETLIST2
.
详细使用方法参考这篇文章。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。