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