使用 Visual Studio Code 编写和激活 ABAP 代码

Jerry 之前的文章 那些年我用过的SAP IDE 曾经介绍过除了 SAPGUI 之外的其他 ABAP 开发工具和 ABAP 代码浏览工具。
得益于 Netweaver 职责清晰的三层架构,提供了 ABAP 开发环境和运行环境的应用服务器层(下图中间的 Application server layer)作为 ABAP 应用的核心, 其上可以灵活适配不同的展现层(Presentation layer), 比如 WebIDE, Eclipse,和今天要介绍的 Visual Studio Code。

上图中应用服务器层的底层是数据库服务器层,Netweaver 也支持多种主流数据库提供商的服务。例如下图是 Jerry 使用的一个 Netweaver 系统,支持包括 SAP HANA 在内的十种数据库管理系统(DBMS)。

我们简单回顾下之前 Jerry 介绍过的不同的 ABAP 开发工具。
首先是 ABAP Development Tool(简称 ADT), 对 ABAP 程序提供增删查改和激活操作的函数,通过位于路径 sap/bc/下面的 SICF 服务节点 adt 暴露给外部消费者。
ABAP Development Tool 的 Java 端实现就是 Eclipse 的一个扩展,使用 JCO(Java Connector)连接 ABAP 后台的 adt 服务,实现对 ABAP 程序的操作。

关于 ABAP Development Tool 的细节,Jerry 以前已经做过详细介绍,这里不再赘述,可以参考我这些文章:
Jerry 在 SAP Community 上写给老外看的文章:https://blogs.sap.com/2014/08/12/an-example-to-help-you-understand-how-does-adt-work/

而在浏览器里编写 ABAP,即通常意义上的 ABAP WebIDE,实现方式有两种。一种是通过传统的 ITS****(Internet Trasaction Server),通过这种方式在浏览器里显示的 ABAP 代码缺乏语法高亮:

Jerry 写过的相关博客:
Open your SAP GUI transaction in Fiori launchpad
https://blogs.sap.com/2016/12/21/open-your-sap-gui-transaction-in-fiori-launchpad/
How is old SAP GUI transaction embedded into Fiori launchpad
https://blogs.sap.com/2016/12/21/how-is-old-sap-gui-transaction-embedded-into-fiori-launchpad/
另一种技术就是 S/4HANA 某些应用,比如 Custom Logic 采用的,支持语法高亮。

当然这个语法高亮的支持不是天上掉下来的,详细实现参考我的博客:
How ABAP syntax highlight is implemented in WebIDE launched via browser
再回到今天聊的 Visual Studio Code。SAP 成都研究院很多前端开发的同事都向我推荐过这个 IDE。Jerry 试用过之后,印象最深的就是它那超快的启动速度,一流的扩展性和繁荣的生态圈。其扩展应用的丰富程度不亚于 Sublime Text 和 Eclipse 这些老牌开发工具。
和 SAP 自研的 ABAP Development Tool 思路一样,本文介绍的 Visual Studio Code 扩展应用,ABAP Remote File System,也是通过另一种编程语言 TypeScript 去远程消费 ABAP 后台程序的增删查改服务。
该扩展应用的作者叫 Marcello,一位居住在伦敦的程序猿(Jerry 想起了西甲皇家马德里足球队昔日的队宠)。

这个 Visual Studio Code 的扩展是开源的,github 仓库地址:
https://github.com/marcellourbani/vscode_abap_remote_fs
安装和配置的步骤在仓库的 readme 里有详细说明,最简单的方式就是在 Visual Studio Code 里直接用 abap 作为关键字搜索 Market place,然后点 Install 安装。

这个扩展的配置文件 settings.json 的内容可以参考下图:

配置完成后,在 Visual Studio Code 的命令栏里能看到连接 ABAP 系统的指令和 settings.json 里配置的两条记录,任选一个后登入系统,显示该系统下的 ABAP 程序资源。操作它们的方式和基于 Eclipse 的 ABAP Development Tool 大同小异。

当然也有一些 Visual Studio Code 提供的特色功能,比如下图这种类 Google 的即时搜索。

这个扩展本身是不提供 ABAP 代码语法高亮的,需要安装另一个来自 Lars Hvam 贡献的语法高亮扩展。

安装完毕后,ABAP 的语法高亮也能顺利在 Visual Studio Code 里工作了。

下面这张动图来自 Marcello,演示了通过 Visual Studio Code 的这个扩展实现 ABAP 代码的基本编辑。

作者在他的 readme 也明确注明,这个扩展还处于 Beta 测试阶段,使用者需自己承担风险。

在 Jerry 看来,Visual Studio Code 的这个扩展,如果用来做 ABAP 开发的话,功能还相对局限,但是如果对 SAPGUI 或者 ABAP Development Tool 产生了审美疲劳,想换一种工具来阅读 ABAP 源代码,那么它和下图的 Sublime Text 一样,都是不错的选择。

将来如果 Jerry 有空,会在这篇文章的下半部分简单介绍下这个扩展的 TypeScript 实现细节。
另外,今年 Jerry 也会争取能分享一些 SAP 云平台上 ABAP 编程环境的相关内容,敬请期待。

感谢阅读。
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/937f7275473a5883981e9e6f9】。文章转载请联系作者。
评论