有哪些ABAP關鍵字和語法,到了ABAP雲環境上就沒辦法用了?

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

blogs.sap.com/2018/10/02/…

這個新的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環境進行代碼調整。

更多閱讀

相關文章
相關標籤/搜索