怎么用Eclipse进行ABAP开发

74次阅读
没有评论

共计 4241 个字符,预计需要花费 11 分钟才能阅读完成。

这篇文章主要讲解了“怎么用 Eclipse 进行 ABAP 开发”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“怎么用 Eclipse 进行 ABAP 开发”吧!

ABAP Development Tools,最初在 SAP 内部称为 ABAP in Eclipse。这个工具 SAP 在很多场合简称为 ADT,本文后续部分也使用这个简称。

简单地说,SAP 对 Eclipse 做了扩展,开发了一些插件,使得开发人员能使用 Eclipse 完成部分以前在 SAP GUI 里进行的 ABAP 开发工作。

本文不去重复网上和 SAP 帮助文档里对 ADT 的介绍,而是介绍一些 Jerry 的原创内容。

Jerry 曾经写过一篇文章  
那些年我用过的 SAP IDE
, 里面也提到了 ADT。本文对其做详细介绍。

文章目录

1. ADT 的工作原理

2. SAP GUI 和 ADT 的关系

3. ADT 相比 SAP GUI 具有的一些独到之处

4. ADT 其他一些值得一提的小功能

下面是正文。

1. ADT 的工作原理

很多从 Eclipse 做 Java 开发的朋友转到 ADT 后,最大的不习惯就是 ADT 没办法离线使用。即使是用 SAP 云平台 Neo 编程环境里的 SDK,开发人员也可以在本地完成开发后,使用命令行或者 Eclipse Run As 菜单将其发布到 SAP 云平台上。然而这种用法对于 ADT 来说行不通,因为后者仍然是一个 Client / Server 模式中的 Client 端。从本质上讲,和 SAP GUI 的区别,仅仅体现在对 Netweaver 服务器上开发资源的展示和操作方式有所差异罢了。

正因为这种 CS 架构,每次我们在 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 后台框架其他处理逻辑的交互如下图所示:

关于这些 HTTP 的请求和响应明细,请参考 Jerry 的博客:

An example to help you understand how does ADT work

https://blogs.sap.com/2014/08/12/an-example-to-help-you-understand-how-does-adt-work/

比如在 ADT 里对 ABAP 源代码做语法检查,实际上就是把整段代码做一个 Base64 编码,然后通过 HTTP Post 发送到后台,由后台执行对应的检查函数,结果通过 HTTP 响应返回给 ADT 前端。

相应的,如果对 ADT 的前台 Java 代码感兴趣,请移步 ADT 安装目录下的 plugins 文件夹,把里面的 jar 包反编译出来阅读源代码即可。

2. SAP GUI 和 ADT 的关系

Jerry 的个人观点是:二者互为补充。

一方面,对于 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 布局开发:

怎么用 Eclipse 进行 ABAP 开发

然而如果在 ADT 里试图编辑这个 Screen 会发生什么事?

怎么用 Eclipse 进行 ABAP 开发

ADT 会打开一个新的标签页,里面显示一个嵌入的 SAP GUI 窗口,像 Screen Painter 和其他一些传统的 ABAP 开发,均在这个嵌入的 SAP GUI 里进行。

怎么用 Eclipse 进行 ABAP 开发

这就是 Jerry 在这一小节标题里提到 SAP GUI 和 ADT 互为补充的含义:即便使用了 ADT,也不意味着能和 SAP GUI 说再见——很多传统的 ABAP 开发仍然需要在 SAP GUI 里进行,哪怕是作为一个窗口嵌入在 ADT 里。

怎么用 Eclipse 进行 ABAP 开发

使用 SAP GUI 做开发的 ABAP 顾问,应该明白这三个 session 的区别:

User Session

ABAP Session

Internal Session

怎么用 Eclipse 进行 ABAP 开发

我们每次用 SAP GUI 登录一个系统,都会产生一个新的 User Session,每个 User Session 里用 / o 打开一个新的事务码,则是在该 User Session 里开启了一个新的 ABAP Session。一个 User Session 默认能打开最多 6 个 ABAP Session,可以通过修改系统参数把最大数目扩充为 16 个。

怎么用 Eclipse 进行 ABAP 开发

那么 ADT 里打开的嵌有 SAP GUI 窗口的标签页,背后启动的 Session 类型是什么?经过 Jerry 测试,答案是 User Session。

下图是 ADT 里打开的两个标签和其对应的两个 User Session,用不同颜色来区分。

怎么用 Eclipse 进行 ABAP 开发

3. ADT 和 SAP GUI 相比一些独到之处

既然是一个基于 Eclipse 的 IDE,ADT 和 SAP GUI 相比还是存在一些独到之处。

(1) 由于 ADT 是基于 Eclipse 这个较之 SAP GUI 来说更加现代的 IDE,从使用习惯上来说更贴近 Java/C++ 程序员。

以 ABAP 类为例,各个维度的信息在 ADT 里能在一个屏幕里同时显示,在 SAP GUI 里一个屏幕显示的信息维度很单一,如果想看其他维度信息,只有通过双击的方式跳转,查看完毕后通过回退键回到正在工作的界面。

怎么用 Eclipse 进行 ABAP 开发

又比如所有添加了关注的系统的 ST22 信息能在一个地方统一监控了,Jerry 再也不需要自己开发工具实现了:

