`
JerryWang_SAP
  • 浏览: 1032314 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧

阅读更多

Jerry和SAP成都研究院一些新同事聊天时,谈到ABAP和SAP GUI这个话题。很多新同事在加入SAP成都之前,是做Java和C++开发的,习惯了Eclipse/IntelliJ IDEA/Visual Studio这些现代IDE,对于SAP GUI这个比较”复古“的IDE不太适应。

其实还有一个选择: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布局开发:

 

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

 

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

 

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

 

使用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类型是什么?经过Jerry测试,答案是User Session

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

 

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

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

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

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

 

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

 

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

 

Delete unused variables:

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

 

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

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

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

 

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

 

(3) 对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里的没有差别。

 

(4) 方便的SQL console功能。

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

 
 

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

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

 

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

 

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

(1) 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那样,需要先运行正确的事务码,进入事务码之后再打开资源。

 

(2) 自定义编辑器颜色

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

 
 

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

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

 

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

 

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

 

总结

说了这么多,Jerry并不是在推销ADT,在我心中SAP GUI和ADT都是优秀的IDE,各有优缺点。我觉得网上流传的程序猿IDE和工具的鄙视链很无聊,与其有时间去鄙视别人,不如把这时间用来深入研究自己每天用的IDE,进一步提高自己单位时间内的工作效率。

 

祝大家都能愉快地使用SAP GUI和ADT,做到得心应手。感谢阅读。

更多阅读

 

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

 
0
0
分享到:
评论

相关推荐

    使用eclipse 进行ABAP开发.docx

    ### 使用Eclipse进行ABAP开发 #### 一、安装与配置 ##### 1.1 先决条件 在开始使用Eclipse进行ABAP开发之前,需要确保满足以下先决条件: - **GUI版本**:必须是7.4或更高版本。 - **Eclipse版本**:推荐使用...

    SAP ABAP 开发环境和开发工具介绍

    在 SAP 系统中,开发环境和开发工具是必不可少的组件,开发者可以使用这些工具来创建、测试和部署 ABAP 程序。ABAP WORKBENCH 是 SAP 系统中最常用的开发环境之一,它提供了一个集成的开发环境,包括编辑器、调试器...

    abap plug-in eclipse

    5. **远程开发与连接SAP系统**:该插件允许开发者通过SAP GUI安全连接到远程SAP系统,进行远程ABAP开发。这包括获取源代码、上传修改、激活对象以及执行事务代码。 6. **调试功能**:Eclipse ABAP插件提供了强大的...

    ABAP用户指南(SAP ABAP开发)

    - **Eclipse with SAP Plugin for Web IDE (WebIDE)**:这是一种基于Eclipse的集成开发环境,支持ABAP开发。 - **ABAP in the Cloud**:这是一个云平台,允许开发者在云端进行ABAP开发。 #### 三、ABAP基本语法 - ...

    Enabling ABAP in Eclipse

    【Enabling ABAP in Eclipse】是一项让ABAP开发者能够在Eclipse集成开发环境中进行开发的工作。这一功能的引入为ABAP程序员提供了更为现代化和灵活的开发工具,与传统的SAP Development Workbench相比,Eclipse提供...

    sap abap 经典开发入门文档

    11. **ABAP开发工具**:熟悉SAP Development Workbench(SE80),以及现代的ABAP Development Tools(ADT)在Eclipse中的使用,这些都是开发ABAP程序的必备工具。 通过“从实例学sap abap编程(完整版)”这份文档,...

    ABAP 开发 sap erp mes 信息化

    - **Eclipse with SAP Development Tools (ADT)**:这是一种更现代的选择,允许开发者在Eclipse平台上进行ABAP开发。 此外,还需要获取Access Key,即访问SAP系统的权限。通常,这需要通过SAP系统管理员或项目负责...

    ABAP 帮助 英文版

    10. **ABAP开发工具**: 如今,ABAP开发已迁移到SAP GUI和SAP Web IDE,提供更现代的开发体验。例如,ABAP in Eclipse是一个集成开发环境,结合了Eclipse的灵活性和ABAP的全部功能。 综上所述,“ABAP 帮助 英文版”...

    SAP标准教材 NET311 Web Dynpro For ABAP高级编程

    - **集成开发工具**:介绍了 SAP NetWeaver 开发人员工作室 (SAP Web IDE) 和 SAP GUI for Eclipse 等集成开发工具的特点及其在 Web Dynpro 开发中的应用。 - **安全性与性能优化**:探讨了在 SAP NetWeaver 平台上...

    ABAP Library

    8. **ABAP Development Tools (ADT)**:随着SAP GUI的现代化,ADT成为首选的ABAP开发环境,它基于Eclipse平台,提供代码编辑、调试、版本控制等功能,支持远程连接到SAP系统。 9. **ABAP Test Cockpit (ATC)**:ATC...

    abap中文入门

    SAP提供了ABAP Development Workbench(ADT),这是一个集成在Eclipse环境中的开发工具,用于编写、调试和测试ABAP代码。 九、ABAP与ABAP/4 ABAP/4是ABAP的早期版本,随着技术的发展,现在的ABAP已经包含了ABAP/4...

    01. ABAP Programming - PDF

    ABAP(Advanced Business Application Programming)是SAP公司推出的一种编程语言,主要用于开发SAP系统中的业务应用程序。在“01. ABAP Programming - PDF”这个教程中,你将深入了解到ABAP的基础和高级概念,帮助...

    ABAP Documentation

    15. **ABAP开发工具**:如ABAP Development Tools(ADT)在Eclipse环境中的使用,以及代码编辑、调试、版本控制等功能。 "07_ABAP_Documentation"这个文件很可能是ABAP的第七部分文档,可能详细介绍了上述的一些或...

    ABAP Tips

    - **SAP GUI**:标准的桌面客户端,用于运行ABAP程序和进行开发工作。 - **ABAP Development Tools (ADT)**:基于Eclipse的现代开发环境,支持代码编辑、调试和版本控制。 10. **最佳实践与性能优化** - **ABAP ...

    ABAP完整版

    1. SAP Development Workbench(SE80):SAP GUI中的经典开发工具,用于编写、调试和测试ABAP代码。 2. ABAP Development Tools (ADT):基于Eclipse的现代开发环境,提供更直观的代码编辑和版本控制功能。 通过深入...

    电力公司sap培训资料

    通过本套培训资料,电力公司的员工可以系统学习ABAP编程,理解如何使用ABAP进行SAP系统的定制开发,从而更好地支持电力行业的业务流程管理和优化。这份资料对理解SAP系统内部工作原理,提升业务操作的灵活性和效率...

    abap学习资料.zip

    - SAP Development Tools(SAP GUI for Eclipse)是主流的ABAP开发环境。 - ABAP Development Tools(ADT)基于Eclipse,提供源代码编辑、调试和版本控制功能。 通过深入学习这些ABAP相关知识点,并结合“abap...

    abap初学最好的教材

    现在,ABAP开发也支持SAP Web IDE和ABAP in Eclipse,提供了更现代化的开发体验。 这份"最好的abap教材.doc"文档应该涵盖了上述各个方面的内容,帮助你从零开始学习ABAP。记得理论结合实践,多写代码,多调试,才能...

Global site tag (gtag.js) - Google Analytics