1. 程式人生 > 其它 >如何在 SAP BTP 上通過 CDS view 快速建立 Fiori Elements 應用

如何在 SAP BTP 上通過 CDS view 快速建立 Fiori Elements 應用

本文基於 SAP Business Technology Platform 的 ABAP 程式設計環境進行的開發。

使用 ABAP Development Tool 登入 SAP BTP ABAP 程式設計環境,新建一個 package,命名為 Z_JERRY_CDS.

右鍵選中該 package,建立一個新的 Consumption view. 該檢視是一個消費檢視,它基於業務物件 (BO) 檢視 /DMO/I_TRAVEL_U,提供了獨立於消費層的給定資料模型。

它包含在其上執行的應用程式所需的所有核心資訊。

消費檢視是定義在 BO 檢視之上的 CDS 檢視,用於:

  • 公開適合給定消費用例的欄位
  • 使用註釋(例如用於 UI、搜尋和 OData)用元資料豐富資料模型。

這個消費檢視建立好之後,原始碼如下:

使用 ABAP Development Tool Content Assistant 快捷鍵,可以迅速將標準檢視 /DMO/I_Ttravel_U 的所有欄位,通過選單 Insert all elements(template),帶入到當前的消費視圖裡:


選擇 Open with Data Preview,即可檢視該消費檢視的資料:

資料顯示如下:

下一步,將 CDS 檢視公開為業務服務。 這將允許我們在 Fiori Elements 預覽中預覽 ABAP Development Tool 裡所作的更改。

業務服務由服務定義和服務繫結組成。

可以使用服務定義來定義將哪些資料(以所需的粒度)公開為業務服務。

然後使用服務繫結將服務定義繫結到客戶端-伺服器通訊協議,例如 OData。 這允許我們為同一定義提供多個繫結,例如 將服務暴露給 UI 和 A2X 提供者。

新建一個 Service Definition:

維護名稱和描述資訊:

在 Service Definitions 裡,將之前建立的消費檢視,Z_C_TRAVEL_DATA_JERRY, 暴露成服務:

基於建立好的 Service Definition,再建立一個 Service Binding:

啟用這個 Service Binding 之後,點選 Entity Set and Association 區域的 Preview 按鈕,就能檢視自動生成的 Fiori Elements 應用了:

開啟的 Fiori Elements 應用,預設沒有配置任何列表欄。

點選上圖工具欄的齒輪圖示,選擇檢視上所有欄位作為列表列專案:

現在 Fiori Elements 應用就能正常顯示資料了:

為了避免使用者每次預覽 Fiori Elements 應用之前,都要手動去點選齒輪圖示選擇列表列專案,我們可以在消費視圖裡新增如下註解:

@UI           : {
      lineItem      : [{position: 10, importance: #HIGH}],
      selectionField: [{position: 10 }]
  }

如上圖所示,TravelID 和 AgencyID 兩個檢視欄位,添加了註解 @UI.lineItem, 這使得它們被設定為預設必須顯示的表格列專案。

點選齒輪之前,這兩個欄位前的 checkbox 總是預設被勾上。

我們可以將 CDS view 視圖裡的註解,單獨維護到一個開發物件裡。

首先在 CDS view 視圖裡,加上下面這行註解:

@Metadata.allowExtensions: true

右鍵選單選擇 Source Code -> Extract Metadata Extension:

這會建立一個新的 ABAP 開發物件,專門用於儲存 CDS view 的註解元資料:

選擇 Next,自動解析出原 CDS view 裡目前為止已經添加了的註解元資料:

Metadata.layer 的值,選擇成預設的 #CORE:

下面再介紹如何通過新增 CDS view 註解,讓自動生成的 Fiori Elements 應用,具有搜尋功能。

新增如下的註解:

@Search.searchable: true

然後在希望支援搜尋的檢視欄位,memo,即描述資訊欄位上,新增下面的註解:

    @Search.defaultSearchElement: true
    @Search.fuzzinessThreshold: 0.90

啟用 CDS view,重新整理 Fiori Elements 應用,即可看到表格控制元件上方,多了一個搜尋輸入框。能夠正常工作。

最後介紹如何通過註解新增 Selection Field 即過濾欄位。

例如,我們希望根據 Travel ID 對錶格進行過濾,則給 TravelID 欄位新增如下的註解:

selectionField: [{position: 10 }]

最後的介面效果,能夠通過 Travel ID 進行過濾了:

更多Jerry的原創文章,盡在:"汪子熙":