一、ABAP 与 NetWeaver时代
SAP NetWeaver是SAP于2004年正式推出的一体化技术平台,旨在整合企业中各种异构的应用和技术。它将数据库、中间件、应用服务器等关键组件集合在一个统一的架构之下,使企业能够在这个平台上高效地集成数据和业务流程。
在NetWeaver的架构中,最重要的组成部分之一就是SAP NetWeaver Application Server (AS)。它为运行企业的核心业务应用提供了稳定可靠的环境。其中,又细分为AS ABAP和AS Java两种运行时,分别支持ABAP和Java这两种语言的应用开发。SAP NetWeaver时代的ABAP,就是运行在AS ABAP上的那个强大的ABAP应用服务器环境。在那个时代,ABAP扮演着开发SAP商业应用绝对主力的角色。SAP的大部分经典业务套件,如ERP ECC、CRM、SRM、SCM等,都是基于AS ABAP实现的,其核心应用逻辑均由ABAP编写。正因为ABAP在SAP解决方案中所处的统治级地位,大家在谈论NetWeaver时,会很自然地、习惯性地在其前面加上ABAP的前缀,称之为“ABAP NetWeaver”。
NetWeaver为ABAP提供了全面的基础设施支持。这包括底层的SAP Basis(提供用户管理、权限、安全等基础功能),以及强大的Open SQL接口和运行时框架。这些使得ABAP程序可以独立于具体的数据库和操作系统运行。这个经典的特性,赋予了基于ABAP的应用极佳的可移植性。一个使用ABAP开发并采用OPEN SQL进行数据读写的业务模块,可以在Oracle、DB2或后来的SAP HANA等不同数据库上运行,而无需更改其核心代码。
为了满足企业不断演进的需求,NetWeaver时代的ABAP平台也在持续地升级和拓展。例如,2003年左右引入的Web Dynpro for ABAP,让ABAP开发者也能构建基于浏览器的Web UI;21世纪初中后期,ABAP开始支持Enterprise Services(基于SOAP的Web服务),以实现面向服务的架构(SOA)。2010年前后,随着移动应用的兴起,ABAP后台也开始为OData服务和SAP UI5前端提供强大的支持,以上这些NetWeaver平台的不断进化,都使得传统的ABAP环境能够逐步适应互联网和分布式架构的趋势。
NetWeaver ABAP在全球企业管理软件领域取得的巨大成功,其作为一个开发平台所具有的强大灵活性和可扩展性可谓功不可没。在实际的SAP实施项目中,许多SAP客户都曾基于NetWeaver ABAP平台,实施了深度的二次开发。例如,通过配置和二次开发,对ABAP本就复杂的定价规则进行扩展,使其符合企业自身一些个性化的需求;或者通过BAdI,在标准的订单保存流程中嵌入自定义的ABAP逻辑,根据商品类别和库存水平触发各种审批工作流。这些增强都是典型的NetWeaver时期ABAP二次开发的场景,充分展示了ABAP作为企业级开发语言的灵活性。
SAP NetWeaver本身是一个产品家族的统称,不仅包括ABAP和Java应用服务器,还包含诸如商务智能(BI)、企业门户 (EP)、流程集成 (PI/PO)等多个重要组件。然而,在SAP ERP等核心业务领域,ABAP平台始终是NetWeaver的基石。一直到SAP Business Suite的最后一个版本(SAP ECC 6.0 EHP8),以及早期的SAP S/4HANA 1511/1610版本,都还是运行在SAP NetWeaver AS ABAP之上的。SAP NetWeaver AS ABAP 7.52(对应SAP Basis 7.52)是NetWeaver时代的最后一个ABAP版本。SAP官方已明确,7.52之后不会再有新的NetWeaver发行版,新功能的开发也逐步转向了下一个平台。NetWeaver平台本身的维护,也将在2030年底结束。
二、ABAP Platform 与 S/4HANA
SAP ABAP Platform,通常指代的是S/4HANA时代的ABAP技术平台。
当SAP在推出其ERP的继任产品——S/4HANA时,对底层的ABAP平台进行了重大的升级,并赋予了它“ABAP Platform”这一全新的名称,以清晰地区别于早期的NetWeaver ABAP平台。ABAP Platform的出现,标志着SAP的技术基石,从NetWeaver向一个新架构的演进和更替。
从ABAP NetWeaver到ABAP Platform,一个里程碑式的时间节点是2018年。这一年,SAP S/4HANA 1809版本发布,它不再采用旧的NetWeaver 7.5x内核,而是运行在一个全新的ABAP Platform基础上,其ABAP内核版本也提升到了7.7x。这一更换,使得S/4HANA的底层与之前ECC时期的NetWeaver 7.53内核不再完全兼容。这意味着SAP借此机会,“移除”了一些遗留的技术和兼容层,为未来的发展清理了道路。这也标志着ABAP Platform不再完全遵循SAP之前那种“向后兼容至上(backward compatibility)”的原则,而是在必要之处做出了不兼容的改动,以充分利用新技术(特别是SAP HANA)所带来的巨大优势。ABAP Platform与过去的ABAP NetWeaver相比的不同之处如下:
- 数据库层面的变化最为显著: SAP S/4HANA强制要求使用SAP HANA作为其唯一的数据库。ABAP Platform针对HANA数据库做了深度的优化。例如,它全面引入了基于CDS(Core Data Service)的高级数据建模和“代码下推(Code Pushdown)”的理念,让复杂的数据计算和逻辑处理,尽量在性能强劲的HANA数据库层完成,从而显著提高应用的性能。这些新特性虽然早在NetWeaver 7.x时代就开始酝酿(如NetWeaver 7.40版本就推出了Open SQL的新语法和CDS的概念),但在ABAP Platform上得到了全面的确立和增强。
- 运行时内核的更新: ABAP Platform的内核引入了一系列的功能提升,并移除了一些过时的功能。例如,它进一步完善了新的锁机制Enqueue Server 2 (ENSA2),原生支持HTTP/2协议等,使系统能更好地适应现代的云环境。同时,某些早已不推荐使用的旧编程模型,在新平台上受到了限制或不再被支持,以引导开发者采用更新、更高效的技术。举例来说,在ABAP Platform上,SAP淡化了经典的Dynpro屏幕技术,对新的开发项目,则强烈鼓励使用基于Fiori的SAPUI5/OData架构。
ABAP Platform本身并不是一个面向客户直接销售的独立产品,它总是作为S/4HANA的一部分来交付,并没有自己单独的发行版本号,通常会以S/4HANA的版本年份(例如,S/4HANA 2020、2021)来间接指代其中所包含的ABAP Platform的版本。
ABAP Platform可以看作是SAP在S/4HANA时代,对ABAP技术栈的一次重新命名和持续创新。它继承了ABAP数十年在企业级应用中的稳定性,同时又针对SAP HANA数据库和云架构进行了深度的优化。正因为如此,ABAP Platform成为了S/44HANA赖以构建的坚实基础。在实现更高性能和更现代化开发范式的同时,它依然能够支持广大的ABAP开发者平滑地过渡他们的技能和大部分现有的代码。对于那些经历了从ECC到S/4HANA迁移的企业来说,绝大部分现有的ABAP代码,是可以在ABAP Platform上继续运行的。只是某些与底层数据模型耦合过于紧密,或使用了已被废弃技术的部分,需要进行重构。这种良好的延续性,使得企业在向S/4HANA过渡时,可以实现平滑升级,并有效保留多年积累的宝贵ABAP资产。
三、云端的 SAP BTP ABAP环境
随着云计算时代的全面到来,SAP在其云平台SAP BTP(Business Technology Platform)上,正式推出了ABAP编程环境。它为开发者提供了一种完全基于云的ABAP开发与运行平台。这个环境的内部代号,就是圈内常说的“Steampunk”,其官方名称则是SAP BTP ABAP Environment。本质上,它是在云中被托管的ABAP Platform,以一种平台即服务(PaaS)的形式提供给用户。换言之,SAP将自己多年积累的、强大的ABAP技术栈,提升为了一项云服务,让ABAP开发者也能够在云端开展现代化的应用开发。
SAP BTP上的ABAP环境,与传统的ABAP平台既一脉相承,又有所不同。
- 相承之处在于: 它使用的语言核心还是ABAP,其底层内核与S/4HANA的ABAP Platform共享相同的代码线,同样运行于SAP HANA(Cloud)数据库之上。它支持开发者所熟悉的ABAP语法和许多标准的函数库。因此,掌握了ABAP的开发者,可以在很短的时间内上手云端的ABAP开发。同时,不同系统之间传输ABAP代码也变得更加便捷——例如,可以利用开源工具abapGit,在本地的ABAP系统和SAP BTP云端ABAP环境之间,轻松地同步代码,从而实现代码的版本管理与迁移。
- 差异和限制: 主要体现在云环境对开发模式和安全合规的特殊要求上。SAP BTP ABAP环境采用了被称为“ABAP Cloud”的全新编程模型,也就是一种面向云的、更加严格的ABAP开发模型。它强调与S/4HANA核心系统的解耦(即“清洁核心”理念)和云端的多租户安全。这带来了一些在传统ABAP世界里所没有的规则:
- 只允许使用“白名单”内的代码和接口: 开发者在云ABAP环境中,不能像在本地系统那样,随意调用任何SAP的内部函数或直接访问系统表。开发者只能使用SAP官方正式发布的、被标记为“Released”的API、类、接口和CDS视图等对象。这确保了在云端开发的扩展应用,不会因为SAP底层核心的实现细节发生变化而失效,并有力地保护了底层核心的完整性与稳定性。
- 禁止使用某些传统的语法: 例如,在云端ABAP编程环境中,无法进行经典的Dynpro屏幕开发,也无法使用像
WRITE
这样的传统列表输出命令和CALL TRANSACTION
这样的事务调用。这意味着云ABAP开发的应用,不再支持直接在SAP GUI界面中输出列表或调用传统的事务代码,取而代之的是通过Fiori界面、浏览器或其他标准的服务接口来与用户进行交互。 - 开发与运维方式的云化: 在BTP ABAP环境中,开发者不再需要直接登录到服务器去安装软件或配置系统。他们通过ABAP Development Tools (ADT)或Visual Studio Code的ABAP插件,远程连接到云端的ABAP实例进行开发。开发完成后的部署,也更像是Git的工作模式,可以通过CI/CD流水线来自动化完成。而系统的基础设施,如内存、CPU等,则由SAP云平台自动管理和扩展,开发者无需再为此操心。
我们用一个真实的场景来说明会更为直观。假设一家使用S/4HANA Public Cloud(公有云)的零售企业,需要一个额外的库存预警应用。由于公有云的S/4HANA系统不允许通过传统方式在系统核心里新增Z程序,该企业的开发团队决定在SAP BTP ABAP环境中,构建这个扩展应用。他们在云上的ABAP环境新建了一个ABAP项目,开发了若干RESTful服务和后台逻辑:定期从S/4HANA通过标准的OData接口读取库存数据,在云端进行计算分析,一旦发现库存低于预设的阈值,就触发SAP BTP的邮件服务发出预警通知。整个应用的ABAP代码,严格遵循了ABAP Cloud的编程模型,只使用了SAP官方发布的API来获取S/4HANA的数据。应用开发完成后,客户将其部署在SAP BTP上独立运行,并通过SAP Launchpad Service(或SAP Work Zone)提供给业务用户使用。这一过程,完美地体现了云端ABAP环境的工作模式:通过“并行扩展(Side-by-side)”的方式,在云端扩展核心系统的功能,既保持了S/4HANA核心系统的“干净”与稳定,又满足了企业的个性化需求。
四、ABAP平台的演进
ABAP、ABAP NetWeaver、ABAP Platform和SAP BTP上的ABAP环境,可以被看作是SAP ABAP技术在不同发展阶段和不同应用场景下的侧面,它们既一脉相承,又各有侧重:
- ABAP (语言本身): 指的是SAP的高级业务应用编程语言。无论其承载的平台如何演变,其为企业业务处理提供强大、高度集成的应用开发能力这一核心,始终未变。
- ABAP NetWeaver (服务于Business Suite): 描述的是SAP NetWeaver技术栈下的ABAP运行环境。在21世纪初到21世纪10年代中期,SAP的大部分商业应用都运行在NetWeaver平台上,该平台包含ABAP应用服务器。因此,“ABAP NetWeaver”可以被理解为“基于NetWeaver的ABAP平台”。它支持多种数据库和多种操作系统,并极其强调向后兼容性和稳定性。例如,SAP ERP ECC 6.0以及许多老版本的SAP系统(如CRM 7.0、SRM 7.0),运行的就是NetWeaver ABAP平台。
- ABAP Platform (服务于S/4HANA): 指的是S/4HANA所使用的新一代ABAP技术平台。从2017–2018年开始,SAP逐步用“ABAP Platform”这个术语来替代原来的“NetWeaver ABAP”,以强调其是为S/4HANA量身打造的。ABAP Platform仅运行在SAP HANA数据库上,其内核版本大幅提升(7.7x及以上),并包含了许多现代化的功能(如CDS、AMDP、RAP模型等)。它不再作为一个独立的产品来提供,只能随S/4HANA的版本一并交付给用户。ABAP Platform依旧是ABAP语言,但在开发模式上,鼓励“清洁核心”和基于云的扩展理念,是连接传统ABAP世界与云时代的坚实桥梁。
- SAP BTP ABAP环境 (云端的PaaS): 这是SAP提供的、完全基于云的ABAP开发与运行平台,即ABAP作为一种平台即服务(PaaS)。它和ABAP Platform共享同宗的技术内核,但运行在SAP BTP的Cloud Foundry环境中,采用的是租户隔离的多租户架构。它主要用于云端的并行扩展和新应用的开发,特别适合S/4HANA Cloud等无法直接在核心系统中进行修改的场景。由于其云原生属性,它有一系列严格的使用约束(如只能使用白名单API、无GUI支持),以确保云环境的安全性和平滑升级。我们可以把BTP上的ABAP环境,看作是ABAP平台在公有云上的一种延伸和特殊化。这个环境常被圈内人士简称为“Steampunk”,其定位是“企业级且云就绪的ABAP平台”。
这几个概念之间的区别,可以从以下几个方面来清晰地理解:
- 环境定位不同: NetWeaver ABAP是本地部署环境,主要服务于SAP Business Suite;ABAP Platform主要服务于S/4HANA(以本地或私有云部署为主);BTP ABAP环境则是纯粹的公有云服务。
- 基础架构要求: NetWeaver ABAP支持多种数据库(包括Oracle、DB2等);ABAP Platform专属支持SAP HANA数据库;BTP ABAP环境则运行在SAP HANA Cloud(SAP HANA的云服务版本)之上。
- 开发模型演变: NetWeaver ABAP允许经典的GUI、Dynpro等技术,代码可以较为自由地访问大部分SAP对象;ABAP Platform开始引入封装与云化的思想,但在本地部署时仍兼容GUI开发,只是提供了更新的RAP模型供开发者选择;而BTP ABAP则完全采用全新的ABAP Cloud编程模型(只能通过Fiori和标准服务接口与用户交互,与核心系统松耦合)。
- 版本交付模式: NetWeaver ABAP有独立的版本号(如NW 7.50);ABAP Platform的版本号则内含于S/4HANA的版本号中(如S/4HANA 2022包含ABAP Platform 2022);BTP ABAP则作为一项云服务,持续地进行更新,没有固定的版本概念,通常按季度发布新功能。
五、赛锐信息观点
从历史的视角来看,ABAP的发展轨迹,生动地体现了SAP的技术平台从大型机时代走向云计算时代的完整演进路径:从早期的报表语言,成长为NetWeaver集成平台中的中流砥柱,再蜕变为全面支持HANA数据库和云架构的新一代平台,直到今天以云服务的形式,提供给全球的开发者。
每一次演进的背后,既是技术趋势的强力推动,也是SAP生态系统与广大用户需求的真实驱动。可以预见,ABAP作为SAP核心开发语言的地位将继续保持,但承载它的平台会不断地迭代和升级,以拥抱新的技术机遇。从ABAP NetWeaver到ABAP Platform,再到ABAP云环境,这些名词的演变,正是SAP技术革新的生动缩影——既要保持企业业务的连续性,又要不断地为其注入新的活力,从而使得无数的ABAP开发者,能够在新的时代里继续施展才华,服务于企业的业务创新。
企业在向SAP S/4HANA Cloud转型时,SAP 许可 (License) 从 On-Premise 时代的经典指定用户模型转向全新的 FUE 许可模式,且 SAP 产品的许可 (License) 包含诸如“组件授权、用户授权、计量模式”等复杂模型,这对企业来说如同一个黑匣子,难以理解其工作原理。此外,企业还面临 SAP 的 License 审计等合规性问题。赛锐信息在 SAP License 审计流程方面拥有丰富咨询经验,拥有自主研发的高效 SAP License 资产优化软件产品,欢迎企业在需要时随时联系我们,以获得我们的支持服务和软件产品试用体验。