是否可以使用基于CDS和基于代码的OData混合服务?

2020-08-22 01:32发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个中等复杂的导航树场景,其中大多数节点可以通过 OData:Publish = true 表示,但是两个不能。 因此,现在我想吃点蛋糕,然后将CDS用于所有非CDS实体。

我将尝试绘制图片:

/Entity1/to_Entity2/to_Entity3/to_Entity4 
| |
| + ----/to_Entity5 *
| + ------/to_Entity6/to_Entity7 *

这里,除实体5和7之外的所有内容都可以通过CDS生成。 实体5和7需要代码才能返回数据。

过去,我为此创建了一个单独的GW服务。 但是在我当前的情况下,这将意味着使用一个大的$ filter进行多个查询,并且这也是一个对性能敏感的过程,因此我们希望一次通过$ expand和$ filter检索所需的所有内容。

我已经开始在DPC_EXT中对所有代码进行编码,但是想知道是否有一种方法可以节省构建每个导航/选择并仅覆盖SADL生成的服务的一部分?

顺便说一句,关于命名的一个小意见问题:

我注意到有一种将导航路径命名为" ToCustomer"," ToOrder"等的趋势(包括在The Gateway Book中),但是OData将它们格式化为to_Customer,to_Order。 我使用" to _..."来保持一致。 人们使用什么?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个中等复杂的导航树场景,其中大多数节点可以通过 OData:Publish = true 表示,但是两个不能。 因此,现在我想吃点蛋糕,然后将CDS用于所有非CDS实体。

我将尝试绘制图片:

/Entity1/to_Entity2/to_Entity3/to_Entity4 
| |
| + ----/to_Entity5 *
| + ------/to_Entity6/to_Entity7 *

这里,除实体5和7之外的所有内容都可以通过CDS生成。 实体5和7需要代码才能返回数据。

过去,我为此创建了一个单独的GW服务。 但是在我当前的情况下,这将意味着使用一个大的$ filter进行多个查询,并且这也是一个对性能敏感的过程,因此我们希望一次通过$ expand和$ filter检索所需的所有内容。

我已经开始在DPC_EXT中对所有代码进行编码,但是想知道是否有一种方法可以节省构建每个导航/选择并仅覆盖SADL生成的服务的一部分?

顺便说一句,关于命名的一个小意见问题:

我注意到有一种将导航路径命名为" ToCustomer"," ToOrder"等的趋势(包括在The Gateway Book中),但是OData将它们格式化为to_Customer,to_Order。 我使用" to _..."来保持一致。 人们使用什么?

付费偷看设置
发送
5条回答
Climb_Ma
1楼-- · 2020-08-22 02:13

嗨,迈克,

很高兴听到您喜欢《 SAP网关手册》;-)。

如果您使用参考数据源方法创建服务,则只需从一个开始即可 CDS视图(例如SEPM_I_SALESORDER_E),您可以深入了解所有关联的多个级别,只需选择通过关联连接到SEPM_I_SALESORDER_E的所有CDS视图(请参见下面的屏幕快照)。

因此您没有 自己创建所有实体。

这比使用@ OData.publish更好:true,因为它允许您选择要发布的内容,而不必发布通过关联连接的所有内容。

顺便说一句。 您正在使用什么发行版?

SAP S/4 xxxx,SAP ERP EHP x?

最好的问候,

安德烈

< img src=" https://answers.sap.com/storage/attachments/1788766-cusersd041615onedrive-sap-sedocumentsblogsrds-mult.jpg">

悠然的二货
3楼-- · 2020-08-22 01:51
亦是此间程序员
4楼-- · 2020-08-22 02:04

嗨安德烈,

哦,太好了! 我不知道关联与RDS一起出现。 我只将它与表一起使用。

不幸的是,我正在为此服务使用较旧的系统,即NW 7.4 SP11/ERP EHP7(对不起,我应该在前面说过)。 没有RDS生成,创建后只能将服务实现与CDS视图链接。

谢谢,
Mike

jovirus
5楼-- · 2020-08-22 02:01

嗨,安德烈 , 感谢那! 我在这里搜索了一段时间,但以某种方式错过了该博客。

但这不是我所追求的。 我认为。 希望使用OData:publish生成OData生成的视图的原因是,所有操作都是通过关联完成的,而我的印象是,这将一次进入数据库进行查询。

据我了解,我必须创建每个实体并将其指向其自己的CDS视图。 这样做本身还可以,但是我将依靠SADL框架来优化查询。 这也是一项性能至关重要的服务,性能是我们使用OData的主要原因。 您还链接到博客中的一个出色文档,其中详细介绍了如何覆盖/管理查询策略。 但是总的来说,这看起来比起构建基于代码的直接服务要更多甚至更多。

因此,我希望创建具有关联的CDS视图并使用OData生成整个实体树。 :发布。

顺便说一句,我还有《网关大全》的第二版和第三版,非常有用! :-)

一周热门 更多>