SAP-ABAP:SAP 与 ABAP 关联逻辑与入门路径:业务×开发的协作指南

SAP 与 ABAP 关联逻辑与入门路径:业务×开发的协作指南

你已经了解了 SAP 的业务基础(第一篇)和 ABAP 的语法入门(第二篇)。但这两者之间究竟是什么关系?业务顾问ABAP 开发在一张采购订单背后是如何协作的?作为想入行的新人,我应该先学业务还是先写代码?本文为你打通 SAP 认知的"任督二脉",并给出可落地的入门路线图。


写在前面:为什么你必须理解这种"业务-开发"双重视角?

在 SAP 生态中,从来不存在纯粹"不懂业务的技术人员",也很难存在"完全不懂代码的业务专家"。一个典型的项目团队里,业务顾问(功能顾问)负责与客户沟通需求、设计流程、配置后台;ABAP 开发则负责将标准功能无法满足的部分通过代码实现。两者之间高效协作,是项目成功的核心

读完本文,你将能够:

  • ✅ 说明 ABAP 开发如何支撑业务需求(报表、增强、接口)
  • ✅ 理解业务顾问与开发人员的协作流程与交付物
  • ✅ 区分 ALV、用户出口、RFC/ODATA 三种典型开发场景
  • ✅ 根据自身定位,制定 0→1 的 SAP 入门学习计划
  • ✅ 避开新手最常踩的 5 个坑

第一部分:业务与开发的关联逻辑 ------ 一张采购订单背后的 ABAP

1.1 ABAP 开发如何支撑业务需求?三个典型场景

SAP 标准功能覆盖了 80% 以上的通用业务场景。但每个企业都有独特的需求,这时候就需要 ABAP 开发介入。主要集中在以下三类任务:

开发类型 业务需求举例 ABAP 实现方式
报表开发 "我想每月自动导出各部门的费用明细,按成本中心汇总。" 使用 ABAP + ALV 技术从数据库读表,输出报表
增强开发 "在创建采购订单时,如果总金额超过 100 万,必须额外填入董事会批文号。" 通过用户出口(User Exit)/ BADI / 隐式增强实现
接口开发 "我们的 SAP 需要和外部 WMS 仓库系统实时同步物料库存数量。" 开发 RFC 函数或 ODATA 服务,供外部系统调用

一句话概括:标准功能定流程,ABAP 开发补差异

1.2 业务顾问与 ABAP 开发者的协作流程(以增强开发为例)

下面是一个典型的项目场景:"在销售订单保存时,根据客户信用额度自动执行额外检查"。协作步骤如下:

步骤 角色 活动 产出物
1 业务顾问 收到客户需求,分析流程,确认标准功能不足,撰写《功能规格说明书》 FS(Functional Spec)
2 业务顾问 确定使用哪个增强点(如 BADI SD_SALES_ORDER_SAVE),定义输入输出 增强技术方案建议
3 ABAP 开发 阅读 FS,在 DEV 环境实现代码,并编写单元测试 源代码 + 技术规格(TS)
4 业务顾问 + 开发 在 DEV 系统进行功能测试,业务顾问验证逻辑正确性 测试日志
5 基础团队 通过传输请求将变更移到 QAS/PRD 生产可用
6 业务顾问 最终用户验收,文档归档 用户手册

关键点:业务顾问不要求写代码,但必须能说清楚"在哪个事务码的哪个步骤,对哪些字段做什么规则"ABAP 开发不要求懂全部业务,但必须理解当前需求对应的业务流程和字段含义


第二部分:ABAP 典型开发场景入门 ------ 三大支柱

2.1 报表开发 ------ ALV 是个什么东西?

ALV (ABAP List Viewer) 是 SAP 提供的标准报表显示工具。它封装了表格展示、排序、过滤、导出 Excel、合计等功能,让开发者只需关注数据查询和处理逻辑。

一个 ALV 报表的开发步骤(极高简化版):

  1. 定义内表,存放要展示的数据(结构与字段对应报表列)。
  2. 从数据库读取数据填入内表。
  3. 调用 ALV 函数(如 REUSE_ALV_GRID_DISPLAY)或 SALV 类,传递内表和布局参数。
  4. 用户看到可交互的表格,可点击列排序、导出等。

开发人员的关键工作 :写清楚 SELECT 语句取出哪些表的数据,按业务逻辑计算派生字段(比如"利润 = 收入 -- 成本")。

