Eclipse 不为人所知的另一面 - 企业管理软件领域 ABAP 编程语言开发利器(一)

简介: 对于 Java 从业人员来说,无论是刚入门的新手还是专家,肯定都正在或者曾经使用过 Eclipse,这是一款优秀的编写 Java 程序的 IDE.

对于 Java 从业人员来说,无论是刚入门的新手还是专家,肯定都正在或者曾经使用过 Eclipse,这是一款优秀的编写 Java 程序的 IDE.


然而可能大多数 Java 开发人员都没有意识到,Eclipse 同时也能用来进行另一款在企业管理软件开发领域大名鼎鼎的编程语言的开发工作,这门语言就是 ABAP.


在 2022 年 3 月最新的 TIOBE 编程语言排行榜上,Python, C 和 Java 分列前三甲,而 ABAP 位列第 42 名。

image.pngABAP 之前的两门语言,分别是同样出自豪门微软的 Powershell 和 TypeScript.

66.png

而 ABAP 这门编程语言,是企业管理软件巨头,德国最大的软件公司 SAP 使用的开发语言,其旗舰级产品 S/4HANA 和曾经成为 ERP 软件领域代名词的 R/3,都基于 ABAP 开发而成。


在 SAP 公司创始之初,ABAP 程序的编写工具是 SAP GUI,一个界面古朴的 IDE,如下图所示:

67.png

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 的版本号。

68.png

本文余下的部分从下列几个方面向大家介绍,经过 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 按钮:


image.png

在源代码里随便做一些改动,比如增加一个空行,能观察到这个修改动作触发了很多到 ABAP 后台的 HTTP 请求:

image.png

如果想自己调试这些后台操作的具体实现,用 SAP GUI 登录 ABAP 后台,使用事务码SICF找到节点/sap/bc/adt:

image.png

在节点处理类的方法 HANDLE_REQUEST 里设置断点即可调试:

image.png

HTTP 请求发送到后台之后,上述方法会调用一个统一的入口函数 SADT_REST_RFC_ENDPOINT, 该函数和 ADT 后台框架其他处理逻辑的交互如下图所示:

image.png

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

image.png

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

image.png

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.

image.png

而 AMDP,就是一个特殊的 ABAP 类,能够在 ABAP 方法里执行 HANA 的SQLScript 或者存储过程。

69.png

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 布局开发:

image.png

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


image.png

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

image.png

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

  • User Session
  • ABAP Session
  • Internal Session

image.png我们每次用 SAP GUI 登录一个系统,都会产生一个新的 User Session,每个User Session 里用 /o 打开一个新的事务码,则是在该 User Session 里开启了一个新的 ABAP Session.


一个 User Session 默认能打开最多 6 个 ABAP Session,可以通过修改系统参数把最大数目扩充为 16 个。

image.png

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

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

image.png


68.png


67.png


目录
相关文章
|
6月前
|
Java 关系型数据库 MySQL
java 网上二手车销售系统用eclipse定制开发mysql数据库BS模式java编程jdbc
JSP 网上二手车销售系统是一套完善的web设计系统,对理解JSP java SERLVET mvc编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。
41 0
|
6月前
|
Java 关系型数据库 MySQL
JSP在线小说系统用eclipse定制开发mysql数据库BS模式java编程jdbc
JSP 在线小说系统是一套完善的web设计系统,对理解JSP java SERLVET mvc编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。
60 1
JSP在线小说系统用eclipse定制开发mysql数据库BS模式java编程jdbc
|
6月前
|
Java 关系型数据库 MySQL
SSM度假村管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
SSM 度假村管理系统是一套完善的信息系统,结合SSM框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术html div js 后端主要技术 SSM框架 java jdbc 数据库 mysql 开发工具 eclipse JDK1.8 TOMCAT 8.5
36 0
|
1月前
|
IDE Java 开发工具
【 编程 IDE】Eclipse软件的安装
【 编程 IDE】Eclipse软件的安装
28 1
|
3月前
|
Java 关系型数据库 BI
基于Java Swing 开发的网吧管理系统【eclipse和idea两个版本运行源码】
基于Java Swing 开发的网吧管理系统【eclipse和idea两个版本运行源码】
|
4月前
|
设计模式 前端开发 Java
Spring Boot之Spring MVC的工作原理 以及使用eclipse开发Spring MVC的Web应用实战(附源码)
Spring Boot之Spring MVC的工作原理 以及使用eclipse开发Spring MVC的Web应用实战(附源码)
45 0
|
6月前
|
Java 关系型数据库 MySQL
SSM培训报名管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
SSM 培训报名管理系统是一套完善的信息系统,结合SSM框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术html div js 后端主要技术 SSM框架 java jdbc 数据库 mysql 开发工具 eclipse JDK1.8 TOMCAT 8.5
31 0
|
6月前
|
Java 关系型数据库 MySQL
SSM宾馆客房管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
SSM 宾馆客房管理系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术 bootstrap.css jquery 后端主要技术 SSM 数据库 mysql 开发工具 eclipse JDK1.8 TOMCAT 8.5
41 0
SSM宾馆客房管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
|
6月前
|
Java 关系型数据库 MySQL
SSM咖啡点餐管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
SSM 咖啡点餐管理系统是一套完善的信息系统,结合SSM框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术html div js jquery 后端主要技术 SSM框架 java jdbc 数据库 mysql 开发工具 eclipse JDK1.8 TOMCAT 8.5
50 0
|
6月前
|
Java 关系型数据库 MySQL
java网上购物系统eclipse定制开发mysql数据库BS模式java编程jdbc
JSP 网上购物系统是一套完善的web设计系统,对理解JSP java SERLVET mvc编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。 系统运行视频 https://www.bilibili.com/video/BV1Yh4y1E7x8/
57 0

推荐镜像

更多