写点什么

那些年我用过的 SAP IDE

用户头像
Jerry Wang
关注
发布于: 2021 年 05 月 23 日
那些年我用过的SAP IDE

在 Google 上根据关键字”程序员鄙视链”搜索,会得到 68 多万条结果。



玲琅满目的搜索结果里是众多不同维度划分的鄙视链。


其中有一个维度,就是编程工具的鄙视链,比如:



而我在 SAP 做的所有开发都用的是 IDE 而不是 text editor,看来我也免不了处于鄙视链末端的结局了。


这篇文章我想介绍一些我用过的 SAP IDE 的周边。希望您看了之后有些许收获。而像 Eclipse, Visual Studio 这些 IDE 在 SAP 圈子外使用也更加广泛,所以本文不再提及。


本文里提到的所有 IDE 都是基于 Windows 版本的,这使得我又一次被鄙视了:使用 Mac OS 的程序猿鄙视使用 Windows OS 的程序猿。


我在 SAP 工作期间用过的 IDE 清单如下:(名称不包含 SAP 则说明该 IDE 不是由 SAP 开发出来的)


  • SAPGUI

  • SAP ABAP Development Tools

  • SAP Cloud Application Studio

  • SAP WebIDE(codepen, jsbin)

  • Sublime Text(文本编辑器)

  • Android Studio(Cloud9)

  • VirtualBox + Putty


SAPGUI


SAPGUI 是所有 ABAPer 养家糊口的工具,见证了 SAP 从只有 5 个员工的无名之辈走向企业管理软件巅峰的辉煌之路。从严格意义上讲,SAPGUI 不仅仅是个 IDE,也是很多使用 SAP 传统管理软件的业务人员们每天工作使用的工具。有个段子就是某同事去苏宁买电器,在柜台结账时,销售小妹说,”您等等, 现在系统有问题,下不了单。” 该同事走上前去看了看屏幕说,”哟,出 error 啦?让我 F1 看看错误明细,再看看/h 能不能用。” 用过 SAPGUI 的读者一定明白我在说什么。



本文我尽量分享一些我的原创以及并非每位朋友都知道的一些小技巧。


2013 年的时候,我看到 SAP 社区上有些朋友在讨论 SAPGUI command line 这些用过的事物码列表是存储在什么地方的:



得到的答案是,如果是 Windows 系统,则存储在操作系统的注册表里:



具体讨论见如下链接:


https://blogs.sap.com/2013/10/07/where-does-tcodes-on-command-line-gets-stored/


当时我觉得比较有意思,然后想知道有没有一个通用且快速的办法,找到 SAPGUI 里任意一个设置,是存储在注册表里具体哪个位置的。


同样是 2013 年,我写过一篇博客:Six kinds of debugging tips to find the source code where the message is raised


需求就是在 SAPGUI 里看到一条错误信息,怎样用六种不同的办法找到具体是哪一行 ABAP 代码抛出的这条错误信息。最后一种使用 ST05 跟踪的思路也适用于现在讨论的如何查找 SAPGUI 的配置在 Windows 操作系统注册表里的具体存储位置:


1. 在修改 SAPGUI 配置之前,将注册表导出存为 A;


2. 修改 SAPGUI 配置,然后将注册表导出存为 B;


3. 用工具比较 A 和 B 差异,即可获得该配置在注册表里存储的位置。


我最早遇到需要将 SAPGUI 里某段 ABAP 代码导出成 PDF 格式时,总是先新建一个 word 文档,在 ABAP 代码上 Ctrl C 然后 Ctrl V 到 word 文档,最后把 word 文档转换成 PDF。


其实 SAPGUI 里自带一键将代码导出成 PDF 的功能。只需要在下图配置里给导出 PDF 功能分配对应的快捷键:



然后就可一键保存成 PDF:



值得一提的是,因为 SAPGUI 里的所有事物码也是通过 ABAP 开发的,包括用来做开发的事物码 SE80 本身。因此这些事物码本身也是可以通过 ABAP 进行增强的。


比如我在 SE80 的开发对象类型里,自定义了一种新的名称为”Jerry’s Product”的开发对象类型,能够像其他所有开发对象一样,通过右键菜单进行创建:



新建一个开发对象的实例,维护名称:



