SAP BTP ABAP 环境是用于 ABAP 开发的 SAP 平台即服务 (PaaS) 产品,使开发人员可能利用其传统的本地 ABAP 专业知识,在 SAP 业务技术平台中开发和运行 ABAP 应用程序,或者作为 SAP 软件的扩大或作为独立应用程序。

在咱们进入 云端 ABAP 技术细节的探讨之前,不晓得大家是否思考过一个问题:为什么 SAP 要把 ABAP 编程环境引入 SAP Cloud Platform?

SAP 装置的客户群将其现有的外部部署 SAP Business Suite 和 SAP NetWeaver 等产品,部署迁徙到 SAP S/4HANA,包含 On-Premises 和云部署。客户将利用这个机会从根本上简化其在过来几十年中倒退起来的零碎 landscape. 现有的商务套件零碎将尽可能整合到繁多的 S/4HANA 实例中。客户心愿将其外围业务流程的复杂性放大到一个智能的数字外围(Intelligent Digital Core),从而造成智能企业的支柱。

在传统的商务套件零碎中,客户定制话内容无疑是复杂度极高的模块。通过企业的多年应用,自定义代码堆积如山。对 SAP 规范 ABAP 代码的间接批改,会给客户转向更高级别的版本或加强包的施行,带来极大的阻碍。在这种状况下,当客户试图施行新的加强包到零碎时,不得不投入大量的工夫和精力破费在确保自定义代码在加强包施行后依然可能失常工作。

如果客户的 ABAP 解决方案,部署在云端后,那么这些定制化代码又何去何从呢?

通过将 ABAP 开发和执行转移到 SAP Cloud Platform,客户和合作伙伴能够将所有基础架构、生命周期治理和零碎经营工作委托给 SAP 的 DevOps 团队。 客户和合作伙伴能够立刻受害于并采纳由 SAP HANA 提供反对的 ABAP 堆栈的最新翻新,从而能够在云中更快地应用翻新,因为每个季度都会交付新的翻新。

因而,辨别哪些传统的 ABAP 语法,在云端 ABAP 编程环境里依然可用,就成为 ABAP 开发人员必须把握的常识之一。

SAP Cloud Platform ABAP编程环境上的ABAP语法,只是广大SAP参谋们在On-Premises环境上应用的ABAP的一个子集。换句话说,On-Premises环境下能失常工作的ABAP代码,单纯地复制粘贴到云环境上之后,可能就无奈通过编译了。

看一些例子:

MOVE

修复这个语法错误很简略,间接用赋值操作“=”替换MOVE即可。话说这种谬误应该只会呈现在古旧的历史遗留代码上吧(Legacy Code), 大家当初写代码应该都不会用MOVE进行单纯的赋值操作了。

没有 Released for Cloud 的 Data Elements

每个 ABAP Development Tool里创立的ABAP Cloud我的项目里都有一个Released Objects文件夹,外面保护着一个ABAP开发人员在云环境里能应用的对象清单,在Data Elements子文件夹里即是所有可用的数据元素。排在第一位的就是形容布尔类型的ABAP_BOOLEAN.

同样是因为历史起因,大家晓得在On-Premises环境里要定义一个布尔变量,咱们能够有许多种类型定义的抉择:boole_d, abap_bool, boolean等等。

然而到了云上,大家还是老老实实应用白名单里保护的那些类型吧。

不是所有的SYST构造字段都能间接拜访

构造体SYST里蕴含了很多零碎字段,能让ABAP开发人员不便地取得一个ABAP利用执行时的各种维度的信息。

在ABAP云环境上,应用这些字段须要特地小心,免得遇到形如Access to the field "SY-DATUM" is not permitted in the restricted language scope这种语法错误:

正确的形式,应该用CL_ABAP_CONTEXT_INFO=>GET_SYSTEM_DATE这种工具类提供的办法。

上面是一些其余例子。

侥幸的是,因为咱们是在ABAP Development Tool这个IDE里编程,所以不必硬记这些On-Premises到ABAP Cloud上的语法转换规则。大多数时候,依附IDE的语法报错或者Quick Fix性能都不难找到修复语法错误的线索。



当然如果嫌这种一条条修复的形式速度较慢,或者设想这样一个场景:您的ABAP On-Premises零碎上有一个开发包,外面蕴含了很多ABAP二次开发代码,在将这些代码从On-Premises零碎迁徙到云上之前,咱们可能会冀望做一次对立的“Cloud Readiness”查看,一次性把所有上云的隐患都列出来。

传统的ATC查看(ABAP Test Cockpit, 一种ABAP代码查看工具)此时再次有了用武之地。依照这篇SAP社区博客How to check your custom ABAP code for SAP Cloud Platform ABAP Environment提到的note去做,在一个ATC地方查看零碎上装置蕴含了新的ATC查看选项的实现note:

这个新的ATC查看选项名称为SAP_CP_READINESS_REMOTE,能帮忙咱们早在ABAP代码迁徙到云环境之前,在On-Premises环境里就可能找出所有阻止以后被查看的ABAP代码上云的阻碍。


当然这种查看反方向执行也是能够的,即在SAP Cloud Platform ABAP环境里,触发连贯的ABAP On-Premises环境里的ATC查看。因为是云环境拜访On-Premises环境,所以须要SAP Cloud Connector实现内外网穿梭:

从Fiori Launchpad里进入Custom Code Migration这个利用,创立一个新的迁徙我的项目:

迁徙指标当然是SAP Cloud Platform ABAP环境,而迁徙的源头是ABAP On-Premises环境,所以须要保护一个指向后者的Destination,这个Destination在SAP云平台上创立。

此时咱们就能够在Fiori UI上触发ABAP On-Premises零碎上的ATC查看,并监控其进度。

查看结束后,能够依据提醒返回On-Premises环境进行代码调整。

总结

本文首先对 SAP 云平台 ABAP 编程环境做了概要介绍,论述了 SAP 云平台引入 ABAP 编程环境的动机以及客户从中可能获取的收益。接着从 ABAP 二次开发这个畛域里,所有 ABAP 开发人员都关怀的 ABAP 语法兼容问题登程,列绝了典型的无奈在 ABAP 云端编程环境下持续工作的 ABAP 关键字,并且给出了代替计划。