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

2020-08-22 05:55发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)在为OData服务实现自定义DP...

         点击此处--->   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"。

是错误还是设计使然?