实例创建成功之后,能在 SE80 里继续维护其他明细:



再比如倘若您对 SAPGUI 里 ABAP 编辑器标准的 ABAP 语法检查不太满意,想对其做增强,这当然是可以的。具体步骤参考我的博客:Implement Custom Syntax Check in SAPGUI


这种语法增强的一个应用例子,可以参考我公众号文章 Jerry的ABAP, Java和JavaScript乱炖 里提到的博客:Covariance in Java and simulation in ABAP.


我写这篇博客的背景是为 SAP 成都研究院的一个内部技术培训准备培训材料。该文首先介绍了 Covariance 和 Contravaariance 的概念,然后描述了 Covariance 在 Java 里的实现,最后给出了我在 ABAP 里对于 Covariance 的一个模拟实现,以及如何增强 ABAP 编辑器的语法检查使其能够自动检测出违反了 Covariance 规范的代码。


我记得在 2011 年的时候,WebIDE 的概念比较火,WebIDE 使得开发者只需要一个浏览器就可以编写代码,并在 WebIDE 提供的终端环境中运行。


当时我就觉得很囧, 因为类似 WebIDE 的概念,其实 SAPGUI 在很早很早之前就支持了。SAP Netweaver 里有个模块叫 SAP Internet Trasaction Server,能让 SAPGUI 里的流程运行于浏览器里。关于这个模块的详细介绍,请参考 SAP 帮助文档: SAP ITS in SAP NetWeaver Application Server


举个例子:我可以把 SAPGUI 里的 SE80 放到 Fiori 的 Launchpad 里,



点击该 Tile,能直接在浏览器里使用 SE80。如下图所示:



只需要一些简单的配置即可实现上述效果,具体步骤见我博客:Open your SAP GUI transaction in Fiori launchpad


原理介绍见我的另一篇博客:How is old SAP GUI transaction embedded into Fiori launchpad


文内也提到 S/4HANA 里有大量的 Fiori tile 使用到了这种技术,即通过 ITS 的方式,让很古老的一些事务码比如 MM01 继续在浏览器里运行。下面第一张图是 SAPGUI 里使用事务码 MM01 打开的物料创建页面,第二张图是该事务码通过 ITS 运行在浏览器里的截图。




可以看出这两个页面的布局完全一致。


再回到 IDE 这个话题,直接通过我的上述博客提到的方式在浏览器里运行 SE80,其实不能算严格意义上的 WebIDE,因为缺乏语法高亮。



这种局限在 S/4HANA 里得到了改善。S/4HANA 里有个应用叫做 Custom Logic,能允许我们直接在浏览器里编辑 ABAP 代码,支持语法高亮显示,如下图所示:



我不久前刚刚研究过 ABAP 的语法高亮显示是怎么在 Chrome 浏览器里实现的。如果您对此技术细节感兴趣,请参考我的博客:How ABAP syntax highlight is implemented in WebIDE launched via browser


SAP ABAP Development Tools


以前 SAP 内部喜欢把这个 IDE 称为 ABAP in Eclipse。现在的官方叫法是 ABAP Development Tools。实质上就是 SAP 在 Eclipse 上以插件(plugin)的方式做了一些扩展。



很多具有 Java 开发经验的朋友们都喜欢用 ABAP Development Tools 进行 ABAP 开发。我在 2014 年时,曾经研究过 ABAP Development Tool 这个 IDE 的 Java 实现代码,是如何通过 RFC(Remote Function Call)调用到 ABAP 后台的。


分析的关键是使用 IDE 里这个 log 功能:




ABAP Development Tools 的后台实现细节请参考我博客: An example to help you understand how does ADT work


而 IDE 端的 Java 实现细节,可以将安装目录的 plugins 文件夹下的.class 文件反编译出来自行学习:



SAP HANA Studio


和 ABAP Development Tools 一样,HANA Studio 也是基于 Eclipse 的 IDE,只是其拥有的 SAP 自开发的 plugin 和 ABAP Development Tools 有所区别。因为需要在此 IDE 里连接 SAP HANA 数据库,因此大多 plugin 都以命名空间 com.sap.ndb.studio 开头。这里的 ndb 实际上是 HANA 刚刚诞生时的 SAP 内部名称: New DB 的缩写。



