不是所有的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 关键字,并且给出了替代方案。