日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用 SAP Cloud SDK 连接 OData 服务

發布時間:2023/12/19 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 SAP Cloud SDK 连接 OData 服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Connect to OData service on Neo using SAP Cloud SDK

Virtual Data Model

S/4HANA 系統中存儲的數據本質上結構復雜,因此很難手動查詢。因此,HANA 引入了虛擬數據模型 (VDM),旨在從這種復雜性中抽象出來,并以語義上有意義且易于使用的方式提供數據。從 S/4HANA 系統使用數據的首選方式是通過 OData 協議。雖然出于兼容性原因也支持 BAPI,但 OData 應該始終是您的首選。您可以在 SAP 的 API 業務中心找到 S/4HANA Cloud 系統的所有可用 OData 端點的列表。

SAP Cloud SDK 現在將 VDM for OData 引入 Java 世界,使 OData 端點的類型安全使用更加簡單! VDM 是使用來自 SAP API 業務中心的信息生成的。這意味著它與 API 業務中心提供的每個 API 兼容,因此也與每個 S/4HANA Cloud 系統兼容。

傳統的 OData 服務訪問方式:

讓我們來看看我們可以編寫的典型代碼來訪問任何使用 SAP Cloud Platform SDK 進行服務開發的 OData 服務。這里,我們從 S/4HANA 系統中檢索業務合作伙伴列表:

final ErpConfigContext configContext = new ErpConfigContext(); final List<MyBusinessPartnerType> businessPartners = ODataQueryBuilder.withEntity("/sap/opu/odata/sap/API_BUSINESS_PARTNER","A_BusinessPartner").select("BusinessPartner","LastName","FirstName","IsMale","IsFemale","CreationDate").build().execute(configContext).asList(MyBusinessPartnerType.class);

ODataQueryBuilder 代表了一種在應用程序中使用 OData 服務的簡單通用方法,非常適合支持任意服務。 從手動構建到 OData 服務的 HTTP 請求并在代碼中處理結果,這是向前邁出的一大步,并且由 SAP Cloud SDK 在內部使用。 反過來,ODataQueryBuilder 還使用 SAP Cloud SDK 的概念來簡化與系統的通信,這些系統由 ErpConfigContext 引用。

然而,在使用普通的 ODataQueryBuilder 方法調用 OData 服務時,您可能會陷入一些陷阱:

  • 對于 .withEntity("/sap/opu/odata/sap/API_BUSINESS_PARTNER", “A_BusinessPartner”) 您已經需要知道三件事:OData 端點服務路徑(/sap/opu/odata/sap)、端點名稱(API_BUSINESS_PARTNER ) 和端點元數據中定義的實體集合 (A_BusinessPartner) 的名稱。

  • 然后,當您想要使用 select() 函數從 BusinessPartner 實體類型中選擇特定屬性時,您需要知道這些字段是如何命名的。但由于它們在此代碼中僅表示為字符串,因此您需要查看元數據以了解它們的調用方式。這同樣適用于 order() 和 filter() 等函數。當然,使用字符串作為參數很容易出現拼寫錯誤,您的 IDE 很可能無法為您捕獲這些錯誤。

  • 最后,您需要定義一個類,例如 MyBusinessPartnerType,其中包含表示結果的屬性及其類型的特定注釋。為此,您再次需要了解有關 OData 服務的大量詳細信息。

Virtual Data Model: The new way to OData

現在我們已經解釋了當前方法可能存在的缺陷,讓我們來看看 SAP Cloud SDK 的 OData VDM 如何簡化相同的任務,因為 SDK 能夠整合更多關于被調用系統的知識。

final List<BusinessPartner> businessPartners =new DefaultBusinessPartnerService().getAllBusinessPartner().select(BusinessPartner.BUSINESS_PARTNER,BusinessPartner.LAST_NAME,BusinessPartner.FIRST_NAME,BusinessPartner.IS_MALE,BusinessPartner.IS_FEMALE,BusinessPartner.CREATION_DATE).execute();

使用 OData VDM,我們現在可以訪問特定 OData 服務的對象表示,在本例中為 DefaultBusinessPartnerService(BusinessPartnerService 接口的默認實現)。所以現在不再需要知道端點的服務路徑、服務名稱或實體集合名稱。我們可以調用該服務的 getAllBusinessPartner() 函數來從系統中檢索所有業務合作伙伴的列表。

現在看一下 select() 函數。我們可以簡單地使用 BusinessPartner 類提供的靜態字段,而不是傳遞表示實體字段的字符串。因此,我們不僅消除了拼寫錯誤的風險,而且還使其類型安全!同樣,這同樣適用于 filter() 和 orderBy()。例如,過濾男性業務伙伴變得像 .filter(BusinessPartner.IS_MALE.eq(true)) 一樣簡單——注意類型安全的比較。

這種方法的另一個好處是可發現性。由于所有內容都表示為代碼,因此您可以簡單地使用 IDE 的自動完成功能來查看服務支持哪些功能以及實體包含哪些字段:首先查看包 com.sap.cloud.sdk 中提供的不同服務.s4hana.datamodel.odata.services,實例化你需要的服務的默認實現(類名以Default為前綴),然后查找服務類中代表不同可用操作的方法。基于此,您可以使用返回類型的字段來選擇要選擇的字段和要應用的過濾器。

每個服務都由一個 Java 接口描述,例如 BusinessPartnerService。 SDK 為每個服務接口提供了一個默認的、完整的實現。相應的實現在名稱為前綴為 Default 的接口名稱的類中可用,例如 DefaultBusinessPartnerService。您可以簡單地實例化該類,也可以將依賴注入與相應的 Java 框架結合使用。接口的好處是更好的測試和可擴展性支持。

總結

以上是生活随笔為你收集整理的使用 SAP Cloud SDK 连接 OData 服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。