分享

如何对 SAPGUI 里的 ABAP 代码语法检查功能进行自定义增强

 汪子熙 2024-03-21 发布于上海

如今像 Visual Studio Code,Eclipse,Sublime Text,甚至 Chrome 这些编程 IDE,代码编辑器和开发辅助工具,通过 Extension & Plugin 的方式,来对其增添额外功能,仿佛已经成为编程工具圈里的标配了。

和这些后辈们相比,SAPGUI 算是爷爷级的存在了。

其实 SAPGUI 里的 ABAP 代码编辑器,比如 SE24,SE37,SE38 和 SE80,UI 和逻辑均由 ABAP 编写。因此理论上来说,一个 ABAP 开发者,如果觉得这些事务码某些方面的功能有所欠缺,大不了自己动手创建增强就行了。

只不过 SE80 等事务码的内部设计和逻辑,无论国内还是国外的技术博客,讲这一块的资料都很稀缺,所以很多想自己动手的朋友,也不知道从哪里入手。

本文就从 SE80 等 ABAP 代码编辑器的语法检查功能,如何去定制化作为例子,介绍 SAPGUI 环境下开发工具增强的实现步骤。

在 SAP 社区上已经有一些博客,介绍了如何在 ABAP Code Inspector 或 ATC Check 中,实现自定义的语法检查:

https://blogs./2006/11/02/code-inspector-how-to-create-a-new-check/

在 SAPGUI 代码编辑器里,需要点击多次鼠标才能触发这些自定义实现的检查逻辑。

我这个人比较懒,能点一次鼠标或键盘就能完成的操作,我绝不想点两次。本文介绍的自定义语法检查逻辑,通过 SAPGUI 快捷键 Ctrl+F2 就能直接触发。

比如打开一个 ABAP 类的某个方法,点击语法检查图标,或按快捷键 Ctrl+F2:

这会触发我实现的自定义语法检查,具体逻辑是:

如果当前方法的总行数超过了硬编码的阈值,比如说 100,自定义语法检查的实现,就会在 Class Builder 中显示 Warning 消息,如下图所示:

对于仅仅使用 SAPGUI 来完成业务操作的用户来说,可能会认为在 SAPGUI 中的操作,比如在 Class Builder 类中双击一个方法,看到自己想要查看的内容,是一件顺理成章的事情。然而这些工具本身,底层的处理逻辑的实现复杂度,远远超出普通人的想象。

比如我在 SE80 里打开一个 ABAP 报表,双击某个 subroutine,在右边看到其源代码:

个操作背后的处理流程如下图所示:

ABAP Workbench 中由用户发起的每一个操作,都被类 CL_WB_REQUEST 的一个实例封装,这个实例中包含了有关给定操作的所有详细信息,例如被点击对象的对象名称和对象类型(类方法,透明表或任何其他 ABAP 仓库对象),以及操作类型(增删改,查看等等)。

不同的请求操作类型由不同的 Handler Classes 来服求,这些类在配置表 WBREGISTRY 中统一维护。这个配置表的内容由类 CL_WB_REGISTRY 暴露。

类 CL_WB_MANAGER 作为一个中介,通过 CL_WB_REQUEST 的实例,以统一的方式与这些工具进行通信。

在有的 ABAP 代码编辑器的操作场景下,用户进行某种操作后,出于操作复杂性的因素,无法仅仅通过查看配置表 WBREGISTRY 来简单地确定对应的处理器类。在这种情况下,可以通过实现接口 IF_WB_DECISION_CLASS,来编写如何动态决定出需要指派哪一个 Handler Class 去响应用户发起的请求。

下面是对 ABAP 类方法的代码行数这一自定义语法检查的详细实现步骤。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章