新手入门报表,建议第一个练习:从 MARA(物料主数据)表读取 10 条物料,显示物料号、物料描述、物料组。

2.2 增强开发 ------ 不动标准代码,却改变标准行为

SAP 提供了不允许直接修改标准程序(以 SAPL... 开头的程序)的原则。那如何"修改"标准功能?答案是增强

常见的增强技术层次(从简单到复杂):

  • 用户出口 (User Exit) :最老的增强方式,在标准程序中预留空子程序(EXIT_...),开发者在里面写代码即可。事务码 CMOD / SMOD
  • BADI (Business Add-In) :面向对象的增强,使用接口和多重实现。事务码 SE18 / SE19
  • 隐式增强 (Enhancement Point) :SAP 在标准代码中埋的"钩子",开发者可以在特定位置插入代码。事务码 SE80 可查。

业务顾问需要做什么

发现标准功能不满足时,去 SAP 社区或系统内查找是否存在合适的增强点(通过事务码 SE84 或询问开发)。然后描述"在哪里放什么代码"。

入门建议:先理解"为什么不能直接改 SAP 标准代码"(因为升级会被覆盖),再试着用 CMOD 为一个简单事务码添加打印逻辑。

2.3 接口开发 ------ 让 SAP 与外部世界对话

SAP 很少孤立运行。它与 MES(制造执行)、WMS(仓库)、SRM(供应商关系)、银行系统等都有数据交换需求。ABAP 常用的接口技术:

技术 全称 适用场景 简单示例
RFC Remote Function Call 同步调用,轻量级,SAP 系统之间或 SAP 与 ABAP 程序 外部系统调用 RFC_READ_TABLE 读 SAP 表数据
ODATA Open Data Protocol 基于 HTTP/REST,面向 Web 和移动端,支持增删改查 Fiori 应用通过 ODATA 服务取销售订单
Web Service SOAP 或 REST 企业级系统间标准化集成 SAP 调用微信接口发送审批待办

开发人员的职责:创建函数模块(RFC)或 ODATA 服务项目,定义输入输出结构,实现逻辑。发布后提供给外部系统调用。

业务顾问的参与:定义哪些数据需要推送给外部(如"当物料主数据创建时,通知数据治理平台"),以及字段映射对应关系。


第三部分:入门学习路径规划 ------ 从迷茫到第一份工作

3.1 学习优先级:业务 vs 技术,先学哪个?

这是最常见的"先有鸡还是先有蛋"问题。我的建议分两种情况:

  • 如果你将来想成为 ABAP 开发
    第一阶段(0--2 个月) :70% 技术 + 30% 业务。先学会 ABAP 语法、内表、OPEN SQL、ALV 基本用法。同时了解 FI/CO/MM/SD 模块最基础的业务流程(比如采购到付款、订单到收款)。
    第二阶段(2--6 个月) :50% 业务 + 50% 技术。做实际场景练习(如"库存报表""采购订单增强"),倒逼自己理解业务逻辑。
    第三阶段(6 个月后):30% 技术 + 70% 业务。深入理解你所在行业的核心流程,成为懂业务的开发者。

  • 如果你将来想成为业务顾问(功能顾问)
    先花 2--3 周 :学习 ABAP 基础语法,掌握能看懂简单代码(例如能读懂 SELECT 语句,能理解 IF/LOOP)。不需要能独立写复杂程序。
    之后:聚焦业务流程(购买 SAP 官方 PA 教材,或跟随项目学习)。但保持能理解开发人员在说什么(比如"这个 BADI 需要使用 SAVE 之前的事件")。

一个底线:不懂业务,写出的代码可能逻辑错误;完全不懂代码,无法与开发沟通效率极低。两者都要有,比例可根据目标调整。

3.2 入门学习资源推荐

🌐 免费/低成本资源
  • SAP 官方 Help Portalhelp.sap.com → 选择你的 SAP 版本 → ABAP 编程语言部分。最权威但有些枯燥。
  • SAP Community (原 SCN):搜索 ABAP 标签,有大量问答和博客。
  • YouTube 频道SAP ABAP Tutorial for Beginners (by SmartBrains, etc.)
  • 在线教程网站ABAP Programming (tutorialspoint) 有基础语法简介。
📚 书籍推荐(经典)
  • 《ABAP 开发从入门到精通》(国内出版社)-- 较全面,但建议配合系统实操
  • 《100 Things You Should Know About ABAP》-- 小技巧集合
  • 《SAP ABAP 实战》-- 有项目案例
