共计 4255 个字符,预计需要花费 11 分钟才能阅读完成。
对于 Java 从业人员来说,无论是刚入门的老手还是专家,必定都正在或者已经应用过 Eclipse,这是一款优良的编写 Java 程序的 IDE.
然而可能大多数 Java 开发人员都没有意识到,Eclipse 同时也能用来进行另一款在企业治理软件开发畛域赫赫有名的编程语言的开发工作,这门语言就是 ABAP.
在 2022 年 3 月最新的 TIOBE 编程语言排行榜上,Python, C 和 Java 分列前三甲,而 ABAP 位列第 42 名。
ABAP 之前的两门语言,别离是同样出自寒门微软的 Powershell 和 TypeScript.
而 ABAP 这门编程语言,是企业治理软件巨头,德国最大的软件公司 SAP 应用的开发语言,其旗舰级产品 S/4HANA 和已经成为 ERP 软件畛域代名词的 R/3,都基于 ABAP 开发而成。
在 SAP 公司开创之初,ABAP 程序的编写工具是 SAP GUI,一个界面古朴的 IDE,如下图所示:
SAPGUI 这款 IDE 的页面布局设计,乍一看有点像当初的 Visual Studio Code,但 SAPGUI 诞生于 1992 年,能够说是 Visual Studio Code 的前辈了。
那么为什么 SAP 有了 SAPGUI 之后,还会抉择将 Eclipse 革新成 ABAP 的另一款开发工具呢?这就是本文要论述的内容。
SAP 在 Eclipse 框架的根底上,开发出了一系列专门用于 ABAP 开发的插件。这一通过革新后的 Eclipse,有了一个新的名称:ABAP Development Tools for SAP Netweaver,在 SAP 官网文档里常常简写为 ADT. 为了便于 Java 程序员浏览,本文余下局部中提到的 Eclipse,如无非凡阐明,均代表 ADT.
下图是在 ADT 里点击 Help -> About 之后弹出的该 Eclipse 的版本号。
本文余下的局部从下列几个方面向大家介绍,通过 SAP 革新之后的 Eclipse(ADT),为何能成为企业管理软件畛域的 ABAP 利用开发利器。
1. ADT 的工作原理
很多从 Eclipse 做 Java 开发的敌人转到 ADT 后,最大的不习惯就是 ADT 没方法离线应用。即便是用 SAP 云平台 Neo 编程环境里的 SDK,开发人员也能够在本地实现开发后,应用命令行或者 Eclipse Run As 菜单将其公布到 SAP 云平台上。然而这种用法对于 ADT 来说行不通,因为后者依然是一个 Client / Server 模式中的 Client 端。从实质上讲,在开发 ABAP 时,Eclipse 和 SAP GUI 的区别,仅仅体现在对 Netweaver 服务器上开发资源的展现和操作形式有所差别罢了。
正因为这种 C/S 架构,每次咱们在 ADT 里操作 Netweaver 上的 ABAP 资源时,比方编辑一个 ABAP 类并保留,实际上都是通过生产 ABAP 后盾暴露出的 Restful API 来实现的。
这种 Restful API 的消费行为能够通过关上 ADT 里的 ABAP Communication Log 视图来察看。点击 Start logging 按钮:
在源代码里轻易做一些改变,比方减少一个空行,能察看到这个批改动作触发了很多到 ABAP 后盾的 HTTP 申请:
如果想本人调试这些后盾操作的具体实现,用 SAP GUI 登录 ABAP 后盾,应用事务码 SICF 找到节点 /sap/bc/adt:
在节点解决类的办法 HANDLE_REQUEST 里设置断点即可调试:
HTTP 申请发送到后盾之后,上述办法会调用一个对立的入口函数 SADT_REST_RFC_ENDPOINT, 该函数和 ADT 后盾框架其余解决逻辑的交互如下图所示:
在 ADT 里对 ABAP 源代码做语法查看,实际上就是把整段代码做一个 Base64 编码,而后通过 HTTP Post 发送到后盾,由后盾执行对应的查看函数,后果通过 HTTP 响应返回给 ADT 前端。
相应的,如果对 ADT 的前台 Java 代码感兴趣,请移步 ADT 装置目录下的 plugins 文件夹,把外面的 jar 包反编译进去浏览源代码即可。
2. SAP GUI 和 ADT 的 关系
一言以蔽之:二者互为补充。
一方面,对于 S /4HANA 很多新性能的开发,比方 CDS view 和 AMDP(ABAP Managed Database Procedure), 开发人员没有抉择的余地,必须应用 ADT,因为 SAP GUI 不反对这些新性能的开发。
比方在 SAP GUI 里即便想浏览 CDS view 的内容也不行,会收到提醒:
Please use the ADT Tools in Eclipse to process DDL sources.
而 AMDP,就是一个非凡的 ABAP 类,可能在 ABAP 办法里执行 HANA 的 SQLScript 或者存储过程。
SAP GUI 里能够查看 AMDP 的源代码,然而没法做开发。试图在 SAP GUI 里进行编辑时,会遇到下面的提示信息:
Class XX contains stored procedures which cannot be changed in SAP GUI
反之,SAP GUI 里一些比拟传统的开发,ADT 也是不反对的。举一些例子。
传统 Dynpro 程序的 Screen 开发,双击 Screen number,就能够通过点击 Layout 按钮关上 Screen Painter,而后进行所见即所得的 Screen 布局开发:
然而如果在 ADT 里试图编辑这个 Screen 会产生什么事?
ADT 会关上一个新的标签页,外面显示一个嵌入的 SAP GUI 窗口,像 Screen Painter 和其余一些传统的 ABAP 开发,均在这个嵌入的 SAP GUI 里进行。
应用 SAP GUI 做开发的 ABAP 参谋,应该明确这三个 session 的区别:
- User Session
- ABAP Session
- Internal Session
咱们每次用 SAP GUI 登录一个零碎,都会产生一个新的 User Session,每个 User Session 里用 /o 关上一个新的事务码,则是在该 User Session 里开启了一个新的 ABAP Session.
一个 User Session 默认能关上最多 6 个 ABAP Session,能够通过批改零碎参数把最大数目裁减为 16 个。
那么 ADT 里关上的嵌有 SAP GUI 窗口的标签页,背地启动的 Session 类型是什么?答案是 User Session.
下图是 ADT 里关上的两个标签和其对应的两个 User Session,用不同色彩来辨别。
3. ADT 和 SAP GUI 相比的一些独到之处
既然是一个基于 Eclipse 的 IDE,ADT 和 SAP GUI 相比还是存在一些独到之处。
第一,因为 ADT 是基于 Eclipse 这个较之 SAP GUI 来说更加古代的 IDE,从应用习惯上来说更贴近 Java/C++ 程序员。
以 ABAP 类为例,各个维度的信息在 ADT 里能在一个屏幕里同时显示,在 SAP GUI 里一个屏幕显示的信息维度很繁多。
如果想看其余维度信息,只有通过双击的形式跳转,查看结束后通过回退键回到正在工作的界面。
又比方所有增加了关注的零碎的 ST22 信息能在一个中央对立监控了:
第二,ADT 提供了很多代码重构的向导 (Assistant), Java 和 C++ 的开发人员对这些类的重构性能肯定不会生疏。
一些罕用的代码重构性能如下:
- Delete unused variables:
疾速删除一个办法里所有定义了但未应用的局部变量,这个性能很实用,SAP GUI 不反对。
- Extract Methods: 如果一段代码重复呈现,能够思考用重构技术里的办法提取,将其封装成一个办法。
当然还在应用 SAP GUI 的开发人员要应用 ABAP 重构向导也是能够的,依据 SAP GUI 版本的不同, 入口也稍有差别。
在 SAP GUI 740 版本里,重构向导通过 Utilities 菜单进入。
740 之前的版本,重构向导的打开方式大同小异:
第三,对 SAP GUI 一些罕用性能的原生反对。
所谓原生反对,指用 Eclipse 原生的页面来提供以前在 SAP GUI 里实现的性能。
对 ABAP 开发参谋来说,简直每天都要在 SAP GUI 进行的操作就是 ABAP 类和报表的调试。
有的以前从事 Java 开发的敌人们转到 SAP GUI 后,刚上手时应用 SAP GUI 的调试器总感觉很顺当。一旦应用 ADT 的调试器,相熟的滋味又回来了。在 ADT 里调试 ABAP 和 Eclipse 里调试 Java 程序的形式完全一致。
SAP GUI 里的单元测试和分支 / 语句执行覆盖率:
ADT 里也提供了单元测试和各种覆盖率审查的原生反对:
SAP GUI 里的事务码 SAT 在 ADT 里的原生反对:
应用形式和 SAP GUI 里的没有差异。
第四,不便的 SQL console 性能。
以前在 SAP GUI 里时,有时出于测试目标想写些简略的 SQL 语言做些验证,还得创立一个报表而后在报表里书写。在 ADT 里,间接应用 SQL console 就可省去不必要的报表创立:
第五,改良的代码版本比拟性能。
有些敌人反映 SAP GUI 里自带的代码比拟工具不是很好用:
现在在 ADT 里,ABAP 开发人员终于能够像 Java 程序员一样,享受 Eclipse 提供的便当的代码版本比拟性能了:
4. ADT 其余一些值得一提的小性能
- ADT Link
比方任何一个在 ADT 里可能查看的资源,都有一个所谓的 ADT Link,通过菜单 Share Link 查看:
这种 Link 格局如下:
adt://AG3/sap/bc/adt/vit/wb/object_type/tabldt/object_name/ZORDER
通过 Open ADT Link 菜单,输出上述 ADT Link,能间接关上对应的资源,而不须要像 SAP GUI 那样,须要先运行正确的事务码,进入事务码之后再关上资源。
- 自定义编辑器色彩
如何能力让本人应用的 IDE 和其余程序猿相比显得不同凡响呢?一个方法是个性化字体和背景色。比方字体必须用程序猿专用的等宽开源字体 Inconsolata:
SAP GUI 的色彩个性化设置稍显麻烦,须要一项项手动设置。而 ADT 因为是基于 Eclipse,所以主题的个性化就容易多了。如果感觉上面的 dark 主题还不够酷,
装置一个名叫 Eclipse Color Theme 的插件,就能够应用这个插件预置好的几十套主题,真正做到一年 54 周每周换一套 Theme 了。
总结
作为一个领有 14 年 ABAP 开发教训的老程序员,在笔者心中 SAP GUI 和 Eclipse 都是优良的 ABAP IDE,各有其短处和适应场合。本文通过逐个将 SAP GUI 和 ADT 提供的开发个性做横向比拟,心愿可能帮忙开发人员感知到这些年的集成开发环境本身随时代倒退而继续演进,进步,一直改善开发人员应用体验的倒退方向。
祝每一位 ABAP 开发人员都能欢快地应用 SAP GUI 和 ADT,做到得心应手。感激浏览。