SAP-RAP-Unmanaged:行为读取的执行混乱

问题描述 投票:0回答:1

我有一个非托管的说唱场景,其中最顶层的根实体被投影覆盖,相应的行为也有一个投影。

行为的生成实现为多种方法(如 read、rba、cba 等)创建了空存根……正如我们所知。

此外,我有一个自由式 ui5 应用程序(JS),我在其中使用我发布的 ui5 odata 服务(v2)中定义的公开实体集和操作。

实体的结构是分层的(与几乎每个示例类似),包含标题和项目。

所以到目前为止,行为类的所有生成的方法存根都是空的(除了两个操作,它们执行得很好并且执行我希望它们执行的操作)...

并且,“read”方法是空的。

根据此链接

https://software-heroes.com/en/blog/abap-rap-unmanagement-scenario

我读到了这个:

在我的 ui5 客户端代码中,我确实有一个包含标题的 sap.m.Table,这是通过正确的 3 种方法之一完成的,这里是通过项目绑定

<Table id="tabOrders" 
                  inset="false" 
                  showNoData="false"                     
                  items="{/HEADERS}"
                  mode="SingleSelectMaster"                   
                  itemPress=".onOrderTableItemPress" >
                   <columns >

这会正确触发对公开实体集(称为标头)的隐式读取。 该实体集在服务定义中正确公开,客户端(BAS)中的所有元数据都是同步的。

现在:行为类的“read”方法未被调用(断点设置)。

这看起来像是实体集“HEADERS”(实际上是最顶层的 ROOT 实体视图)被简单地读取,就好像它是一个普通的 CDS 视图一样,并且底层的行为和说唱模型被完全忽略。

如果我实现一个操作并在该实体上发出 EML 读取语句,则会调用方法存根,并且不会返回任何内容,因为它仍然是一个空方法存根。

我尝试使用显式“读取”进行相同的操作,在 odata 模型上调用,这也忽略了该行为类的读取方法。

因此,不知何故,来自我的客户端代码(JS)的调用直接跳转到实体集,但执行似乎只是忽略了它是非托管说唱场景的一部分,而不是独立的CDS视图......

为什么?

sapui5 cds sap rap
1个回答
0
投票

您的CDS视图实体包含任何数据吗? SADL将首先生成查询以从CDS实体加载数据,如果没有找到任何内容,则根本不会到达行为池。

如果您使用ADT,建议启用交叉跟踪,您可以轻松地从调用堆栈中找到问题所在。

© www.soinside.com 2019 - 2024. All rights reserved.