有哪些ABAP关键字和语法,到了ABAP云环境上就没办法用了?
Jerry在之前的文章多次提過,SAP Cloud Platform ABAP編程環(huán)境上的ABAP語法,只是廣大SAP顧問們在On-Premises環(huán)境上使用的ABAP的一個子集。換句話說,On-Premises環(huán)境下能正常工作的ABAP代碼,單純地復(fù)制粘貼到云環(huán)境上之后,可能就無法通過編譯了。看一些例子:
MOVE
修復(fù)這個語法錯誤很簡單,直接用賦值操作“=”替換MOVE即可。話說這種錯誤應(yīng)該只會出現(xiàn)在古舊的歷史遺留代碼上吧(Legacy Code), 大家現(xiàn)在寫代碼應(yīng)該都不會用MOVE進行單純的賦值操作了。
沒有Released for Cloud的Data Elements
每個ABAP Development Tool里創(chuàng)建的ABAP Cloud項目里都有一個Released Objects文件夾,里面維護著一個ABAP開發(fā)人員在云環(huán)境里能使用的對象清單,在Data Elements里即是所有可用的數(shù)據(jù)元素(Data Elements). 排在第一位的就是描述布爾類型的ABAP_BOOLEAN.
同樣是因為歷史原因,大家知道在On-Premises環(huán)境里要定義一個布爾變量,我們可以有許多種選擇:boole_d, abap_bool, boolean等等。
但是到了云上,大家還是老老實實使用清單里維護的那些類型吧。
不是所有的SYST結(jié)構(gòu)字段都能直接訪問
結(jié)構(gòu)體SYST里包含了很多系統(tǒng)字段,能讓ABAP開發(fā)人員方便地獲得一個ABAP應(yīng)用執(zhí)行時的各種維度的信息。
在ABAP云環(huán)境上,使用這些字段需要特別小心,以免遇到形如"Access to the field “SY-DATUM” is not permitted in the restricted language scope"這種語法錯誤:
正確的方式,應(yīng)該用CL_ABAP_CONTEXT_INFO=>GET_SYSTEM_DATE這種工具類提供的方法。
下面是一些其他例子。
幸運的是,因為我們是在ABAP Development Tool這個IDE里編程,所以不用硬記這些On-Premises到ABAP Cloud上的轉(zhuǎn)換規(guī)則。大多數(shù)時候,依靠IDE的語法報錯或者Quick Fix功能都不難找到修復(fù)語法錯誤的線索。
當(dāng)然如果嫌這種一條條修復(fù)的方式速度較慢,或者想象這樣一個場景:您的ABAP On-Premises系統(tǒng)上有一個開發(fā)包,里面包含了很多ABAP二次開發(fā)代碼,在用Jerry之前文章 使用abapGit在ABAP系統(tǒng)和SAP云平臺ABAP環(huán)境之間進行代碼傳輸 介紹的辦法將這些代碼遷移從On-Premises系統(tǒng)遷移到云上之前,您期望做一次統(tǒng)一的“Cloud Readiness”檢查,一次性把所有上云的隱患都列出來。
傳統(tǒng)的ATC檢查(ABAP Test Cockpit, 一種ABAP代碼檢查工具)此時再次有了用武之地。按照這篇SAP社區(qū)博客提到的note去做,在一個ATC中央檢查系統(tǒng)上安裝包含了新的ATC檢查選項的實現(xiàn)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代碼遷移到云環(huán)境之前,在On-Premises環(huán)境里就提前找出所有阻止當(dāng)前被檢查的ABAP代碼上云的障礙。
當(dāng)然這種檢查反方向執(zhí)行也是可以的,即在SAP Cloud Platform ABAP環(huán)境里,觸發(fā)連接的ABAP On-Premises環(huán)境里的ATC檢查。由于是云環(huán)境訪問On-Premises環(huán)境,所以需要SAP Cloud Connector完成內(nèi)外網(wǎng)穿越:
從Fiori Launchpad里進入Custom Code Migration這個應(yīng)用,創(chuàng)建一個新的遷移項目:
遷移目標(biāo)當(dāng)然是SAP Cloud Platform ABAP環(huán)境,而源頭是ABAP On-Premises環(huán)境,所以需要維護一個指向該環(huán)境的Destination,這個Destination在SAP云平臺上創(chuàng)建。
此時我們就可以在Fiori UI上觸發(fā)ABAP On-Premises系統(tǒng)上的ATC檢查,并監(jiān)控其進度。
檢查完畢后,可以根據(jù)提示返回On-Premises環(huán)境進行代碼調(diào)整。
要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號"汪子熙":總結(jié)
以上是生活随笔為你收集整理的有哪些ABAP关键字和语法,到了ABAP云环境上就没办法用了?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 艰苦奋斗精神?比亚迪CEO王传福乘地铁参
- 下一篇: why debug log could