既然是基于 Java 实现的 plugin 去连接 HANA 数据库,必然少不了 JDBC。在 HANA Studio 里的大多数操作都会使用到 com.sap.ndb.studio.jdbc 这个 plugin:



其实现代码也是可以将 plugin 文件夹里的.class 文件反编译出来查看。



SAP Cloud Application Studio


SAP Business by Design 和 SAP Cloud for Customer 的 Partners 使用该 IDE 进行二次开发。



该 IDE 基于 Visual Studio Shell 开发,与后者的关系类似于 SAP ABAP Development Tools / SAP HANA Studio 和 Eclipse 的关系。我于 2011 年到 2012 年参与了该 IDE 的开发,使用的编程语言是 C#。


Cloud Application Studio 工作原理和 ABAP Development Tools 类似,在 C#端通过 RFC 调用 ABAP 后台暴露出的 API。


例如在 IDE 里选择了右键菜单的 Activate 之后,



会执行下图 C#代码中的 ActivateContent 函数进行 ABAP 后台对应资源的激活处理。而图中的 C#代理类 PDI_RI_CONTENT_ACTIVATE, 对应了 ABAP 后台的同名函数。一旦图中最后一行代码 jsonClient.callFunctionModule(proxy)执行,ABAP 后台函数 PDI_RI_CONTENT_ACTIVATE 就会被远程调用。



SAP WebIDE


我 2014 年到 2016 年做 Fiori 产品开发用的就是这个 IDE。更多关于这个 WebIDE 的细节可以参考我的另一篇公众号文章:

Jerry的通过CDS view + Smart Template 开发Fiori应用的blog合集


如果只是写一些小的 Web 程序,我也喜欢用一些其他的工具,比如 CodePen https://codepen.io



或者 jsbin。这些工具都支持开发人员直接在浏览器里编码并运行,非常方便。



我的 Cloud for Customer 开发同事们也喜欢用 Atom 和 WebStorm 进行前端开发。


Sublime Text(文本编辑器)


该文本编辑器的一大特色是提供了非常简易的方式让编程人员自行开发能提升自己工作效率的插件。作为一个例子,您可以参考我的博客:Step by Step to develop your own Sublime Text plugin


Sublime Text 另一个我很喜欢的功能是它也具有支持 ABAP 语法高亮显示的插件:您可以通过这个链接获得.



Android Studio


用于 SAP Cloud for Customer 移动端 Android 平台。作为 Android 的脑残粉,平时写一些 Android 小程序,我不会打开相对比较笨重的 Android Studio,而使用一些 Android WebIDE,比如 Cloud9:




VirtualBox + Putty


这个组合其实不能算 IDE 了,极大的提升了我日常工作的效率。VirtualBox 里安装的 ubuntu 默认配置下的 console 模式存在一些让我觉得使用起来不太方便的地方,比如不支持来自 windows OS 的复制粘贴,不支持自定义字体类型和大小等等,而后者对我来说至关重要。


于是,我会选择先用 VirtualBox 启动 ubuntu 实例,然后再用 Putty 远程登录上去,之后所有对 ubuntu 的操作都在 Putty 里完成。而 Putty 里是支持复制粘贴,自定义字体等等。


下图是 VirtualBox 原生的 ubuntu console 截图。



下图是用 Putty 远程登录 ubuntu 之后的操作界面。



通过比较能发现,在 Putty 里我将字体类型改成了我的最爱 Inconsolata,大小改成了 20。有的朋友可能觉得其实两张图看起来都差不多。好吧,作为一个程序猿,每天看着这些界面的时间比对着老婆的时间还长,多花些心思把这些界面设置成自己看起来最顺眼的样子,有助于确保我始终带着舒适的心情去编程。


当然,SAP 有着众多的产品线,也就存在着形形色色的开发工具。一个程序员不可能接触到所有的开发工具。本文仅仅列出了我工作中使用到的一些 IDE,感谢阅读。要获取更多 Jerry 的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:




发布于: 2021 年 05 月 23 日阅读数: 14
用户头像

Jerry Wang

关注

个人微信公众号:汪子熙 2017.12.03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。

评论

发布
暂无评论
那些年我用过的SAP IDE