有哪些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 关键字,并且给出了替代方案。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容