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

简介: Jerry在之前的文章多次提过,SAP Cloud Platform ABAP编程环境上的ABAP语法,只是广大SAP顾问们在On-Premises环境上使用的ABAP的一个子集。换句话说,On-Premises环境下能正常工作的ABAP代码,单纯地复制粘贴到云环境上之后,可能就无法通过编译了。

Jerry在之前的文章多次提过,SAP Cloud Platform ABAP编程环境上的ABAP语法,只是广大SAP顾问们在On-Premises环境上使用的ABAP的一个子集。换句话说,On-Premises环境下能正常工作的ABAP代码,单纯地复制粘贴到云环境上之后,可能就无法通过编译了。看一些例子:

MOVE

clipboard1,1

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

clipboard2,2

没有Released for Cloud的Data Elements

每个ABAP Development Tool里创建的ABAP Cloud项目里都有一个Released Objects文件夹,里面维护着一个ABAP开发人员在云环境里能使用的对象清单,在Data Elements里即是所有可用的数据元素(Data Elements). 排在第一位的就是描述布尔类型的ABAP_BOOLEAN.

clipboard3,3

同样是因为历史原因,大家知道在On-Premises环境里要定义一个布尔变量,我们可以有许多种选择:boole_d, abap_bool, boolean等等。

clipboard4,4

但是到了云上,大家还是老老实实使用清单里维护的那些类型吧。

clipboard5,5

不是所有的SYST结构字段都能直接访问

结构体SYST里包含了很多系统字段,能让ABAP开发人员方便地获得一个ABAP应用执行时的各种维度的信息。

clipboard6,6

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

clipboard7,7

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

clipboard8,8

下面是一些其他例子。

clipboard9,9

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

clipboard10,10
clipboard11,11
clipboard12,12

当然如果嫌这种一条条修复的方式速度较慢,或者想象这样一个场景:您的ABAP On-Premises系统上有一个开发包,里面包含了很多ABAP二次开发代码,在用Jerry之前文章 使用abapGit在ABAP系统和SAP云平台ABAP环境之间进行代码传输 介绍的办法将这些代码迁移从On-Premises系统迁移到云上之前,您期望做一次统一的“Cloud Readiness”检查,一次性把所有上云的隐患都列出来。

传统的ATC检查(ABAP Test Cockpit, 一种ABAP代码检查工具)此时再次有了用武之地。按照这篇SAP社区博客提到的note去做,在一个ATC中央检查系统上安装包含了新的ATC检查选项的实现note:

clipboard13,13

How to check your custom ABAP code for SAP Cloud Platform ABAP Environment
https://blogs.sap.com/2018/10/02/how-to-check-your-custom-abap-code-for-sap-cloud-platform-abap-environment/

这个新的ATC检查选项名称为SAP_CP_READINESS_REMOTE,能帮助我们早在ABAP代码迁移到云环境之前,在On-Premises环境里就提前找出所有阻止当前被检查的ABAP代码上云的障碍。

clipboard14,14
clipboard15,15

当然这种检查反方向执行也是可以的,即在SAP Cloud Platform ABAP环境里,触发连接的ABAP On-Premises环境里的ATC检查。由于是云环境访问On-Premises环境,所以需要SAP Cloud Connector完成内外网穿越:

clipboard16,16

从Fiori Launchpad里进入Custom Code Migration这个应用,创建一个新的迁移项目:

clipboard17,17

迁移目标当然是SAP Cloud Platform ABAP环境,而源头是ABAP On-Premises环境,所以需要维护一个指向该环境的Destination,这个Destination在SAP云平台上创建。

clipboard18,18

此时我们就可以在Fiori UI上触发ABAP On-Premises系统上的ATC检查,并监控其进度。

clipboard19,19

检查完毕后,可以根据提示返回On-Premises环境进行代码调整。

clipboard20,20

本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

相关文章
|
19天前
|
数据处理 开发者
ABAP AT NEW 关键字的用法
ABAP AT NEW 关键字的用法
20 0
|
1月前
|
Java C#
ABAP 7.40 新语法介绍系列之三 - ABAP Value 操作符试读版
ABAP 7.40 新语法介绍系列之三 - ABAP Value 操作符试读版
23 0
|
1月前
|
存储 自然语言处理 BI
ABAP 关键字 READ TEXTPOOL 的用法介绍
ABAP 关键字 READ TEXTPOOL 的用法介绍
24 0
|
1月前
|
SQL Java 数据库
ABAP 7.40 新语法介绍系列之四 - ABAP Table Expression 内表表达式的用法试读版
ABAP 7.40 新语法介绍系列之四 - ABAP Table Expression 内表表达式的用法试读版
18 0
|
1月前
ABAP 7.40 新语法介绍系列之一 - ABAP 变量内联声明(Inline Declaration)试读版
ABAP 7.40 新语法介绍系列之一 - ABAP 变量内联声明(Inline Declaration)试读版
27 0
|
6月前
|
XML 存储 中间件
根据指定关键字搜索指定时间范围内的 SAP CRM 中间件 BDOC 的 ABAP 小工具分享
根据指定关键字搜索指定时间范围内的 SAP CRM 中间件 BDOC 的 ABAP 小工具分享
55 0
|
6月前
|
数据处理
SAP ABAP 里 FILTER 关键字的用法举例
SAP ABAP 里 FILTER 关键字的用法举例
52 0
|
6月前
|
数据库
ABAP MESSAGE 关键字的使用方法
ABAP MESSAGE 关键字的使用方法
41 0
|
7月前
|
测试技术 应用服务中间件 数据库
一些 Next Generation ABAP Platform 的新语法用例
什么是 NGAP(Next Generation ABAP Platform)? SAP NetWeaver 7.40 发布,并附带其 ABAP 应用服务器 AS ABAP 7.40。 在 AS ABAP 7.40 中,ABAP 语言具有一些不错的新特性。 AS ABAP 7.40 是 AS ABAP 7.31(又名 AS ABAP 7.03)的继承者,后者是基于 AS ABAP 7.0 构建的 AS ABAP 7.02 的继承者。
42 0
|
7月前
|
监控 IDE Devops
有哪些ABAP关键字和语法,到了ABAP云环境上就没办法用了?
有哪些ABAP关键字和语法,到了ABAP云环境上就没办法用了?
56 0

热门文章

最新文章