🛠 练习环境获取
  • 个人开发系统:下载 SAP NetWeaver AS ABAP Developer Edition(官方提供 VM 镜像,需要一定硬件配置 16GB+ RAM)
  • 在线练习平台:SAP Learning Hub 免费试用(部分),或购买便宜的"迷你 SAP"虚拟机租用服务
  • 企业内部:如果你入职或实习,申请开发客户端账号,在指导老师下操作

3.3 入门阶段避坑指南(全是血泪经验)

坑编号 现象 正确做法
❌ 1 一上来就啃《SAP 官方 PA 教材》,被 3000 页吓退 先学 ABAP 基础 + 一个简单模块的流程(比如 MM 的采购),再根据需要横向拓展
❌ 2 写代码只知道敲 SE38,从不用 SE80 SE80 能帮你管理所有对象,学会对象导航是 ABAP 开发的必备技能
❌ 3 直接在生产机(PRD)尝试代码 永远只在 DEV 开发,通过传输到 QAS/PRD。生产机直接修改会被开除!
❌ 4 报表里写超大 SELECT * FROM ... 只 SELECT 需要的字段,尽量用 WHERE 过滤,避免性能黑洞
❌ 5 增强开发时复制粘贴 SAP 标准代码 只写必要的增量逻辑,不要复制标准代码。增强代码升级时可能会残留隐患。
❌ 6 孤立学习,从不加入社区 加入 ABAP 相关微信群、知乎专栏、Stack Overflow 标签,多看别人的问题和解答

读者收获自测(结合本文与之前两篇)

  1. 业务顾问和 ABAP 开发在"增强开发"项目中的主要分工是什么?请至少列出各两项职责。
  2. 如果一个需求是"每个月生成一份按销售区域统计的订单额报表",应该选用哪种开发类型(报表/增强/接口)?为什么?
  3. BADI 与用户出口的主要区别是什么?(提示:面向对象 vs 过程式)
  4. 一个希望成为 ABAP 开发的新人,在前两个月应该将学习时间的大致比例如何分配给"技术"和"业务"?
  5. 列出三个你计划使用的 ABAP 学习资源(可以是网站、书、视频等)。
  6. 为什么绝对禁止在生产客户端(PRD)直接修改代码?

结语:适合自己的路径,才是最好的路

SAP 领域不缺只会写 CRUD 的 ABAP 程序员,也不缺只会纸上谈兵的业务顾问。真正受企业欢迎的,是那些能站在业务视角设计技术方案、又能站在技术角度优化业务效率的人

现在,你已经拥有了:

  • 对 SAP 业务的基本认知(第一篇)
  • ABAP 语法的入门能力(第二篇)
  • 业务-开发协作的全局视图和行动路线(本篇)

接下来,只要坚持下去,在实践中不断踩坑、总结、提升,你一定能在这个稳定而高价值的生态中找到自己的位置。

📌 行动建议:

今天就在你的练习系统里,用 SE38 创建一个报表程序,从 T001(公司代码表)读取前 5 条记录,用 ALV 展示出来。完成后,试着回答自己:这个报表满足了谁的什么业务需求?
下一篇预告:ABAP 内表详解(实战篇)------从入门到数据魔法

深入内表的各种高级操作:排序、删除重复、分组汇总、动态内表......让批量数据处理游刃有余。

作者 :你的学习伙伴
版本记录:2026年5月 第一版

💬 如果你对自己的学习路径选择还有困惑(想做业务还是开发?没环境怎么练?),欢迎留言,我们一起讨论。

相关推荐
原来是猿1 小时前
TCP Server 业务扩展实战:从 Echo 到远程命令执行与词典翻译
linux·运维·服务器
小陈的进阶之路1 小时前
Python系列课(2)——判断
java·前端·python
MandalaO_O1 小时前
SQL 注入
数据库·oracle
蓝桉~MLGT1 小时前
中级软考(软件工程师)常用错题整理(不间断更新)
学习·中级软考
eggrall1 小时前
MySQL表的操作
数据库·mysql
2301_815645381 小时前
html.
前端·html
wearegogog1231 小时前
MATLAB椭圆参数检测算法实现
数据库·算法·matlab
飞霄不推销1 小时前
SPI驱动学习(2)
学习
GISer_Jing2 小时前
考研|考公GIS:近5年地理信息产业数据全链路核心要点(背诵版)
学习·考研·arcgis