本文通过一些实际的例子,介绍 ABAP Repository Information System 的使用技巧。
顾名思义,ABAP Repository Information System,是一个巨大的仓库信息系统,存放了各种类型的 ABAP 开发对象。
使用事物码 SE80 打开这个仓库信息系统。进入之后,看到的页面如下:
当然,大家 SE80 后看到的页面,不一定和我完全一致。我们可以在 SE80 的 Utilities 菜单里,选择应该显示哪些标签出来:
比如我点击 Select All,把 SE80 支持的所有标签页全部放出来:
最后的界面如下:
本文着重介绍 Repository Information System 的用法。
Development Coordination
可以根据各种输入条件查询 ABAP 开发包。可以把 ABAP 开发包理解成一个容器,里面能存放各种类型的 ABAP 开发对象,好比一个抽屉,里面能装各种杂物一样。任何 ABAP 开发对象,新建之后保存之前,系统都会弹出提示框,让开发人员选择,将这个开发对象存储在哪一个 ABAP 开发包里。
搜索结果:
上图演示了根据 Package 的名称来搜索的功能,意思是:搜索系统所有以 $ZJE 开头的 ABAP 开发包。ABAP 开发包也能看作是一种广义上的 ABAP 对象,$ 和 Z 都是 ABAP 对象的命名规范,意思是该对象是本地存储,不能通过传输请求(Transport Request) 导入到其他系统。传输请求(Transport Request) 是 ABAP 一个特色概念,若干个 ABAP 开发对象可以依附于同一个传输请求,通过该请求,这些 ABAP 开发对象可以导入到其他系统。可以把传输请求想象成卡车,把分配给传输请求的 ABAP 开发对象,想象成卡车上运输的货物。
例如搜索所有描述字段包含了字符串 Product 的传输请求:
点击时钟图标或者按键盘 F8 之后,执行搜索,得到结果:
随便双击搜索结果里某一个传输请求,即可看到该请求内包含的 ABAP 对象:
ABAP Dictionary
ABAP 字典,能查询到事物码 SE11 里创建的 ABAP 数据对象。
下图是事物码 SE11 的界面,我们通常使用 SE11,进行 ABAP 数据结构,比如数据库表,数据类型的增删改和浏览操作。
但是对于一些查找需求,比如查询所有“包含了字段名称 PRODUCT_GUID”的数据库表,用 SE11 就无法完成这个需求。
但是使用 Repository Information System 可以轻易实现:
下图右边这些橙色的高亮区域,即代表包含了字段 PRODUCT_GUID 的所有数据库表名称。
Program Library
下图例子为查找所有名称包含了 CRM_PRODUCT_GET 的 function module:
Class Library
这也是 ABAP Repository Information System 极为有用的查询功能之一。
列出所有包含了方法 GET_FOCUS 的 ABAP 类:
结果:
查找所有包含了 private 属性,且名称为 CONTEXT 的 ABAP 类:
搜索结果:
可以随便双击一个结果确认:
基于 Events 和 Types 作为搜索条件的查询方式,和上述已经介绍的方式完全一致,这里不再赘述。
Enhancements
查询系统里最后被用户名 WANGJER 修改的 ABAP 增强:
搜索结果:
Message numbers
这也是一个极其有用的功能。比如我在事物码 COMMPR01 里,试图打开一个实际并不存在的产品,会遇到错误消息:No products found.
只需要根据 No products found 进行查询:
即可得到搜索结果:这条错误消息的 message class 为 COM_PRODUCT_WB_UI, id 为 101.
双击即可看到明细:
通过 Repository Information System 查询出来的 Message Class 和 ID,同该消息弹出框里点击这个黄色问号图标看到的信息是一致的:
更多Jerry的原创文章,尽在:"汪子熙":