1. SAP系统概览与开发环境准备:SAP ECC与S/4HANA架构差异、ABAP Development Tools (ADT) 安装与配置、SAP NetWeaver AS ABAP 基础概念
各位同学,咱们今天正式开课。第一节课,我不会一上来就扔一堆枯燥的概念。咱们先聊聊SAP这个庞然大物到底长什么样,以及你作为开发者,得准备哪些趁手的兵器。
我最早接触SAP的时候,还是ECC 6.0的时代。那时候装个GUI,配个传输路径,感觉就已经很复杂了。后来S/4HANA出来,说实话,我也花了点时间去适应。但说白了,核心的开发思想没变,变的只是底层架构和工具链。
1.1 SAP ECC与S/4HANA:到底差在哪?
很多新手会问:ECC和S/4HANA,我该学哪个?我的建议是——直接学S/4HANA。但你必须理解ECC,因为大量存量系统还在跑着ECC。
咱们用一张表来对比核心差异:
| 对比维度 | SAP ECC (6.0) | SAP S/4HANA |
|---|---|---|
| 数据库 | 支持多种数据库(Oracle, DB2, SQL Server等) | 仅支持SAP HANA(内存计算) |
| 数据模型 | 大量聚合表(如MARC, MSEG等) | 简化数据模型,去聚合化(如MATDOC替代MSEG) |
| 用户界面 | 传统SAP GUI为主 | SAP Fiori (UI5) 为主,GUI为辅 |
| ABAP版本 | ABAP 7.4及以下 | ABAP 7.5+,支持CDS View, RAP等新特性 |
| 开发工具 | ABAP Workbench (SE80) | ABAP Development Tools (ADT) + Eclipse |
嗯,这里要注意一点。S/4HANA虽然叫“新”系统,但它的ABAP语言核心语法和ECC是高度兼容的。你写的REPORT、FUNCTION MODULE,在S/4HANA里照样能跑。但如果你要用新特性——比如CDS View、AMDP——那就必须用ADT了。
我的经验: 我在做某个大型制造企业的升级项目时,客户坚持要保留ECC上的所有自定义Z程序。结果一迁移到S/4HANA,很多基于MSEG表的报表直接报错——因为表结构变了。所以,别以为“兼容”就是“完全不变”。
1.2 ABAP Development Tools (ADT):你的新战场
如果你还在用SE80写代码,我建议你尽快切换到ADT。为什么?因为ADT是基于Eclipse的,它提供了现代IDE该有的一切:代码补全、重构、Git集成、调试器增强……
安装步骤其实不复杂,但有几个坑我得提前告诉你:
- 下载Eclipse IDE for Java EE Developers —— 别下错了版本,我见过有人下了个C++版本,折腾半天连不上系统。
- 安装ADT插件 —— 在Eclipse Marketplace里搜索“ABAP Development Tools”,直接安装。注意,插件版本必须和你的SAP系统版本匹配。我曾经因为插件版本太新,连不上一个老旧的S/4HANA 1610系统,折腾了一下午。
- 配置SAP Logon —— 你需要一个SAP Router字符串或者直接IP地址。如果你是本地虚拟机,直接用IP就行。
- 创建ABAP Project —— 输入系统ID、客户端、用户名密码。连接成功后,你会看到熟悉的包结构。
避坑指南: 我曾经在配置ADT时,一直报“SSL handshake failed”。后来发现是Eclipse的JDK版本太旧,不支持系统要求的TLS协议。换了个JDK 11,问题立刻解决。所以,JDK版本一定要对。
1.3 SAP NetWeaver AS ABAP:系统的心脏
说白了,NetWeaver Application Server ABAP就是SAP系统的运行环境。它负责管理你的ABAP程序、数据库连接、用户会话、事务处理……
你不需要成为NetWeaver管理员,但有几个基础概念必须懂:
- 实例 (Instance):一个SAP系统可以有多个实例,比如中央实例(CI)、对话实例(DI)。开发环境通常只有一个实例。
- 工作进程 (Work Process):ABAP程序运行的地方。有Dialog、Update、Background等类型。你写个报表,就是在Dialog进程里跑的。
- 传输层 (Transport Layer):代码从开发机到测试机到生产机的通道。你写的每个程序,最终都要通过传输请求(Transport Request)来移动。
- 包 (Package):也叫开发类(Development Class)。所有ABAP对象都必须属于某个包。包有层级,比如本地对象($TMP)只能用于测试,不能传输。
你想想看,如果你连“工作进程”是什么都不知道,那遇到“系统响应慢”的问题时,你连排查方向都没有。我见过一个同事,系统卡了,他以为是代码问题,查了半天,结果发现是Dialog进程全被占满了。
警告: 千万别在$TMP包里放生产代码!我曾经接手过一个项目,前任把所有自定义程序都放在$TMP里,结果系统升级时,这些程序全丢了。血的教训。
1.4 动手实践:搭建你的第一个开发环境
好了,理论说完了,咱们来点实际的。我建议你按以下步骤操作:
- 安装一个SAP S/4HANA 2020或更高版本的虚拟机(推荐使用SAP官方提供的Calibre或AWS上的试用版)。
- 下载并安装Eclipse IDE + ADT插件。
- 创建一个ABAP Project,连接到你的系统。
- 在系统里创建一个简单的包(比如ZDEV_TRAINING),然后写一个最简单的Hello World程序:
REPORT ZHELLO_WORLD.
WRITE: 'Hello, SAP World!'.
就这么简单。当你看到输出窗口里出现那行字时,恭喜你,你已经迈出了SAP开发的第一步。
我个人习惯,每学一个新系统,第一件事就是写个Hello World。不是为了炫技,而是为了确认整个开发链路是通的——从代码编辑到激活到运行,每一步都不能出错。
好,第一节课就到这里。下一节,咱们会深入ABAP的数据类型和基本语法。记住,环境搭好了,后面的事就顺了。