有哪些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里即是所有可用的數據元素(Data Elements). 排在第一位的就是描述布爾類型的ABAP_BOOLEAN.
同樣是因為歷史原因,大家知道在On-Premises環境里要定義一個布爾變量,我們可以有許多種選擇:boole_d, abap_bool, boolean等等。
但是到了云上,大家還是老老實實使用清單里維護的那些類型吧。
不是所有的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二次開發代碼,在用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/02/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環境進行代碼調整。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":總結
以上是生活随笔為你收集整理的有哪些ABAP关键字和语法,到了ABAP云环境上就没办法用了?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 艰苦奋斗精神?比亚迪CEO王传福乘地铁参
- 下一篇: why debug log could