具有自定义DPC的OData:使用$ expand时导航路径丢失

2020-08-22 05:55发布

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

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


在为OData服务实现自定义DPC_EXT类时,我遇到了一些不一致的行为(至少对我而言)。 这很容易解释,但不常见,请耐心等待:

假设我们有一个导航路径,例如:

http://..../zMyService/Customer('123')/to_Order('456')/to_Partner

在合作伙伴的DPC实现中,我可以通过使用io_tech_request_context的get_source_entity_set_name()和get_converted_source_keys()方法查询源实体及其键来获取客户编号。 使用上面的URL,我得到" Customer"作为源,客户编号为123。太棒了!

但是...当有人改用$ expand时,情况却大不相同:

http://..../zMyService/Customer('123')/to_Order('456')?$ expand = to_Partner

相同的代码将Order实体作为源返回。 所以现在第二层是顶层,找不到客户了。 我调试并拖曳了所有可用的对象/属性。 娜达

对于第一种情况,get_navigation_path的导航路径有两个条目(to_Order和to_Partner),但是在第二种情况下,只有" to_Partner"。

是错误还是设计使然?

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

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


在为OData服务实现自定义DPC_EXT类时,我遇到了一些不一致的行为(至少对我而言)。 这很容易解释,但不常见,请耐心等待:

假设我们有一个导航路径,例如:

http://..../zMyService/Customer('123')/to_Order('456')/to_Partner

在合作伙伴的DPC实现中,我可以通过使用io_tech_request_context的get_source_entity_set_name()和get_converted_source_keys()方法查询源实体及其键来获取客户编号。 使用上面的URL,我得到" Customer"作为源,客户编号为123。太棒了!

但是...当有人改用$ expand时,情况却大不相同:

http://..../zMyService/Customer('123')/to_Order('456')?$ expand = to_Partner

相同的代码将Order实体作为源返回。 所以现在第二层是顶层,找不到客户了。 我调试并拖曳了所有可用的对象/属性。 娜达

对于第一种情况,get_navigation_path的导航路径有两个条目(to_Order和to_Partner),但是在第二种情况下,只有" to_Partner"。

是错误还是设计使然?

付费偷看设置
发送
2条回答
悠然的二货
1楼 · 2020-08-22 06:09.采纳回答

嗨,迈克,

请参阅我对以下问题的回答。

https://answers.sap。 com/questions/398484/multi-level-navigation-in-odata-service.html

最诚挚的问候,

Andre

hengyuye
2楼-- · 2020-08-22 06:00

Argh,没关系,发现了问题。 我前段时间重新定义了get_expanded_entity来构建自定义扩展,但决定让默认值首先生效(婴儿步骤原则)。 但是空的重定义仍然隐藏在我的DPC_EXT类中,因此清除了键值。 删除了重新定义,一切正常。

一周热门 更多>