Jerry在以前的文章屡次提过,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等等。ui
可是到了云上,你们仍是老老实实使用白名单里维护的那些类型吧。3d
不是全部的SYST结构字段都能直接访问调试
结构体SYST里包含了不少系统字段,能让ABAP开发人员方便地得到一个ABAP应用执行时的各类维度的信息。rest
在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二次开发代码,在用Jerry以前文章 使用abapGit在ABAP系统和SAP云平台ABAP环境之间进行代码传输 介绍的办法将这些代码从On-Premises系统迁移到云上以前,您指望作一次统一的“Cloud Readiness”检查,一次性把全部上云的隐患都列出来。
传统的ATC检查(ABAP Test Cockpit, 一种ABAP代码检查工具)此时再次有了用武之地。按照这篇SAP社区博客提到的note去作,在一个ATC中央检查系统上安装包含了新的ATC检查选项的实现note:
How to check your custom ABAP code for SAP Cloud Platform ABAP Environment
这个新的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环境进行代码调整。
更多阅读