乐趣区

关于abap:有哪些ABAP关键字和语法到了ABAP云环境上就没办法用了

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 关键字,并且给出了代替计划。

退出移动版