oData-多个RFC输出表参数-最佳实践

2020-09-09 00:38发布

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

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


尊敬的会员

这可能不是问这个问题的第一个,但我没有找到关于该主题的最佳实践。 因此,让我从这个角度提出问题。

我们有一个RFC,它将提供约7个表参数作为输出。 输入将从UI提供给此oData服务,并且需要提供7个表参数作为输出。 在用户界面中,所有这7个表参数都可能不会一次显示。 UI中大约有4个选项卡将列出这些数据。 我们知道

GET_EXPANDED_ENTITYSET可以与关联和导航一起使用。 我们已经建立了这个并且能够成功获得结果。 我试图从最佳实践的角度来理解什么更有意义?

1)RFC/SOAP/REST服务中的传统处理方式-在一次调用中获取输入并提供所有相关的输出,因此不会有多个客户端到服务器的调用。 从系统和用户的角度来看更好。 我的视图-这很好,因为我们不会在网关系统中加载所有导航/多个EntitySet调用。

2)使用oData和某些标准服务-设计是为了与UI匹配,因此仅在需要时才从UI对后端进行多次调用,以从相应的实体集中检索数据(kinda微服务)。 如果用户不断在选项卡或页面之间导航,这似乎在客户端和服务器之间来回很多。 我的视图-我们可以使用$ batch将所有实体集调用包装成一个,但仍然不行。 从网关到后端,将需要使用批处理中的全部工作流程(乘以Get/Insert调用的次数)。 如果同时有100个用户使用该应用程序,则我们将消耗全部 并行的工作流程和其他工作流程将必须等待/使用顺序本质流程

我想从您的经历中听到什么更有意义。

您何时采用上述每种策略?

使用GET_EXPANDED_ENTITYSET时的性能如何?

此致

Raj

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

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


尊敬的会员

这可能不是问这个问题的第一个,但我没有找到关于该主题的最佳实践。 因此,让我从这个角度提出问题。

我们有一个RFC,它将提供约7个表参数作为输出。 输入将从UI提供给此oData服务,并且需要提供7个表参数作为输出。 在用户界面中,所有这7个表参数都可能不会一次显示。 UI中大约有4个选项卡将列出这些数据。 我们知道

GET_EXPANDED_ENTITYSET可以与关联和导航一起使用。 我们已经建立了这个并且能够成功获得结果。 我试图从最佳实践的角度来理解什么更有意义?

1)RFC/SOAP/REST服务中的传统处理方式-在一次调用中获取输入并提供所有相关的输出,因此不会有多个客户端到服务器的调用。 从系统和用户的角度来看更好。 我的视图-这很好,因为我们不会在网关系统中加载所有导航/多个EntitySet调用。

2)使用oData和某些标准服务-设计是为了与UI匹配,因此仅在需要时才从UI对后端进行多次调用,以从相应的实体集中检索数据(kinda微服务)。 如果用户不断在选项卡或页面之间导航,这似乎在客户端和服务器之间来回很多。 我的视图-我们可以使用$ batch将所有实体集调用包装成一个,但仍然不行。 从网关到后端,将需要使用批处理中的全部工作流程(乘以Get/Insert调用的次数)。 如果同时有100个用户使用该应用程序,则我们将消耗全部 并行的工作流程和其他工作流程将必须等待/使用顺序本质流程

我想从您的经历中听到什么更有意义。

您何时采用上述每种策略?

使用GET_EXPANDED_ENTITYSET时的性能如何?

此致

Raj

付费偷看设置
发送
4条回答
大圣 - sap领域执行人,9年sap运营经验
1楼 · 2020-09-09 01:05.采纳回答

嗨,拉吉,

仅当您使用OData查询的并行化时才使用几个工作流程,如我的同事卡洛斯·罗根。

https://blogs.sap.com/2013/02/01/speed-up-your-gateway-services-using-parallelization/

或在线文档中:

https://help.sap.com/saphelp_gateway20sp12/helpdata/en/8a/e69552634d6f54e10000000a44176d/frameset.htm

可以比按顺序执行查询更快,但是这取决于后端逻辑,在您看来,这只是一个大的RFC。

您还可以尝试使用软状态,以便您 将数据存储在内存中(如果已读取) 无论如何。

https://blogs.sap.com/2014/10/14/how-to-use-soft-state-support-for-odata-services/

但是这会占用内存,并且当多个用户访问系统时,您将不得不尝试在您的方案中是否可以扩展内存。 如果存储的数据量较小但计算成本很高(例如产品价格),则软状态通常是一件好事。

在这里我没有提供任何灵丹妙药。 您必须尝试几件事,并且可能必须优化后端实现

关于此,

Andre

clasier
2楼-- · 2020-09-09 01:06

如果使用$ expand不会 并行GET请求,但是无论您是否已实现GET_EXPANDED_ENTITYSET还是让SAP Gateway框架以递归方式调用GET_ENTITY和GET_ENTITYSET方法的工作,都只有一个。

实现GET_EXPANDED_ENTITYSET是否带来任何性能依赖于 基础业务逻辑。 如果您在第一次调用时仍要读取全部数据(例如,如果使用一个BAPI一次调用标头和项目数据)会更好,但是实现起来比较麻烦。

您 可能要研究构建CDS视图并使用参考数据源方法。

致谢

Andre

四川大学会员
3楼-- · 2020-09-09 01:02

感谢安德烈·菲舍尔

我们将这些oData构建在系统中已存在多年的包装RFC之上,该包装将不同级别的数据整合在一起。 我们确实选择了

GET_EXPANDED_ENTITYSET(数据提供程序扩展)基于最佳实践,以避免递归地使用标准网关框架的$ expand。

我的问题更多关于Entityset输出。 我们几乎有大约7个表格参数需要在屏幕上的不同选项卡中显示。 数据提供者以传统的方式将所有数据提供给前端,然后前端团队确定何时何地显示,以避免多次调用后端系统。 使用oData,我们可以选择分别调用这些实体,因此想知道何时最好调用单个实体Vs将所有实体作为输出返回?

我已经看到My Fiori收件箱使用$ batch合并了对不同实体(例如项目,附件,相关对象等)的所有get请求调用的种类。使用$ batch在集线器部署中,所有这些对backenntity调用的es都将进行 被GW调用,因为处理的单个工作占用网关上的更多资源。 现在,在这种情况下,不是使用1个工作流程,而是使用4个或5个以不同的方式获取相同的数据。

希望我在上述声明中明确表示自己。 很乐意讨论这些问题,以了解SAP使用1个工作流程(GET_EXPANDED_ENTITYSET)与多个工作流程用法($ batch)背后的策略。

灬番茄
4楼-- · 2020-09-09 01:10

感谢安德烈·菲舍尔

我们在使用moc的某些服务上使用并行化,还基于SPRO配置-定义批查询的并行化对$ batch请求进行并行化。

我有点安心了,因为这实际上是基于案例的,而不是真正的一种/最佳方法。 诸如前端之类的多种因素以及后端系统中存在的因素也将推动这一点。

如果我们还没有一个大的RFC,那么我们可能会去进行基于实体的服务实现,在这里我们可以让前端团队一次批调用所有实体,也可以在某个时候将它们分成多个批。 需要。

尽管感谢您的澄清!

一周热门 更多>