曾几何时,ABAP 就是 SAP 的代名词。ABAP 这门编程语言造就了 SAP 名噪一时的 R/3 产品,同时也是如今 SAP 旗舰级产品,SAP S/4HANA 底层的实现语言。
ABAP 不仅代表着 SAP 这家公司在企业级管理软件市场辉煌的过去,ABAP 自身也在不断地进化着。SAP 不仅在本地部署(On-Premise)领域继续保持着自己绝对的统治地位,而且在云应用领域(Software-as-a-Service, 简称 SaaS), 也推出了自己的解决方案,比如 SAP S/4HANA Cloud,SAP Cloud for Customer,SAP Business-by-Design 等等。而这些 SAP 推出的云端软件,其后台的实现语言依旧是 ABAP.
笔者另一篇文章 道家学派创始人老子,对 SAP ABAP 这门编程语言的客观评价,曾经借助道教创始人老子
的数字化身
,讲述了 ABAP 之于 SAP 的重要性:
夫 ABAP 者,乃高级商业应用编程也。起源于德国 SAP 公司,以其构建企业资源计划(ERP)系统,助诸企于管理之道。如道生一,一生二,ABAP 亦从简至繁演化矣。
初,ABAP 生于九十年代初,为第四代语言,使编程如绘图,直观而易于把握。随技术之进步,渐含面向对象之法,以应万变之需。如水之于渊,柔而能胜刚,ABAP 之发展,顺时而动,应需而变,其在编程领域,犹如道之于万物,渐不可或缺矣。
再观其发展,自基础数据处理,至复杂业务逻辑实现,ABAP 如同道之于天下,渐成万物之母。用之于企业级管理软件开发,其重要性,犹如天地之不能相离。ABAP 能以数据为基,流转于系统之中,如道法自然,顺应企业之生态,助之以高效运转,减少冗杂,简化管理,使企之运营,如小国寡民,无为而治。
笔者之前在大学本科和研究生学习期间,使用的一直是 C 和 C++ 编程语言,从未听说过 ABAP 这门编程语言。因此所有 ABAP 开发人员刚刚接触这门编程语言遇到的陌生感,不适应,困扰,以及学习过程中遇到的各种困难和障碍,我都感同身受,因为这些我都统统经历过。
我把自己18年的 ABAP 使用经验,浓缩到了这套 ABAP 学习教程里,希望帮助 ABAP 的初学者在 ABAP 学习之路上少走弯路。同时,对于已经有 ABAP 基础,又想进一步进阶,完善自己 ABAP 知识体系的进阶学习者,这套 ABAP 学习教程也能助你们一臂之力。
本专栏计划的文章数在 300
篇左右,到 2025 年 3 月 20 日
为止,目前已经更新了 234
篇,专栏完成度为 61.3%
笔者这套零基础快速学习 ABAP从 2021 年 4 月 10 日
写下第一篇文章以来,感谢广大学习者一如既往的支持。本教程计划花费 300
左右的篇幅,向大家详细介绍 SAP ABAP 开发的方方面面。
大家在学习教程过程中,如果有任何关于 SAP ABAP 开发方面想了解的内容,可以直接在教程各篇文章下评论留言,也可以在《零基础快速学习 ABAP 读者意见反馈和下一步写作计划表》里留言。我会将大家的意见统一汇总,作为我更新教程的内容参考来源之一。
教程亮点
-
写作风格深入浅出。
笔者虽然是 ABAP 技术专家,但不会在行文中使用艰深的技术词藻,来炫耀自己的 ABAP 技术,而是每篇文章都用平实和通俗易懂的语言,把一个个 ABAP 知识点讲解清楚。 -
有自己的独到见解。
目前国内很多博客主编写的 ABAP 学习教程,都是 SAP 官方帮助文档的简单翻译和重复。笔者结合自己长达 18 年的 ABAP 使用经验,教程每篇文章都包含自己独特的见解,不但给大家讲解了 ABAP 知识点,同时还分享自己对知识点的理解,为什么 SAP 要这样设计?背后的动机是什么?通过这些拓展介绍,力求让大家在学习过程中,做到知其然更知其所以然。 -
图文并茂。
笔者之前在 SAP 官方社区撰写英文博客时,就养成了图文并茂的写作习惯。一图胜万语。不少抽象的知识点,即使大段文字描述,也很难帮助初学者有一个直观的理解。此时配上几张图片,往往事半功倍。另外编程语言的学习是一个对动手能力要求很高的活动,教程里这些在开发工具里的实际截图,能帮助学习者把握动手操作的要点,高效掌握 ABAP 各种开发的核心步骤。 -
内容全面,自成体系。
本教程计划通过多达300 余篇
的篇幅,来全面介绍 ABAP. 目前已经完成了232
篇。而 300 篇并非
教程最终的篇幅,因为我会在写作过程中,根据学习者的反馈和要求,在本教程的写作列表中添加新的TODO
项目。 -
面向实战。
本教程写作的素材主要来自两方面。第一方面是笔者18 年
ABAP 开发生涯过程中,认为每一个 ABAP 开发者都必须掌握的核心内容,笔者将其以文章的形式输出。第二方面是,笔者经常会从自己的微信公众号
,知乎咨询
,知识星球,和国内各大技术社区
收到 ABAP 从业人员给我发起的各种咨询。有些问题我如果觉得非常具有代表性,我也会将背后的知识点的讲解,编入这套教程。因此,教程的每篇文章都是 ABAP 开发者在工作中会遇到的实际问题和任务,每篇文章都配有学习者能够自己动手练习的完整源代码。 -
反馈及时。
学习者在学习这套教程中如果遇到问题,可以在对应的文章末尾留言。我会每天抽时间查看评论区并回复。包括每天上下班的地铁途中,中午晚上吃饭的间隙,种种碎片时间段,我都会和学习者的评论留言互动。这些互动,其实也是我自己不断查漏补缺,完善自己 ABAP 知识体系的一个渠道。学无止境。大家可以通过目前已经完成的232
篇文章的评论区,来查看以往的学习者曾经遇到的问题,以及我的解答。
学习者的收获
完成这套教程的学习之后,大家能够获得下面这些收获:
-
理解 ABAP 系统经典的三层架构(Presentation Layer,Application Layer 和 Database Layer)的概念,了解 ABAP 系统会话管理机制(Session Management),了解 ABAP 面向过程编程方式和面向对象编程方式的区别。
-
能够熟练掌握 ABAP 编程语言的基本特性,能够胜任日常的 ABAP 开发工作。包括掌握 ABAP Subroutine,Function Module 的用法,会创建包含 Screen 的 ABAP 程序,会创建数据库表并完成数据的读写操作。了解 ABAP Data Element 的设计原理,能使用 Field Symbol 和引用类型完成编程任务。了解 ABAP Transport Request 的概念和使用方法。了解 ABAP 程序锁机制的工作原理和使用方式。理解 ABAP 方法调用传引用和传值两种方式的差异。
-
熟练使用 ABAP 调试器对 ABAP 程序进行单步调试和错误排查。
-
国内 ABAP 开发项目中,Excel / Word 文件的读写,ALV 报表的设计,XML / JSON 文件的解析,带水印 PDF 文件的生成,邮件发送,这些都是常见的需求。本教程对这些常见需求的实现做了详细介绍。
-
熟练掌握 ST05,SAT,ST22 和一系列的 ABAP 系统分析和(性能)监控工具的使用。
-
能学习到 ABAP 框架开发人员使用的
RTTI
和RTTC
技术来实现解决工作中的实际需求。ABAP RTTI 的全称是Runtime Type Identification
. 使用 RTTI,ABAP 开发人员可以在运行时获取关于数据对象的各种信息,包括其数据类型、字段列表(如果数据是Structure 或者内表的话)以及这些字段的技术属性,比如字段名称,字段数据类型,长度等等。对于这些字段信息,ABAP 提供了一组特殊的类和接口,包括 CL_ABAP_TYPEDESCR、CL_ABAP_STRUCTDESCR、CL_ABAP_TABLEDESCR 等等。ABAP RTTI 通常伴随着 RTTC 一起使用。RTTC(Run Time Type Creation)
是 ABAP 语言的一个特性,它允许 ABAP 开发人员在运行时动态地创建和修改数据类型,而不必在编译时提前定义它们。
本专栏适合哪些学习者
-
有一定的其他编程语言的基础,但从未接触过 ABAP 的开发人员。
-
已经在工作中有过几个月到三年的 ABAP 使用经验,能胜任日常工作,但是没有系统而全面学习过 ABAP,想进一步提高自己 ABAP 技术水平的初级 ABAP 开发人员。
-
有三年以上 ABAP 编程经验,想朝着 ABAP 专家的方向努力,但是不知道具体如何进阶的 ABAP 中级水平的开发人员。
零基础 ABAP 学习教程系列文章的目录
ABAP 基础知识
-
6. 通过实际的例子,介绍 SAP ABAP 里的 Repository Information System 的使用技巧
-
80. 使用事务码 SAT 比较传统的 SELECT SQL 语句和 OPEN / FETCH CURSOR 分块读取 ABAP 数据库表两种方式的性能差异
-
82. 让要检索的 ABAP 源代码无所遁形 - 介绍一款 ABAP 代码搜索工具 RS_ABAP_SOURCE_SCAN
-
84. ABAP 数据字典里数据元素(Data Element),结构(Structure)和表类型(Table Type)三者的使用辨析
-
122. SAP ABAP 各种增强技术(Enhancement)概述 - 所谓第一代,第二代,第三代增强技术的出处是?
-
更多文章正在写作中
ABAP 面向对象编程专题
Office 专题
ALV 开发专题
ABAP 7.40 新语法介绍系列
ABAP Push Channel 和 ABAP Web Socket 专题
问题解答
本区域包含通过知乎付费咨询和知识星球向我提出并得到解答的问题:
实战案例分享
-
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
-
授人以鱼不如授人以渔:记录一次使用 ABAP 调用 OData 服务,遇到 401 Unauthorized 错误的详细排查过程
日积月累:每天一个 ABAP 知识点
更多文章正在写作中
大家在学习教程过程中,如果有任何关于 SAP ABAP 开发方面想了解的内容,可以直接在教程各篇文章下评论留言,也可以在《零基础快速学习 ABAP 读者意见反馈和下一步写作计划表》里留言。我会将大家的意见统一汇总,作为我更新教程的内容参考来源之一。
祝大家学习愉快。