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集成、调试器增强……

安装步骤其实不复杂,但有几个坑我得提前告诉你:

  1. 下载Eclipse IDE for Java EE Developers —— 别下错了版本,我见过有人下了个C++版本,折腾半天连不上系统。
  2. 安装ADT插件 —— 在Eclipse Marketplace里搜索“ABAP Development Tools”,直接安装。注意,插件版本必须和你的SAP系统版本匹配。我曾经因为插件版本太新,连不上一个老旧的S/4HANA 1610系统,折腾了一下午。
  3. 配置SAP Logon —— 你需要一个SAP Router字符串或者直接IP地址。如果你是本地虚拟机,直接用IP就行。
  4. 创建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 动手实践:搭建你的第一个开发环境

好了,理论说完了,咱们来点实际的。我建议你按以下步骤操作:

  1. 安装一个SAP S/4HANA 2020或更高版本的虚拟机(推荐使用SAP官方提供的Calibre或AWS上的试用版)。
  2. 下载并安装Eclipse IDE + ADT插件。
  3. 创建一个ABAP Project,连接到你的系统。
  4. 在系统里创建一个简单的包(比如ZDEV_TRAINING),然后写一个最简单的Hello World程序:
REPORT ZHELLO_WORLD.

WRITE: 'Hello, SAP World!'.

就这么简单。当你看到输出窗口里出现那行字时,恭喜你,你已经迈出了SAP开发的第一步。

我个人习惯,每学一个新系统,第一件事就是写个Hello World。不是为了炫技,而是为了确认整个开发链路是通的——从代码编辑到激活到运行,每一步都不能出错。

好,第一节课就到这里。下一节,咱们会深入ABAP的数据类型和基本语法。记住,环境搭好了,后面的事就顺了。