您好,登錄后才能下訂單哦!
如何在SAP云平臺ABAP編程環(huán)境上編寫第一段ABAP程序,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
Jerry最近會做一系列關(guān)于如何在SAP Cloud Platform上的ABAP編程環(huán)境上做開發(fā)的分享。
其實對于一個已經(jīng)能夠熟練使用ABAP Development Tools連接On-Premises ABAP Netweaver服務(wù)器做開發(fā)的傳統(tǒng)開發(fā)人員而言,遷移到從On-Premises遷移到SAP云平臺上的難度不大,只是需要注意一些開發(fā)理念上的轉(zhuǎn)變,這個轉(zhuǎn)變我們在后續(xù)具體做開發(fā)時會提到。
這種相對平緩的遷移和學習曲線,對于SAP全球龐大生態(tài)圈的企業(yè)和開發(fā)人員來說,無疑是一個好消息——這意味著SAP正在進行中的向云端數(shù)字化轉(zhuǎn)型的旅程里,這些企業(yè)和個人也能夠加入其中,并且他們以前在On-Premises時代積累的寶貴的技術(shù)和業(yè)務(wù)領(lǐng)域知識,能夠繼續(xù)在云時代發(fā)光發(fā)熱。
我曾經(jīng)在網(wǎng)絡(luò)上了解到,很多自學SAP ABAP的朋友們,面臨的第一道關(guān)卡就是在自己本地搭一臺Netweaver服務(wù)器出來。作為一個寫了12年代碼的老開發(fā)人員,Jerry也搭過各種本地開發(fā)環(huán)境,深知這里面的水有多深。我以前的老板,也給我們分享過他當年來SAP成都研究院面試的時候,自己本地也搭過Netweaver,并且短短幾天啃完幾百頁的Netweaver英文文檔的經(jīng)歷。
相信每一位在本地搭建Netweaver的ABAP學習者,當成功看到Hello World輸出的那一刻,成就感一定爆棚。
然而,當Jerry第一次在SAP Cloud Platform的ABAP編程環(huán)境上看到Hello World時,卻沒有多少成就感,因為直接按照ABAP Development Tool里的項目創(chuàng)建向?qū)б徊讲讲僮骶涂梢粤?,過程比較簡單易懂——這也體現(xiàn)了云時代到來后,對傳統(tǒng)應(yīng)用開發(fā)人員工作方式的影響:無需費神去關(guān)心底層硬件或者操作系統(tǒng)等資源,可以把精力集中于應(yīng)用程序邏輯的編寫上。換言之,SAP負責管理和維護底層HANA數(shù)據(jù)庫和中層的ABAP runtime,用戶只需管理頂層的ABAP應(yīng)用代碼。
使用ABAP Development Tools的項目創(chuàng)建向?qū)В?br/>New->ABAP Cloud Project:
Service Instance Connection,選擇SAP Cloud Platform CloudFoundry environment:
選擇Region,輸入用戶名密碼,前提是你得在這個region下有一個global Account。
下圖是我在SAP Cloud Platform的CloudFoundry環(huán)境里的Global Account:
這個Global Account所屬的space下面我創(chuàng)建了一個ABAP系統(tǒng)實例,ID為ME1:
這個ABAP運行實例具有16GB運行內(nèi)存,64GB的HANA內(nèi)存。
再回到ABAP Development Tools, 在項目創(chuàng)建向?qū)Ю锸褂肅ockpit里維護的上述屬性:
點Next,在ABAP Development Tools里會看到一個嵌入的登錄窗口。因為Jerry使用的是SAP社區(qū)Mentor的賬號,所以登錄窗口顯示的標題是:Welcome to Mentors!
在向?qū)Ю稂cFinish按鈕:
點擊之后,在ABAP Development Tools左側(cè)的項目列表里就能看見創(chuàng)建好的ABAP Cloud項目了,接下來在這個項目里編寫ABAP代碼進行開發(fā)的方式,和我們用ADT連接On-Premises系統(tǒng)基本一致。大家可以看到下圖創(chuàng)建好的高亮的ABAP Cloud項目(系統(tǒng)ID為ME1), 和其他On-Premises上的ABAP項目外觀上沒有區(qū)別。
這兩種ABAP項目的差異在于,ABAP Cloud項目里能夠使用的ABAP語言特性,只是傳統(tǒng)ABAP語言的一個子集,比如傳統(tǒng)ABAP語言里和Dynpro相關(guān)的關(guān)鍵字,即只能工作在SAPGUI中的那些關(guān)鍵字,因為在Cloud環(huán)境下不再適用了,所以在ABAP Development Tools的ABAP Cloud項目里禁止使用。
現(xiàn)在就可以進行第一行ABAP程序的編寫了。
和On-Premises環(huán)境下一樣,首先創(chuàng)建一個本地包ZJERRY(local package):
然后彈出提示要求創(chuàng)建Transport Request(傳輸請求):
Package和Transport Request都有了之后,就可以開始編碼了。
在On-Premises時代,我們想用ABAP打印Hello World,直接SE38創(chuàng)建一個報表(Program,如下圖所示),然后WRITE: 'Hello World'就可以了。
在SAP Cloud Platform上,新建列表的選項里已經(jīng)沒有了ABAP Program這一項。
所以我們只能選擇新建一個ABAP Class:
指定把這個類存儲到剛剛新建的Transport Request里:
接下來的操作,好比在Java class的static public void main(String[] args)方法里用System.out.println打印Hello World一樣。
這個新建的ABAP類實現(xiàn)IF_OO_ADT_CLASSRUN接口, 進行Hello World的打印:
激活代碼,可以看到和On-Premises一樣,這個類的各個組成部分需要一起激活。
至于為什么Jerry在IDE里書寫了一段純文本的ABAP源碼,但是激活時任務(wù)列表里產(chǎn)生了這么多對象,請參考Jerry的博客:General properties of ABAP Classes / Interfaces
https://blogs.sap.com/2014/03/14/general-properties-of-abap-classes-interfaces/
激活完畢后,Run As->ABAP Application(console):
Console里看到輸出:
觀察這個類執(zhí)行的交互日志,發(fā)現(xiàn)我們在ABAP Development Tools里觸發(fā)的執(zhí)行動作,IDE發(fā)送了一個SAP Cloud Platform上endpoint為/sap/bc/adt/oo/classrun的POST請求。
這段程序在SAP云平臺的ABAP實例上執(zhí)行,結(jié)果再以HTTP響應(yīng)的方式返回給IDE。
IDE發(fā)送請求給SAP Cloud Platform的具體Java代碼,可以按照Jerry的文章:那些年我用過的SAP IDE 里介紹的方法去反編譯后查看。
在SAP云平臺上的ABAP編程,和傳統(tǒng)On-Premises系統(tǒng)編程相比,一個顯著的差異就是,出于保持簡單,降低操作風險的準則,以及在提供操作的靈活性和云平臺安全性等方面的折衷考慮,開發(fā)人員在SAP Cloud Platform的ABAP編程環(huán)境無法像后者一樣能夠任意訪問Netweaver上的資源。
以傳統(tǒng)ABAP開發(fā)人員在Netweaver上進行二次開發(fā)最常用的ABAP OPEN SQL讀表的操作為例,這種直接訪問數(shù)據(jù)庫表的行為在SAP Cloud Platform上會引起語法錯誤。
即使像下圖這樣在ABAP代碼里直接引用Netweaver的數(shù)據(jù)庫表,在SAP云平臺上也是不允許的。
所有對底層資源的訪問都必須通過SAP定義的白名單里的API進行,即下圖Released Objects里包含的API。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。