在SAP雲平臺ABAP程式設計環境上編寫第一段ABAP程式
距2017年秋季的SAP TechEd大會上一位大佬Björn Goerke,SAP’s Chief Technology Officer宣佈了SAP Cloud Platform即將支援ABAP至今,已經過去了兩年的時間。
目前國內的技術媒體平臺上,已經有了部分概要性介紹SAP Cloud Platform ABAP程式設計環境的中文文章,但涉及到具體操作細節的文章比較少。
Jerry最近會做一系列關於如何在SAP Cloud Platform上的ABAP程式設計環境上做開發的分享。
其實對於一個已經能夠熟練使用ABAP Development Tools連線On-Premises ABAP Netweaver伺服器做開發的傳統開發人員而言,遷移到從On-Premises遷移到SAP雲平臺上的難度不大,只是需要注意一些開發理念上的轉變,這個轉變我們在後續具體做開發時會提到。
這種相對平緩的遷移和學習曲線,對於SAP全球龐大生態圈的企業和開發人員來說,無疑是一個好訊息——這意味著SAP正在進行中的向雲端數字化轉型的旅程裡,這些企業和個人也能夠加入其中,並且他們以前在On-Premises時代積累的寶貴的技術和業務領域知識,能夠繼續在雲時代發光發熱。
我曾經在網路上了解到,很多自學SAP ABAP的朋友們,面臨的第一道關卡就是在自己本地搭一臺Netweaver伺服器出來。作為一個寫了12年程式碼的老開發人員,Jerry也搭過各種本地開發環境,深知這裡面的水有多深。我以前的老闆,也給我們分享過他當年來SAP成都研究院面試的時候,自己本地也搭過Netweaver,並且短短几天啃完幾百頁的Netweaver英文文件的經歷。
相信每一位在本地搭建Netweaver的ABAP學習者,當成功看到Hello World輸出的那一刻,成就感一定爆棚。
然而,當Jerry第一次在SAP Cloud Platform的ABAP程式設計環境上看到Hello World時,卻沒有多少成就感,因為直接按照ABAP Development Tool裡的專案建立嚮導一步步操作就可以了,過程比較簡單易懂——這也體現了雲時代到來後,對傳統應用開發人員工作方式的影響:無需費神去關心底層硬體或者作業系統等資源,可以把精力集中於應用程式邏輯的編寫上。換言之,SAP負責管理和維護底層HANA資料庫和中層的ABAP runtime,使用者只需管理頂層的ABAP應用程式碼。
使用ABAP Development Tools的專案建立嚮導: New->ABAP Cloud Project:
Service Instance Connection,選擇SAP Cloud Platform CloudFoundry environment:
選擇Region,輸入使用者名稱密碼,前提是你得在這個region下有一個global Account。
下圖是我在SAP Cloud Platform的CloudFoundry環境裡的Global Account:
這個Global Account所屬的space下面我建立了一個ABAP系統例項,ID為ME1:
這個ABAP執行例項具有16GB執行記憶體,64GB的HANA記憶體。
再回到ABAP Development Tools, 在專案建立嚮導裡使用Cockpit裡維護的上述屬性:
點Next,在ABAP Development Tools裡會看到一個嵌入的登入視窗。因為Jerry使用的是SAP社群Mentor的賬號,所以登入視窗顯示的標題是:Welcome to Mentors!
在嚮導裡點Finish按鈕:
點選之後,在ABAP Development Tools左側的專案列表裡就能看見建立好的ABAP Cloud專案了,接下來在這個專案裡編寫ABAP程式碼進行開發的方式,和我們用ADT連線On-Premises系統基本一致。大家可以看到下圖建立好的高亮的ABAP Cloud專案(系統ID為ME1), 和其他On-Premises上的ABAP專案外觀上沒有區別。
這兩種ABAP專案的差異在於,ABAP Cloud專案裡能夠使用的ABAP語言特性,只是傳統ABAP語言的一個子集,比如傳統ABAP語言裡和Dynpro相關的關鍵字,即只能工作在SAPGUI中的那些關鍵字,因為在Cloud環境下不再適用了,所以在ABAP Development Tools的ABAP Cloud專案裡禁止使用。
現在就可以進行第一行ABAP程式的編寫了。
和On-Premises環境下一樣,首先建立一個本地包ZJERRY(local package):
然後彈出提示要求建立Transport Request(傳輸請求):
Package和Transport Request都有了之後,就可以開始編碼了。 在On-Premises時代,我們想用ABAP列印Hello World,直接SE38建立一個報表(Program,如下圖所示),然後WRITE: 'Hello World'就可以了。
在SAP Cloud Platform上,新建列表的選項裡已經沒有了ABAP Program這一項。
所以我們只能選擇新建一個ABAP Class:
指定把這個類儲存到剛剛新建的Transport Request裡:
接下來的操作,好比在Java class的static public void main(String[] args)方法裡用System.out.println列印Hello World一樣。
這個新建的ABAP類實現IF_OO_ADT_CLASSRUN介面, 進行Hello World的列印:
啟用程式碼,可以看到和On-Premises一樣,這個類的各個組成部分需要一起啟用。
至於為什麼Jerry在IDE裡書寫了一段純文字的ABAP原始碼,但是啟用時任務列表裡產生了這麼多物件,請參考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裡看到輸出:
觀察這個類執行的互動日誌,發現我們在ABAP Development Tools裡觸發的執行動作,IDE傳送了一個SAP Cloud Platform上endpoint為/sap/bc/adt/oo/classrun的POST請求。
這段程式在SAP雲平臺的ABAP例項上執行,結果再以HTTP響應的方式返回給IDE。
IDE傳送請求給SAP Cloud Platform的具體Java程式碼,可以按照Jerry的文章:那些年我用過的SAP IDE 裡介紹的方法去反編譯後檢視。
在SAP雲平臺上的ABAP程式設計,和傳統On-Premises系統程式設計相比,一個顯著的差異就是,出於保持簡單,降低操作風險的準則,以及在提供操作的靈活性和雲平臺安全性等方面的折衷考慮,開發人員在SAP Cloud Platform的ABAP程式設計環境無法像後者一樣能夠任意訪問Netweaver上的資源。
以傳統ABAP開發人員在Netweaver上進行二次開發最常用的ABAP OPEN SQL讀表的操作為例,這種直接訪問資料庫表的行為在SAP Cloud Platform上會引起語法錯誤。
即使像下圖這樣在ABAP程式碼裡直接引用Netweaver的資料庫表,在SAP雲平臺上也是不允許的。
所有對底層資源的訪問都必須通過SAP定義的白名單裡的API進行,即下圖Released Objects裡包含的API。
後續Jerry將帶來SAP雲平臺ABAP程式設計環境更多開發內容的分析,敬請期待。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
相關推薦
在SAP雲平臺ABAP程式設計環境上編寫第一段ABAP程式
距2017年秋季的SAP TechEd大會上一位大佬Björn Goerke,SAP’s Chief Technology Off
在SAP雲平臺的CloudFoundry環境下消費ABAP On-Premise OData服務
abap sap sap雲平臺 netweaver cloud-foundry 我的前一篇文章?使用Java+SAP雲平臺+SAP Cloud Connector調用ABAP On-Premise系統裏的函數介紹了在SAP雲平臺的Neo環境下如何通過SAP Cloud Connector消
如何在SAP雲平臺ABAP程式設計環境裡把CDS view暴露成OData服務
Jerry 2016年在學習SAP CDS view時,曾經寫過一個CDS view的自學系列,其中有一篇提到了一個很方便的註解:
如何將SAP Multi Target應用部署到SAP雲平臺的Cloud Foundry環境去
SAP SCP SAP雲平臺 Java MTA SHINA是SAP HANA Interactive Education的縮寫,是一個demo應用,用於演示如何開發SAP HANA原生應用。 這個應用包含了sample數據以及HANA數據庫表,view,OData服務和UI,符合SAP H
如何在SAP雲平臺的Cloud Foundry環境下添加新的Service(服務)
SAP SCP SAP雲平臺 微服務 Cloud Foundry 我想在SAP雲平臺的Cloud Foundry環境下使用MongoDB的服務,但是我在Service Marketplace上找不到這個服務。 cf marketplace返回的結果也沒有。 解決方案 退回到Global
如何在SAP雲平臺上使用MongoDB服務
com ODB package BE nap http reat www. dac 首先按照我這篇文章在SAP雲平臺上給您的賬號分配MongboDB服務:如何在SAP雲平臺的Cloud Foundry環境下添加新的Service 然後從這個鏈接下載SAP提供的例子程序。
使用SAP雲平臺的destination消費Internet上的OData service
orien list collect fiori cimage load 實現 其他 data 通過SAP雲平臺上的destination我們可以消費Internet上的OData service或者其他通過HTTP方式暴露出來的服務。 創建一個新的destination
使用Java+SAP雲平臺+SAP Cloud Connector調用ABAP On-Premise系統裏的函數
ise customer 很多 cor pre 關系 each hab web應用 最近Jerry接到一個原型開發的任務,需要在微信裏調用ABAP On Premise系統(SAP CRM On-Premise)裏的某些函數。具體場景和我之前的公眾號文章 Cloud for
ABAP Netweaver, Hybris Commerce和SAP 雲平臺的登錄認證
abap netweaver hybris logon cloud-foundry ABAP Netweaver 在事務碼SICF裏選擇一個服務,在明細頁面對Procedure字段點擊F1,查看Logon Procedure的幫助文檔。通過這個鏈接打開對應的幫助文檔,可以看到下列七種登錄手
使用Java+SAP雲平臺+SAP Cloud Connector調用ABAP On-Premise
sap sap雲平臺 cloudFoundry abap cloudConnector 最近Jerry接到一個原型開發的任務,需要在微信裏調用ABAP On Premise系統(SAP CRM On-Premise)裏的某些函數。具體場景和我之前的公眾號文章 Cloud for Custo
如何在Java代碼中使用SAP雲平臺CloudFoundry環境的環境變量
0.10 CI 4tb 對象 圖片 pps abap AC 例子 本文使用的例子源代碼在我的github上。 在我的公眾號文章在SAP雲平臺的CloudFoundry環境下消費ABAP On-Premise OData服務介紹了如何通過Cloud Connector連接AB
將Java應用部署到SAP雲平臺neo環境的兩種方式
服務器 eclips ges F5 原創 技術文章 cli c2c 平臺 方法1 - 使用Eclipse Eclipse裏新建一個服務器: 服務器類型選擇SAP Cloud Platform: 點Finish,成功創建了一個Server: Eclipse裏選擇要部署
SAP雲平臺裏Global Account和Sub Account的關系
技術 lob mage 賬號 RR http 二維 AC 創建 在Cloud Foundry環境裏,一個Global Account或者Trial Account能夠創建多個SubAccount,如圖: 創建好的新的subaccount: 一旦subaccount創
最簡單的SAP雲平臺開發教程 - 如何開發UI5應用並運行在SAP雲平臺上
catalog ges 手機 -o sap gem 原創 services http 選擇Services Catalog,根據關鍵字搜索到WebIDE服務,點擊超鏈接打開WebIDE: 進入workspace,選擇Git->Clone Repository: 從
使用Eclipse開發Java應用並部署到SAP雲平臺SCP上去
runt 安裝 配置 str https upload 路徑 本地 主機 1. 首先根據這個鏈接配置好Eclipse。 確保SAP Cloud Platform Tools for Java正確安裝。 確保neo SDK的路徑配置正確: 我使用的是下圖這個SDK:neo
JDBC + SAP雲平臺 = 運行在雲端的數據庫應用
JDBC SAP SAP雲平臺 SCP Java 在前一篇文章JPA + EclipseLink + SAP雲平臺 = 運行在雲端的數據庫應用我介紹了如何通過JPA和EclipseLink操作部署在SAP雲平臺上的HANA數據庫實例。 在這篇文章裏,我們使用JDBC代替JPA和Eclips
SAP雲平臺以微服務的方式提供了Document的CRUD(增刪改查)操作。該微服務基於標準的CMI
SAP. SCP SAP雲平臺 DocumentService 微服務 SAP雲平臺以微服務的方式提供了Document的CRUD(增刪改查)操作。該微服務基於標準的CMIS協議(Content Management Interoperability Service)。 同標準的CMI
SAP雲平臺的Document Service
src image 技術文章 sam https store 獲得 標準 rep SAP雲平臺以微服務的方式提供了Document的CRUD(增刪改查)操作。該微服務基於標準的CMIS協議(Content Management Interoperability Servic
JPA + EclipseLink + SAP雲平臺 = 運行在雲端的數據庫應用
得到 cli sel world ID link amp 自帶 IE JPA(Java Persistence API)的實現Provider有Hibernate,OpenJPA和EclipseLink等等。 本文介紹如何通過JPA + Eclipse連接SAP雲平臺上的H
使用SAP雲平臺 + JNDI訪問Internet Service
rev HA har puts xtend consumer equals gin odin 以Internet Service http://maps.googleapis.com/maps/api/distancematrix/xml?origins=Walldorf