Jerry在以前的文章屢次提過,SAP Cloud Platform ABAP編程環境上的ABAP語法,只是廣大SAP顧問們在On-Premises環境上使用的ABAP的一個子集。換句話說,On-Premises環境下能正常工做的ABAP代碼,單純地複製粘貼到雲環境上以後,可能就沒法經過編譯了。看一些例子:編程
修復這個語法錯誤很簡單,直接用賦值操做「=」替換MOVE便可。話說這種錯誤應該只會出如今古舊的歷史遺留代碼上吧(Legacy Code), 你們如今寫代碼應該都不會用MOVE進行單純的賦值操做了。工具
每一個ABAP Development Tool裏建立的ABAP Cloud項目裏都有一個Released Objects文件夾,裏面維護着一個ABAP開發人員在雲環境裏能使用的對象清單,在Data Elements裏便是全部可用的數據元素(Data Elements). 排在第一位的就是描述布爾類型的ABAP_BOOLEAN. ui
一樣是由於歷史緣由,你們知道在On-Premises環境裏要定義一個布爾變量,咱們能夠有許多種選擇:boole_d, abap_bool, boolean等等。spa
可是到了雲上,你們仍是老老實實使用清單裏維護的那些類型吧。rest
結構體SYST裏包含了不少系統字段,能讓ABAP開發人員方便地得到一個ABAP應用執行時的各類維度的信息。code
在ABAP雲環境上,使用這些字段須要特別當心,以避免遇到形如"Access to the field "SY-DATUM" is not permitted in the restricted language scope"這種語法錯誤:orm
正確的方式,應該用CL_ABAP_CONTEXT_INFO=>GET_SYSTEM_DATE這種工具類提供的方法。對象
下面是一些其餘例子。blog
幸運的是,由於咱們是在ABAP Development Tool這個IDE裏編程,因此不用硬記這些On-Premises到ABAP Cloud上的轉換規則。大多數時候,依靠IDE的語法報錯或者Quick Fix功能都不難找到修復語法錯誤的線索。ip
固然若是嫌這種一條條修復的方式速度較慢,或者想象這樣一個場景:您的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
https://blogs.sap.com/2018/10...
這個新的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環境進行代碼調整。
要獲取更多Jerry的原創文章,請關注公衆號"汪子熙":