OData-基于BOPF的CDS视图-删除根节点错误-同一数据库表上有多个节点

2020-08-24 14:29发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家您好, 根据我们对生产性应...

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

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


专家您好,

根据我们对生产性应用程序(SAPUI5而不是Fiori)的要求,我已经成功创建了基于BOPF的"消费CDS视图"。 我使用服务数据源引用将其公开为SEGW中的OData服务。 我的SAP版本是7.50-SP级别16。

在我的业务对象建模中,我有一个场景,其中多个BOPF子节点引用同一数据库表。 其他所有操作(例如READ,EXPAND,DEEP CREATE,CHANGE SET)都对我有用。 但是删除我的父节点失败。

为说明我的情况,我展示了一个模拟用例。

假设我有car作为业务对象,它具有可用颜色和支持的Gas Type之类的功能。 我使用相同的DB Table for Feature,并通过具有适当FeatureID过滤器的独立视图来区分颜色或Gas Type的特征。

对于删除根节点,DAC类框架针对每个子节点尝试获取父键的相应子记录。/BOBF/CL_DAC_LEGACY_TABLE类的方法READ,从BOPF节点配置获取数据源,并从基础数据源检索。 (流程如下)

由于子节点记录了相同的数据库表,因此,如果从数据库表而不是基础CDS视图中获取子节点,则正确的父子关系将被破坏。 这会导致框架请求删除不正确的记录,由于SY-SUBRC故障而导致异常引发。

尽管从逻辑上讲应该没有什么不同,但我还是尝试使用基于DB_KEY和PARENT_KEY GUID的对象建模。 但这不起作用。

如果要求是对引用同一数据库表的多个BOPF子节点进行建模,是否建议使用其他方法?

对于我的应用程序,当前的计划是显式地处理<..> _ DPC_EXT中的根节点删除。

任何输入/建议都会很有帮助。

此致

Samson

(179.5 kB)
4条回答
bbpeas
2020-08-24 15:05

嗨,Mahesh,

感谢您的回复。

同样,我给出的示例是出于理解目的,而不是我的实际要求。 但是,也以博客中的示例为例,颜色节点和气体类型节点是具有不同数据属性的单独实体。

仅出于讨论目的,例如,以下颜色和气体类型的实体具有类似字段

  • colour = {颜色代码,颜色描述,NumberOfCoating,WaxCoatingApplied ......}
  • GasType = {GasTypeCode,GasTypeDesc,AvgMileageSupported,...}

因此,尽管这两个功能都保存在ZTCAR_FEATURES的同一数据库表中,但是它们表示不同的属性,并且它们的字段会有所不同。

基本上,它类似于标准的SAP特性,它们可能存储在同一AUSP表中,它们自己代表不同的实体。

此致

Samson。

一周热门 更多>