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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用 SAP Cloud SDK 连接 OData 服务

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

Connect to OData service on Neo using SAP Cloud SDK

Virtual Data Model

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

SAP Cloud SDK 現(xiàn)在將 VDM for OData 引入 Java 世界,使 OData 端點(diǎn)的類型安全使用更加簡(jiǎn)單! VDM 是使用來自 SAP API 業(yè)務(wù)中心的信息生成的。這意味著它與 API 業(yè)務(wù)中心提供的每個(gè) API 兼容,因此也與每個(gè) S/4HANA Cloud 系統(tǒng)兼容。

傳統(tǒng)的 OData 服務(wù)訪問方式:

讓我們來看看我們可以編寫的典型代碼來訪問任何使用 SAP Cloud Platform SDK 進(jìn)行服務(wù)開發(fā)的 OData 服務(wù)。這里,我們從 S/4HANA 系統(tǒng)中檢索業(yè)務(wù)合作伙伴列表:

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 代表了一種在應(yīng)用程序中使用 OData 服務(wù)的簡(jiǎn)單通用方法,非常適合支持任意服務(wù)。 從手動(dòng)構(gòu)建到 OData 服務(wù)的 HTTP 請(qǐng)求并在代碼中處理結(jié)果,這是向前邁出的一大步,并且由 SAP Cloud SDK 在內(nèi)部使用。 反過來,ODataQueryBuilder 還使用 SAP Cloud SDK 的概念來簡(jiǎn)化與系統(tǒng)的通信,這些系統(tǒng)由 ErpConfigContext 引用。

然而,在使用普通的 ODataQueryBuilder 方法調(diào)用 OData 服務(wù)時(shí),您可能會(huì)陷入一些陷阱:

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

  • 然后,當(dāng)您想要使用 select() 函數(shù)從 BusinessPartner 實(shí)體類型中選擇特定屬性時(shí),您需要知道這些字段是如何命名的。但由于它們?cè)诖舜a中僅表示為字符串,因此您需要查看元數(shù)據(jù)以了解它們的調(diào)用方式。這同樣適用于 order() 和 filter() 等函數(shù)。當(dāng)然,使用字符串作為參數(shù)很容易出現(xiàn)拼寫錯(cuò)誤,您的 IDE 很可能無法為您捕獲這些錯(cuò)誤。

  • 最后,您需要定義一個(gè)類,例如 MyBusinessPartnerType,其中包含表示結(jié)果的屬性及其類型的特定注釋。為此,您再次需要了解有關(guān) OData 服務(wù)的大量詳細(xì)信息。

Virtual Data Model: The new way to OData

現(xiàn)在我們已經(jīng)解釋了當(dāng)前方法可能存在的缺陷,讓我們來看看 SAP Cloud SDK 的 OData VDM 如何簡(jiǎn)化相同的任務(wù),因?yàn)?SDK 能夠整合更多關(guān)于被調(diào)用系統(tǒng)的知識(shí)。

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,我們現(xiàn)在可以訪問特定 OData 服務(wù)的對(duì)象表示,在本例中為 DefaultBusinessPartnerService(BusinessPartnerService 接口的默認(rèn)實(shí)現(xiàn))。所以現(xiàn)在不再需要知道端點(diǎn)的服務(wù)路徑、服務(wù)名稱或?qū)嶓w集合名稱。我們可以調(diào)用該服務(wù)的 getAllBusinessPartner() 函數(shù)來從系統(tǒng)中檢索所有業(yè)務(wù)合作伙伴的列表。

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

這種方法的另一個(gè)好處是可發(fā)現(xiàn)性。由于所有內(nèi)容都表示為代碼,因此您可以簡(jiǎn)單地使用 IDE 的自動(dòng)完成功能來查看服務(wù)支持哪些功能以及實(shí)體包含哪些字段:首先查看包 com.sap.cloud.sdk 中提供的不同服務(wù).s4hana.datamodel.odata.services,實(shí)例化你需要的服務(wù)的默認(rèn)實(shí)現(xiàn)(類名以Default為前綴),然后查找服務(wù)類中代表不同可用操作的方法?;诖?#xff0c;您可以使用返回類型的字段來選擇要選擇的字段和要應(yīng)用的過濾器。

每個(gè)服務(wù)都由一個(gè) Java 接口描述,例如 BusinessPartnerService。 SDK 為每個(gè)服務(wù)接口提供了一個(gè)默認(rèn)的、完整的實(shí)現(xiàn)。相應(yīng)的實(shí)現(xiàn)在名稱為前綴為 Default 的接口名稱的類中可用,例如 DefaultBusinessPartnerService。您可以簡(jiǎn)單地實(shí)例化該類,也可以將依賴注入與相應(yīng)的 Java 框架結(jié)合使用。接口的好處是更好的測(cè)試和可擴(kuò)展性支持。

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。