這是 Jerry 2021 年的第 29 篇文章,也是汪子熙公眾號總共第 300 篇原創文章。
之前 Jerry 的兩篇文章,分別介紹瞭如何在本地使用 Visual Studio Code 建立一個 SAP Fiori Elements 應用,以及使用 Fiori Elements Controller Extension 理念,對該 Fiori Elements 應用進行二次開發的具體步驟。
- 在沒有任何前端開發經驗的基礎上, 建立第一個 SAP Fiori Elements 應用
- 答網友提問:使用 SAP Fiori Tools 建立的 Fiori Elements 應用,如何進行二次開發?
本地開發完成之後,新的問題順理成章就來了:如何將該本地應用,部署到遠端的 ABAP 伺服器上?
如果是在以前的 SAP Cloud Platform (現在改名叫 SAP Business Technology Platform) Neo 環境提供的 Full Stack WebIDE 裡開發 SAP Fiori Elements 應用,那麼直接使用 SAP WebIDE 裡的右鍵選單,選擇 "Deploy to SAPUI5 ABAP Repository" 即可完成部署。
而透過 Visual Studio Code 進行 SAP Fiori Elements 應用的本地開發,右鍵選單裡並沒有部署相關的選項:
不過,我們仔細觀察專案工程資料夾裡的 package.json,還是發現了一些關於部署的線索。在該檔案的 scripts 標籤裡,包含 deploy 和 deploy-config 兩個指令。
先執行 npm run deploy 命令,這條命令的內容是 fiori verify,即進行部署前的校驗工作。校驗的結果,在本地檢測不到部署配置資訊,這樣 Visual Studio Code 裡安裝的 SAP Fiori tools, 根本不知道開發人員期望將該應用,部署到哪個 ABAP 伺服器上。
因此按照上圖橙色的提示資訊,執行下列命令列,生成部署配置資訊。
npm run deploy-config
如果遇到下列錯誤訊息:
Yeoman is not installed or available in your executable path. Please check your configuration or use npm/yarn to install it globally.
說明 Yeoman 沒有安裝,使用 npm install --global yo 進行安裝即可。
之後重新執行命令列:
npm run deploy-config
首先選擇部署目標型別為 ABAP 伺服器。
接下來,需要指定待部署到的 ABAP 伺服器的 url,client ID,部署到伺服器上生成的 BSP 應用名稱,存放該應用的 ABAP 開發包名稱等資訊。
我們在這個命令列嚮導裡輸入的內容,會維護到一個名為 ui5-deploy.yaml 的配置檔案裡。因此,此處我們可以一路回車,待結束嚮導後,在 Visual Studio Code 裡繼續編輯 ui5-deploy.yaml 即可。
npm run deploy-config 命令執行完畢後,生成了對應包含部署明細資訊的 ui5-deploy.yaml 檔案,同時 package.json 檔案裡,deploy 命令的內容,也從之前的 fiori verify,自動替換成了如下內容:
下圖是我修改過的 ui5-deploy.yaml 檔案。整個檔案由 SAP Fiori tools 自動生成,我們只需要修改圖中 1~3 區域的內容。
- 部署 ABAP 伺服器的主機名和埠號,以及 client ID. 我部署的 ABAP 伺服器為 ER9/001,採用 basic Authentication 方式認證。
- credentials 區域,維護我登入 ER9/001 的使用者名稱和密碼。因為該 yaml 檔案需要上傳到 Github 上進行版本管理,故不應直接維護使用者名稱和密碼等敏感資訊,而是將這些資訊維護到一個叫做 .env 的檔案裡,然後在 ui5-deploy.yaml 裡引用該 .env 檔案。
- 部署到 ABAP 伺服器上生成 BSP 應用的名稱,以及用來儲存該 BSP 應用的 ABAP 開發包名稱。
一切就緒之後,執行命令列:
npm run deploy
我第一次試圖部署時,遇到了下圖的錯誤訊息:
Invalid URL: /sap/opu/odata/UI5/ABAP_REPOSITORY_SRV
把該錯誤訊息貼上到 Google 裡,很快找到了錯誤原因。
SAP 開發了一個標準的 OData 服務 /UI5/ABAP_REPOSITORY_SRV, 能夠將本地 SAP UI5 應用打成的 zip 壓縮包上傳到 ABAP 伺服器,並生成對應的 BSP 應用。
關於該 OData 服務的更多說明,請參閱 SAP 幫助文件:
https://sapui5.hana.ondemand....
SAP note 2999557 提供了啟用該 OData 服務的步驟:
執行事務碼 /IWFND/MAINT_SERVICE, 將 /UI5/ABAP_REPOSITORY_SRV 新增到服務列表中。
注意,該 OData 服務僅在 SAP_UI 753 及其以上的版本才可用。
對於 SAP_UI 753 以下的版本,可以嘗試使用報表 /UI5/UI5_REPOSITORY_LOAD 手動上傳。
npm run deploy 命令執行成功後,命令列會列印出部署到 ABAP 伺服器上的 SAP Fiori Elements 應用可供訪問的 url:
貼上到瀏覽器後即可訪問這個執行在 ABAP 伺服器上的 SAP Fiori Elements 應用了:
在 ABAP 伺服器 ER9/001 上生成的 BSP 應用如下圖所示:
至於如何將該 Fiori Elements 應用配置成 ABAP 伺服器上 Fiori Launchpad 的一個 tile,這是另外一個話題了。我們後續繼續分享。
感謝閱讀。
更多閱讀
- SAP Fiori應用索引大全
- Fiori Fundamentals和SAP UI5 Web Components
- 為什麼SAP GUI裡的傳統事務碼能透過Fiori Launchpad啟動並執行在瀏覽器裡
- 一步步把SAP GUI的事務碼配置到SAP Fiori Launchpad裡
- SAP UI5應用開發人員瞭解UI5框架程式碼的意義
- SAP UI5 module懶載入機制
- SAP UI5 控制元件渲染機制
- HTML原生事件 VS SAP UI5 Semantic事件
- SAP UI5控制元件後設資料的後設資料實現
- SAP UI5控制元件的例項資料修改和讀取邏輯
- SAP UI5控制元件資料繫結的實現原理
- SAP UI5控制元件資料繫結的三種模式:One Way, Two Way和OneTime實現原理比較
- SAP UI5 OData謠言粉碎機:極短時間內傳送兩個Odata request,前一個會自動被cancel掉嗎
- SAP UI5和Angular的函式防抖(Debounce)和函式節流(Throttle)實現原理介紹
- SAP UI渲染模式:客戶端渲染 VS 伺服器端渲染
- SAP UI的載入動畫效果和幽靈設計(Ghost Design)
- 介紹一個能開發簡單SAP UI5應用的線上IDE:StackBlitz
- SAP CRM Fiori 應用和 SAP Commerce Cloud (電商雲) UI 如何透過調整CSS來改變UI顯示風格
- SAP 產品一脈相承的 UI 增強思路,在 SAP Commerce Cloud(電商雲) UI 增強實現中的體現
- 如何分辨 SAP Fiori Launchpad 裡的真假 Fiori 應用
- 在沒有任何前端開發經驗的基礎上, 建立第一個 SAP Fiori Elements 應用
- SAP Fiori 應用裡圖示(Icon)的渲染原理和使用技巧
- 答網友提問:使用 SAP Fiori Tools 建立的 Fiori Elements 應用,如何進行二次開發?
更多Jerry的原創文章,盡在:"汪子熙":