云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

专属服务器_腾讯云计算设备_优惠券

小七 141 0

本博客是OData V4基于代码的开发系列博客的一部分

OData V4基于代码的实现–概述

OData V4基于代码的实现I(基本接口,读访问)

OData V4基于代码的实现I(基本接口,创建和更新)

为了访问下面的源代码,您必须在新的ES5演示系统中注册

在这里注册ES5演示帐户

有关ES5演示系统的更多详细信息,您可以在我下面的博客中找到

新的SAP网关演示系统可用

如果您有ES5用户,您可以通过以下链接:

数据提供程序类–zcl\ U e2e001\ U odata\ U v4\ U so\ U数据

模型提供程序类–zcl\ U e2e001\ U odata\ U v4\ U so\ U模型

异常类–zcx\ U e2e001\ U odata\ U v4\ U so

接口–zif\ U e2e001\ U odata\ U v4\ U so\ U类型

消费视图–销售订单–ze2e001\ U c\ U销售订单

消费视图–销售订单项目–ze2e001\u c\u salesorderitem

界面视图–ze2e001\u i\u salesorderitem

在关于OData V4基于代码的实现的第一个博客中,我想展示如何构建一个简单的服务,该服务显示销售订单标题数据及其项。

服务实现将利用两个CD消费视图ze2e001\u c\u SalesOrder和ZE2E001\u C\u SalesOrderItem分别从CDS接口视图SEPM\u I\u SalesOrder\u E和SEPM\u I\u SalesOrderItem\u E读取数据。

请注意:

通过利用CDS视图,您将能够在新的ABAP编程模型中在很大程度上重用数据建模部分,一旦该模型支持OData V4,即使您当前正在使用AS ABAP750此外,您的服务将通过使用本博客中显示的代码示例来支持大多数开箱即用的查询选项。

除了OData V4服务必需的数据提供程序类和模型提供程序类之外,我们还将创建三个额外的存储库对象,以方便使用(一个接口)和作为最佳实践(一个错误和消息类)。

该接口用于定义数据提供程序类和模型提供程序类中使用的类型和常量。例如上面提到的两个CD消费视图的类型或我们的实体类型、实体集、导航属性等的ABAP内部和外部名称

为了方便您在新的演示系统ES5中使用,我们实施了此示例服务。系统的详细信息可以在我的下面找到博客。新的SAP网关演示系统可用。

该服务的$元数据文档可通过以下URL调用

https://sapes5.sapdevcenter.com/sap/opu/odata4/sap/ze2e001/default/sap/ze2e001\u salesorder/0001/$元数据?sap statistics=true

使用基本接口方法的实现,我们的服务已经支持以下请求:

读取单个销售订单

https://sapes5.sapdevcenter.com/sap/opu/odata4/sap/ze2e001/default/sap/ze2e001\u salesorder/0001/salesorder(‘500000000’)?sap ds debug=true

获取前三个销售订单

https://sapes5.sapdevcenter.com/sap/opu/odata4/sap/ze2e001/default/sap/ze2e001\u salesorder/0001/salesorder?$top=3&sap ds debug=true

从销售订单头导航到项目,服务器云,并筛选grossamount大于1100$的项目的结果集。

https://sapes5.sapdevcenter.com/sap/opu/odata4/sap/ze2e001/default/sap/ze2e001\u salesorder/0001/salesorder('500000000')/\u项目?$filter=Grossamountintransaccurrency ge 1100和Transactioncurrency eq'USD'&sap ds debug=true

读取销售订单标题并通过对展开的项目进行筛选来展开项目。

https://sapes5.sapdevcenter.com/sap/opu/odata4/sap/ze2e001/default/sap/ze2e001\u salesorder/0001/salesorder(‘500000000’)?$expand=\u Item($filter=Grossamountintransaccurrency ge 1100 and Transactioncurrency eq'USD')&sap ds debug=true

(按实现顺序列出)

最后,我们的ABAP项目将包含以下7个存储库对象:

Eclipse中ABAP开发工具中的项目资源管理器结构将如下所示:

CDS消费视图ZE2E001\U C\U SalesOrder和ZE2E001\U C\U SalesOrderItem

我们将开始在SAP作为EPM演示数据模型的一部分提供的两个现有CDS接口视图之上创建两个CDS消费视图。

请注意,您必须同时激活这两个视图(Ctrl+Shift+F3)。之后,您可以选择销售订单视图并使用(F8)预览数据。

界面–zif_e2e001_odata_v4_so_types

在第二步中,我们创建了一个界面zif_e2e001_odata_v4_so_types,返利app开发,用于存储将在这两个界面中使用的数据类型和常量,模型提供程序和数据提供程序类。

它还可用于驻留在同一服务组中的其他服务实现,并且可能希望利用接口中定义的信息来实现跨服务引用。

消息类

消息类包含在中使用的三条消息异常类引发特定于OData服务的错误消息。

消息类在ADT中如下所示。

异常类

使用自己的异常类是一种很好的做法。该类继承自SAP网关框架提供的基本异常类,并包含在发生以下错误时引发的异常:

应用程序尝试读取不存在的销售订单的标题数据应用程序尝试读取销售订单或销售订单项目列表,但不提供任何查询选项,以避免全表扫描

请注意:

例如,SAP Fiori应用程序默认使用$top和$skip等查询选项。对销售订单的一次读取也将使用事先检索到的正确密钥。

Model provider class–zcl\ U e2e001\ U odata\ U v4\ U so\ U Model–coding explained