怎么用 Eclipse 进行 ABAP 开发

(2) ADT 提供了很多代码重构的向导 (Assistant), Java 和 C ++ 的开发人员对这些类的重构功能一定不会陌生。

怎么用 Eclipse 进行 ABAP 开发

Delete unused variables:

快速删除一个方法里所有定义了但未使用的局部变量,这个功能很实用,SAP GUI 不支持。

怎么用 Eclipse 进行 ABAP 开发

**Extract Methods: ** 如果一段代码反复出现,可以考虑用重构技术里的方法提取,将其封装成一个方法。

当然还在使用 SAP GUI 的开发人员要使用 ABAP 重构向导也是可以的,根据 SAP GUI 版本的不同, 入口也稍有差异。

在 Jerry 的 SAP GUI 740 版本里,重构向导通过 Utilities 菜单进入。

怎么用 Eclipse 进行 ABAP 开发

740 之前的版本,重构向导的打开方式大同小异:

怎么用 Eclipse 进行 ABAP 开发

(3) 对 SAP GUI 一些常用功能的原生支持

所谓原生支持,指用 Eclipse 原生的页面来提供以前在 SAP GUI 里实现的功能。

对 ABAP 开发顾问来说,几乎每天都要在 SAP GUI 进行的操作就是 ABAP 类和报表的调试。

有的以前从事 Java 开发的朋友们转到 SAP GUI 后,刚上手时使用 SAP GUI 的调试器总觉得很别扭。一旦使用 ADT 的调试器,熟悉的味道又回来了。在 ADT 里调试 ABAP 和 Eclipse 里调试 Java 程序的方式完全一致。

怎么用 Eclipse 进行 ABAP 开发

SAP GUI 里的单元测试和分支 / 语句执行覆盖率:

怎么用 Eclipse 进行 ABAP 开发

怎么用 Eclipse 进行 ABAP 开发

ADT 里也提供了单元测试和各种覆盖率审查的原生支持:

怎么用 Eclipse 进行 ABAP 开发

SAP GUI 里的事务码 SAT 在 ADT 里的原生支持:

怎么用 Eclipse 进行 ABAP 开发

使用方式和 SAP GUI 里的没有差别。

怎么用 Eclipse 进行 ABAP 开发

(4) 方便的 SQL console 功能。

以前在 SAP GUI 里时,有时出于测试目的想写些简单的 SQL 语言做些验证,还得创建一个报表然后在报表里书写。在 ADT 里,直接使用 SQL console 就可省去不必要的报表创建:

怎么用 Eclipse 进行 ABAP 开发

怎么用 Eclipse 进行 ABAP 开发

(5) 改进的代码版本比较功能

Jerry 之前的公众号文章  
我用 ABAP 做过的那些无聊的事情
  提到,有的朋友觉得 SAP GUI 里自带的代码比较工具不是很好用:

怎么用 Eclipse 进行 ABAP 开发

如今在 ADT 里,ABAP 开发人员终于可以像 Java 程序员一样,享受 Eclipse 提供的便利的代码版本比较功能了:

怎么用 Eclipse 进行 ABAP 开发

4. ADT 其他一些值得一提的小功能

(1) ADT Link

比如任何一个在 ADT 里能够查看的资源,都有一个所谓的 ADT Link,通过菜单 Share Link 查看:

怎么用 Eclipse 进行 ABAP 开发

这种 Link 格式如下:

adt://AG3/sap/bc/adt/vit/wb/object_type/tabldt/object_name/ZORDER

通过 Open ADT Link 菜单,输入上述 ADT Link,能直接打开对应的资源,而不需要像 SAP GUI 那样,需要先运行正确的事务码,进入事务码之后再打开资源。

怎么用 Eclipse 进行 ABAP 开发

(2) 自定义编辑器颜色

Jerry 和很多程序猿一样,两件 T 恤衫就能穿一个夏天:

怎么用 Eclipse 进行 ABAP 开发

怎么用 Eclipse 进行 ABAP 开发

然而对于自己每天都要使用八到十个小时的 IDE,其个性化装扮是一点都不能含糊。

如何才能让您的 IDE 和其他程序猿相比显得与众不同呢?一个办法是个性化字体和背景色。比如 Jerry 的 SAP GUI 的个性化设置是这样的,字体必须用程序猿专用的等宽开源字体 Inconsolata,这样显得比较专业。

怎么用 Eclipse 进行 ABAP 开发

SAP GUI 的颜色个性化设置稍显麻烦,需要一项项手动设置。而 ADT 因为是基于 Eclipse,所以主题的个性化就容易多了。如果觉得下面的 dark 主题还不够酷,

怎么用 Eclipse 进行 ABAP 开发

安装一个名叫 Eclipse Color Theme 的插件,就可以使用这个插件预置好的几十套主题,真正做到一年 54 周每周换一套了。程序猿衣着可以随便,但 IDE 或者代码编辑器决不能随便。

怎么用 Eclipse 进行 ABAP 开发

感谢各位的阅读,以上就是“怎么用 Eclipse 进行 ABAP 开发”的内容了,经过本文的学习后,相信大家对怎么用 Eclipse 进行 ABAP 开发这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计4241字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)