尧图精选

ABAP 开发者转型:从 Classic ABAP 到 ABAP Cloud 与生成式 AI

🕒 发布时间:2026/9/28 7:15:33 📁 来源:尧图网络
过去这一年SAP 技术圈里被讨论得最多的两个词一个是 ABAP Cloud一个是 Generative AI。恰好这两个话题在 ABAP Development Days 2024 上被放到了一起也逼着所有还在写 Classic ABAP 的老开发重新问自己一个问题接下来到底学什么、怎么迁、如何在新旧技术栈之间平稳落地。这篇文章我想结合这次大会的关键信息和自己的实际经验聊聊经典 ABAP 开发者在 ABAP Cloud 和生成式 AI 浪潮下的转型路径、实操要点以及踩过的坑希望能给正在做技术选型和团队能力升级的人一点参考。1. 为什么ABAP开发者都在谈“上云”和“AI”1.1 Classic ABAP的存量现实与升级痛点先说一个无法回避的事实目前全球范围内运行着的 SAP 系统中绝大部分还是以 Classic ABAP 方式开发的存量代码。经典报表Classic Report、功能模块Function Module、隐式增强Implicit Enhancement、直接读取数据库表、跨客户端访问……这些在过去二十年里帮企业解决了大量业务问题的写法在 S/4HANA 和云化趋势下正在变成升级路上的主要阻力。我自己参与过不少 S/4HANA 升级评估最常见的场景是这样的系统里攒了上千个 Z 开头的自定义对象其中相当一部分是嵌套报表、批处理程序和早期遗留的功能模块。这些代码往往没有足够的文档写的时候也没有考虑过“扩展性”和“未来兼容性”。到了升级验证阶段光是把这些自定义代码在 S/4HANA 上的兼容性问题梳理清楚就要消耗团队几个月的精力更不要说有些代码用了不再支持的数据库表或废弃 API直接导致无法编译和激活。这也正是 Classic ABAP 转型的第一层痛点技术债不是一天形成的但它会在升级和云迁移的关口一次性爆发。传统开发模式允许你直接修改 SAP 标准对象、允许你跨应用服务器做全局数据共享在传统 NetWeaver 环境里这些能力是“便利”但如果想把系统搬到云端或者用云策略来治理架构这些能力就变成了“风险”。1.2 ABAP Cloud要解决什么问题ABAP Cloud 不是一个新语言严格来说是基于 ABAP 的一套云优先开发范式它规定了你在云环境里应该如何写代码、能使用哪些 API、不能使用哪些 API以及如何通过扩展而非修改来满足业务需求。第一次接触 ABAP Cloud 的人最直观的感受往往是“限制变多了”。比如不再允许直接访问 SAP 标准表、很多传统语句被列为关键字不支持如经典的 H 开头的直接内表访问需要改用新语法、所有数据访问都要通过 CDS 或托管服务完成。但换个角度想这些“限制”其实是在帮开发团队建立护栏。SAP 提出的 Clean Core清洁核心理念本质上就是希望企业尽量少改标准对象、多用标准扩展点。这样带来的直接好处是升级成本大幅下降、系统稳定性更高、未来可以更平滑地迁移到云环境。ABAP Cloud 恰恰就是清洁核心的技术落地方式它把“能不能这么做”从自觉约束变成了编译器和运行时层面的强制性规则。另外ABAP Cloud 的编程模型核心是 RAPRobust Application Programming。这个模型抽象出了业务对象、行为、服务暴露这几个层次让开发者可以用一套相对统一的模式去开发 OData 服务、Fiori 应用和后端逻辑。和传统 ABAP 相比RAP 更像是在“框架内写业务”而不是“从零开始搭架子”这一点对团队工程化能力的提升很有帮助。1.3 2024年为什么是转折点很多人问我为什么不是 2020 年、2021 年谈转型而是 2024 年显得格外重要我的感受是ABAP Cloud 的概念已经提出了几年但此前一直面临“生态工具不成熟、参考案例少、团队有畏难情绪”的问题。而 2024 年前后几个因素刚好叠加在一起SAP S/4HANA Cloud 私有化版本在国内大客户中的渗透率明显提升RAP 相关学习资源和工具链ABAP Development Tools、Cloud Foundry 环境下的部署管线趋于稳定再加上生成式 AI 的爆发让开发者可以用 AI 辅助完成不少以前需要花大量时间去查阅文档和样板的编码工作。换句话说ABAP Cloud 不再是一个“战略话题”它已经变成很多项目里真实落地的主线任务。而生成式 AI 在这次变革里扮演的角色不是替代开发者而是降低转型初期的技术门槛和挫败感。所以 2024 年让我最明显的感觉是一线开发者终于可以在一个相对完整的工具链里去实践新范式下的 ABAP 开发而不是只停留在 PPT 和概念验证阶段。2. ABAP Cloud落地从“能用”到“用得顺手”2.1 清洁核心原则分清“扩展”与“修改”清洁核心这个概念听起来很高大上落到日常开发里其实就是一个很朴素的准则能用扩充Enhancement解决的事不要用修改Modification去实现。传统 ABAP 里开发人员习惯了直接修改 SAP 标准程序比如在一个标准报表的 PAI 事件里塞一段自己的业务逻辑或者直接给标准结构追加自定义字段并修改标准程序的处理流程。这种做法在升级的时候很容易出问题因为 SAP 的标准对象一旦发生变化你的改动位置很容易失效、丢失甚至引发运行时异常。在 ABAP Cloud 的环境里SAP 用技术手段把“修改标准对象”这条路堵上了。云环境下你根本无权修改 SAP 的核心对象只能在预定义扩展点Extension Point、自定义表、CDS 视图和 RAP 业务对象等允许的维度进行扩展。我在实际项目里的建议是哪怕现在还在做传统系统也要尽早按照“优先扩展、绝不修改”的思路来管理自定义代码。具体可以从这几个动作开始定期盘点已修改的标准对象评估去修改化Unmodification的可行性和迭代计划。新增需求优先寻找标准配置和标准扩展点只有确认没有现成能力时才考虑自定义开发。自定义开发时数据结构设计尽量与标准表解耦通过关联Association而不是直接读表来获取标准数据。这个过程不会立竿见影但每一次新需求的落地方式选择都在为未来可能的云迁移积累资产。2.2 RAP编程模型实操拆解RAP 是 ABAP Cloud 里绕不开的核心编程模型。我第一次用 RAP 做业务对象时最大的感受是“它把 MVC 的思想从概念变成了产品化的工具”。RAP 里面一个业务对象由 CDS 根节点Root View、子节点Child View、行为定义Behavior Definition和服务定义Service Definition组成。开发思路非常清晰先定义数据结构再定义行为如 create、update、delete、自定义操作最后暴露成 OData 服务供 Fiori 或其他前端调用。以一个简单的“订单管理”为例。第一步是定义 CDS 数据模型把订单头和订单明细的关系建模出来EndUserText.label: 订单根视图 AccessControl.authorizationCheck: #NOT_REQUIRED define root view entity ZRAP_Order as select from ztb_order composition [0..*] _order_item { key order_id, tenant_id, order_date, customer_id, status } EndUserText.label: 订单明细子视图 define view entity ZRAP_OrderItem as select from ztb_order_item { key item_id, parent.order_id, product_id, quantity }定义行为时我习惯把核心的业务校验放在行为实现Behavior Implementation里比如订单金额检查、状态流转合法性判断等。行为定义文件里声明了支持的创建、更新和自定义方法define behavior for ZRAP_Order alias Order persistent table ztb_order lock master authorization master ( instance ) { create; update; delete; action ( features : instance ) submit; }最后通过服务定义把 BO 暴露出去define service ZUI_Order_Service { expose ZRAP_Order as Order; expose ZRAP_OrderItem as OrderItem; }这个过程看起来简单但实际写代码时要注意的细节不少。比如 CDS 视图里的 key 字段必须在所有节点中保持一致组成关系必须清晰行为定义中的持久化表必须与 CDS 依赖的数据来源匹配服务暴露后还需要用 Service Binding 绑定到通信场景才能被 OData 客户端调用。对习惯了 Classic ABAP 的人来说这些步骤一开始会觉得有点繁琐但熟悉之后就会发现它带来的项目规范性和代码可维护性确实是旧模式比不了的。2.3 从经典报表到云就绪代码的改造实例我见过很多团队对“改造存量代码”有种误解以为就是把 OPEN SQL 的语法换成新的 CDS 语法就完事了。实际上真正的改造核心是“业务逻辑的重新表达”。举个例子以前我们经常写这种交互式报表用户通过 ALV 选择行点击按钮后程序直接在内部表里计算汇总然后更新自定义表。这种逻辑虽然用起来顺手但对云环境很不友好因为云环境里前后端分离Fiori 应用更倾向于通过 OData 服务和 RAP 行为来处理交互。所以改造的时候不能只把 ALV 控件换掉而是要把“数据读取、逻辑处理、UI交互”重新分层。我在一个订单状态调整的功能改造里是这样做的先把原来报表里的状态判断逻辑迁移到 RAP 行为实现类里做成一个 submit 操作然后把原来 ALV 展示的列表数据源改成 CDS 视图最后 Fiori 前端通过 OData 调用 RAP 操作并把业务校验的返回消息在前端展示。这样做了以后业务逻辑完全沉淀在后端前端只负责展示和触发后续如果要换 UI 技术栈后端几乎不用动。这里也提醒大家改造不是“一次重写”。比较稳妥的做法是优先处理那些长期被业务依赖、改动风险高的核心对象先做逻辑梳理和接口稳定化而对于边角功能可以在系统升级或功能调整时顺带迁移避免一次性铺开造成业务中断。3. 生成式AI进入ABAP开发过程的几条真实路径3.1 AI辅助代码生成的实际体验生成式 AI 这波浪潮起来以后很多 ABAP 开发者第一个问的问题是它能帮我写什么以我自己的体验来看目前在 AI 辅助 ABAP 开发这件事上作用最明显的是“把样板代码和枯燥的结构化代码生成出来”。比如你让 AI 基于一个接口定义生成 RAP 的 CDS 视图骨架、创建 Behavior 定义的初始结构或者生成一个标准 ABAP Unit 测试方法这些任务过去需要手动敲很多模板代码现在用自然语言描述清楚需求AI 能给出七八成可用的代码。我常用的做法是在 IDE 的 AI 对话面板里输入类似这样的提示词请帮我生成一个 RAP 业务对象的 CDS 根视图和子视图字段包括订单号订单表主键、客户编号、订单日期、状态以及订单明细商品编号、数量、单价。分别在根视图和子视图之间建立 composition 关系。得到结果后我会马上做三件事一查字段名和表名是否合理二看关联关系符不符合业务语义三跑一遍语法检查确保通过。也就是说AI 可以当“初稿写手”但不能当“背锅侠”。没有 ABAP 基础的人用 AI 写代码很容易陷入“看起来很对跑起来全是错”的窘境最终还是要靠自己的 ABAP 功底来兜底。3.2 ABAP环境中的AI能力不只是代码补全很多人以为生成式 AI 在 ABAP 开发里就是“自动补全代码”其实远不止如此。SAP 在 ABAP 云环境中正在逐步整合 AI 能力包括 Business AI 场景的嵌入式服务、AI Foundation 上承载的机器学习功能等。落地到开发实践上我能看到的几个方向自然语言生成 CDS 视图通过描述业务需求自动生成初步的数据模型开发者再基于业务语义调整。测试数据生成与测试脚本准备AI 根据 CDS 和 Behavior 定义生成 ABAP Unit 测试的数据条件和断言代码这在做单元测试时能省很多事。代码解释与文档生成对一段遗留的 Classic ABAP 代码AI 可以生成结构说明、参数解释和改进建议帮助新接手的人更快理解存量逻辑。这些能力在传统 IDE 和云 IDE 里已经开始逐步落地。不过要提醒一点云环境中的数据安全和模型调用权限需要提前规划。企业引入 AI 辅助开发工具时最好先确认代码样本上传到外部模型服务是否符合信息安全规范必要时采用私有化部署或企业内部模型网关避免把业务敏感数据直接暴露给公共模型。3.3 用AI做代码评审与测试设计代码生成之外我觉得 AI 潜力最大的场景其实是代码评审和测试设计。传统 ABAP 代码评审非常依赖高级开发者的经验和精力有了 AI 模型的帮助我们可以把一部分机械性检查工作交给工具。举个例子把一段准备提交的 ABAP 代码粘贴给 AI让它帮你检查有没有使用过时的语法、有没有违反 Clean Core 规则的写法、有没有性能隐患比如在循环里写 SQL、Nested Loop 查表等。AI 通常能很快列出清单并给出修改建议虽然不一定 100% 准确但它可以很好地“照出盲区”。尤其是对刚转型 ABAP Cloud 的团队AI 的代码审查在一定程度上扮演了“导师”的角色帮助开发者快速识别自己的旧编码习惯。测试设计方面我会让 AI 根据 RAP 行为的业务规则生成场景化测试用例。比如根据以下业务规则设计 ABAP Unit 测试用例当订单状态为已提交时不能重复提交当客户信用额度不足时提交失败提交成功后订单状态变为已提交。AI 生成的内容可以作为测试用例设计的初稿再结合业务测试工程师的补充能显著提升覆盖率。4. ABAP Development Days 2024的关键信号与实战建议4.1 大会释放的技术信号ABAP Development Days 2024 给我最大的信息量在于SAP 明确把 ABAP Cloud 定位成了 ABAP 开发的未来主线而不是可选项。会上展示的所有新功能、工具链和最佳实践几乎都围绕“云开发模型 高质量业务扩展”这两个关键词展开。对开发者来说这意味着未来的样本代码、官方文档、社区讨论都会优先以 ABAP Cloud 和 RAP 为准Classic ABAP 相关的内容会逐渐从官方渠道淡出只保留兼容性维护的范畴。另一个明显信号是 AI 被整合进了整个 ABAP 开发工具链。不只是某个独立的 AI 插件而是从代码仓库管理、构建、测试到部署的各个环节都开始出现 AI 辅助的影子。比如基于生成式 AI 的代码解释、基于 AI 的测试智能推荐等。虽然没有哪个功能在一夜之间改变所有人的工作方式但方向已经很清楚了未来的 ABAP 开发者必须学会和 AI 协作者共事。最后大会还透露出一个很重要的趋势ABAP 开发者需要具备更强的“全栈意识”。过去我们可能只需要写好 ABAP 后端逻辑现在 ABAP Cloud 场景下至少要对 OData、Fiori、身份认证、部署管道有基础认识。这不是说每个 ABAP 开发都要变成全栈专家但至少要对上下游环节有感知能力否则连调试部署问题都会很费劲。4.2 新老项目并存期的过渡策略大多数企业的现实情况是既有大量 Classic ABAP 存量系统又开始有几个新项目试点 ABAP Cloud。这种新旧并存的局面最容易引发的混乱是“标准不统一”。有人用老方式加新功能有人在新项目里推 RAP时间一长代码风格碎片化团队矛盾也出来了。我的建议是过渡期要明确几条“硬规则”。第一按系统边界划分标准已经定义为核心业务系统的老系统短期内仍以兼容稳定为主但所有新增接口和数据模型优先使用 CDS 和 OData 的方式扩展避免继续增加传统功能模块的数量。第二新启动的项目无论是 S/4HANA Cloud 还是基于 BTP 的扩展项目一律采用 ABAP Cloud 开发模式不再接受 Classic ABAP 的新代码。第三允许一段过渡期内的“学习豁免”比如前三个月允许团队在非生产场景用老方式交付原型但准备上生产前必须完成向 RAP 的迁移。这样做的核心逻辑是既不让业务交付停摆也不让新理念永远停留在口号阶段。通过项目边界的切割团队可以在真实交付中逐步积累新范式下的经验而不是特意安排“练手项目”。4.3 开发者学习路径与团队能力升级关于学习路径我经常被问“会不会很难”。我的回答是对成熟的 ABAP 开发者来说最大的难点不是语法而是思维模式的转换。从“写一段报表处理逻辑”切换到“定义一个业务对象并暴露服务”这个认知跳跃需要时间。具体来说我比较推荐的学习顺序是这样的先学 CDS 基础能熟练用 CDS 定义视图和关联关系建立“数据模型驱动开发”的意识再学 RAP重点理解行为定义、行为实现、BO 的完整生命周期然后学服务暴露和 OData搞清楚一个 Service 从定义到被 Fiori 消费的完整链路最后补充云环境知识包括部署方式、通信场景、身份认证等内容。团队能力升级这件事我的经验是不建议搞“大课堂式培训”效果往往一般。更好的做法是选一个实际的小需求让一两个骨干先行试点做出样板后复盘再由这些骨干带着项目组其他成员一起做类似需求。这种“师傅带徒弟 项目实战”的方式我测试过很多次比单纯看文档和视频有效得多。5. 常见问题与避坑记录5.1 云迁移中的兼容性陷阱在从 Classic ABAP 往 ABAP Cloud 迁移时最常见的坑是“数据字典对象的不兼容”。传统系统里我们喜欢用 ALV 控件直接操作内表并更新数据库但 ABAP Cloud 中很多传统表格操作被限制数据库表的访问必须通过 CDS 或 RAP 的托管操作。有一个很典型的场景旧代码直接使用 UPDATE ztable SET ...在 ABAP Cloud 环境会被语法检查拒绝必须把这部分逻辑改造成通过 RAP 行为实现类去修改数据。另外要留意“跨客户端Client”相关逻辑。很多传统程序写死或依赖特定的客户端数据访问方式在云环境里通常统一使用默认客户端不再允许跨客户端读取。迁移前要专门排查代码中是否存在显式的 client 参数以及所谓的“全局共享数据”设计这些在云环境里基本都要重构。5.2 AI生成代码的边界与审查AI 生成的 ABAP 代码最大的问题不是“写不出”而是“看似专业实则错漏”。我遇到过 AI 生成了一个 CDS 视图语法完全正确但关联字段搞错了业务语义结果数据查询出来口径不对当时没发现后来对账时才对出来问题。所以要给团队定一个原则AI 生成内容只能作为初稿任何人提交代码前必须做业务逻辑走查和字段级语义审查。在 ABAP Cloud 场景下还有个边界问题AI 可能会建议你使用某些 API 或语句这些语句在传统 ABAP 里可行但在云环境被禁用了。因此审查时不要只盯着代码能不能激活还要确认它符合 ABAP Cloud 的语言规则必要的时候直接查官方兼容性清单或跑代码分析工具。5.3 团队落地时的节奏控制最后这个坑更多是管理层面的但破坏力最强。我见过有的团队在转型初期太激进的要求所有项目立即 ABAP Cloud结果业务部门等着上线团队却在忙着学新框架交付一拖再拖。也见过另一种极端因为担心风险始终不敢在新项目里用 RAP结果一年多过去团队整体水平和技术氛围都没有提升。节奏控制的经验是“双速并行”核心关键业务继续保守交付但每两个迭代里至少安排一个小需求用新方式做并做好复盘。这样团队压力可控业务风险可控又能保证学习曲线在稳步增长。我自己的体会是技术转型本质上是一次团队心态的转型给团队足够的安全感比技术本身更重要。碰到卡壳的问题要允许大家公开讨论尽早把困惑暴露出来而不是藏着掖着自己憋到死。从我个人的实战感受来看Classic ABAP 的老经验并没有白费相反对业务逻辑的深刻理解恰恰是你在 ABAP Cloud 和 AI 辅助开发时代最大的护城河。工具会变编程模型会变但那双能看懂业务、能审核代码、能控制风险的眼睛永远是项目里最稀缺的资源。最后再分享一个小技巧别把 ABAP Cloud 和生成式 AI 当成两个并列的“新知识”去学把 AI 当成你学习 ABAP Cloud 的加速器——用它生成样板、解释报错、设计测试让新范式的学习曲线更平缓一些同时也更快地完成你自己的角色升级。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →