无法从带注释的CDS视图生成BO

2020-08-15 09:14发布

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

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


专家们,

我尝试从带有注释的CDS视图生成BO。 我尝试建模的实体是 Monster Monster Items 。 因此,特别是我已经完成了此博客中的步骤完成任务:

  • 创建两个数据库表来保存BO数据
  • 创建两个CDS视图
  • 向两个CDS视图添加 @ObjectModel注释
  • 保存并激活两个CDS视图

当我认为这些 @ObjectModel注释 应该如何工作时,BOPF运行时应该已经使用 ROOT节点生成了BO。 ITEM节点 。 但是不幸的是什么也没有产生。

我不知道为什么在激活CDS视图时未生成BO,因为为此任务设置了所有必需的注释。 我们正在使用以下补丁程序级别的SAP系统:

由于补丁程序级别,我们的系统可能无法识别这些从CDS View创建BO的注释吗?

这是两个CDS视图的源代码:

CDS视图Znl_Monster

 @ AbapCatalog.sqlViewName:'ZDDL_NL_I_MNSTR'
 @ AbapCatalog.compiler.compareFilter:是
 @ AccessControl.authorizationCheck:#NOT_REQUIRED
 @ EndUserText.label:'ZNL_MONSTER'

 @ Search.searchable:是
 @ Search.ranking:"高"

 @ ObjectModel.semanticKey:'MonsterId'
 @ ObjectModel.representativeKey:'MonsterId'
 @ ObjectModel.modelCategory:#BUSINESS_OBJECT
 @ ObjectModel.compositionRoot:正确
 @ ObjectModel.transactionalProcessingEnabled:正确
 @ ObjectModel.writeActivePersistence:'ZNL_D_ROOT'
 @ ObjectModel.createEnabled:是
 @ ObjectModel.deleteEnabled:是
 @ ObjectModel.updateEnabled:是

 定义视图Znl_Monster
     从znl_d_root中选择作为Monster
    //与商品的关联
     [0 .. *]与Znl_Monsteritem关联为Monster.monsterid = _MonsterItem.MonsterId {
    
    //怪物
     @ Search.defaultSearchElement:true
     @ ObjectModel.readOnly:正确
     将Monster.monsterid键设置为MonsterId,

    //名称
     将Monster.name作为Name,

    //公开协会
     @ ObjectModel.association.type:[#TO_COMPOSITION_CHILD]
     _MonsterItem//公开关联
 }
 

CDS视图Znl_Monsteritem

 @ AbapCatalog.sqlViewName:'ZDDL_NL_I_MNSTRI'
 @ AbapCatalog.compiler.compareFilter:是
 @ AccessControl.authorizationCheck:#NOT_REQUIRED
 @ EndUserText.label:'ZNL_MONSTERITEM'

 @ Search.searchable:是
 @ ObjectModel.semanticKey:['MonsterId','MonsterItemId']
 @ ObjectModel.representativeKey:'MonsterItemId'
 @ ObjectModel.writeActivePersistence:'ZNL_D_ITEM'
 @ ObjectModel.createEnabled:是
 @ ObjectModel.deleteEnabled:是
 @ ObjectModel.updateEnabled:是

 定义视图Znl_Monsteritem
     从znl_d_item中选择作为项
    
    //与标题关联
     在Item.monsterid = _Monster.MonsterId {上,作为_Monster的Znl_Monster关联[*]
    
    //怪物
     @ Search.defaultSearchElement:true
     @ ObjectModel.readOnly:正确
     键Item.monsterid作为MonsterId,
    
    //怪物物品
     @ Search.defaultSearchElement:true
     键Item.itemid作为MonsterItemId,
    
    //名称
     Item.name作为名称,
    
    //测量字段
     Item.price作为价格,
     数量作为数量,
     Item.power作为力量,
    
    //公开协会
     @ ObjectModel.association.type:[#TO_COMPOSITION_PARENT,#TO_COMPOSITION_ROOT]
     _怪物

 }
 

(82.9 kB)

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

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


专家们,

我尝试从带有注释的CDS视图生成BO。 我尝试建模的实体是 Monster Monster Items 。 因此,特别是我已经完成了此博客中的步骤完成任务:

  • 创建两个数据库表来保存BO数据
  • 创建两个CDS视图
  • 向两个CDS视图添加 @ObjectModel注释
  • 保存并激活两个CDS视图

当我认为这些 @ObjectModel注释 应该如何工作时,BOPF运行时应该已经使用 ROOT节点生成了BO。 ITEM节点 。 但是不幸的是什么也没有产生。

我不知道为什么在激活CDS视图时未生成BO,因为为此任务设置了所有必需的注释。 我们正在使用以下补丁程序级别的SAP系统:

由于补丁程序级别,我们的系统可能无法识别这些从CDS View创建BO的注释吗?

这是两个CDS视图的源代码:

CDS视图Znl_Monster

 @ AbapCatalog.sqlViewName:'ZDDL_NL_I_MNSTR'
 @ AbapCatalog.compiler.compareFilter:是
 @ AccessControl.authorizationCheck:#NOT_REQUIRED
 @ EndUserText.label:'ZNL_MONSTER'

 @ Search.searchable:是
 @ Search.ranking:"高"

 @ ObjectModel.semanticKey:'MonsterId'
 @ ObjectModel.representativeKey:'MonsterId'
 @ ObjectModel.modelCategory:#BUSINESS_OBJECT
 @ ObjectModel.compositionRoot:正确
 @ ObjectModel.transactionalProcessingEnabled:正确
 @ ObjectModel.writeActivePersistence:'ZNL_D_ROOT'
 @ ObjectModel.createEnabled:是
 @ ObjectModel.deleteEnabled:是
 @ ObjectModel.updateEnabled:是

 定义视图Znl_Monster
     从znl_d_root中选择作为Monster
    //与商品的关联
     [0 .. *]与Znl_Monsteritem关联为Monster.monsterid = _MonsterItem.MonsterId {
    
    //怪物
     @ Search.defaultSearchElement:true
     @ ObjectModel.readOnly:正确
     将Monster.monsterid键设置为MonsterId,

    //名称
     将Monster.name作为Name,

    //公开协会
     @ ObjectModel.association.type:[#TO_COMPOSITION_CHILD]
     _MonsterItem//公开关联
 }
 

CDS视图Znl_Monsteritem

 @ AbapCatalog.sqlViewName:'ZDDL_NL_I_MNSTRI'
 @ AbapCatalog.compiler.compareFilter:是
 @ AccessControl.authorizationCheck:#NOT_REQUIRED
 @ EndUserText.label:'ZNL_MONSTERITEM'

 @ Search.searchable:是
 @ ObjectModel.semanticKey:['MonsterId','MonsterItemId']
 @ ObjectModel.representativeKey:'MonsterItemId'
 @ ObjectModel.writeActivePersistence:'ZNL_D_ITEM'
 @ ObjectModel.createEnabled:是
 @ ObjectModel.deleteEnabled:是
 @ ObjectModel.updateEnabled:是

 定义视图Znl_Monsteritem
     从znl_d_item中选择作为项
    
    //与标题关联
     在Item.monsterid = _Monster.MonsterId {上,作为_Monster的Znl_Monster关联[*]
    
    //怪物
     @ Search.defaultSearchElement:true
     @ ObjectModel.readOnly:正确
     键Item.monsterid作为MonsterId,
    
    //怪物物品
     @ Search.defaultSearchElement:true
     键Item.itemid作为MonsterItemId,
    
    //名称
     Item.name作为名称,
    
    //测量字段
     Item.price作为价格,
     数量作为数量,
     Item.power作为力量,
    
    //公开协会
     @ ObjectModel.association.type:[#TO_COMPOSITION_PARENT,#TO_COMPOSITION_ROOT]
     _怪物

 }
 

(82.9 kB)
6条回答
太Q了
1楼-- · 2020-08-15 10:01

您好 Nils Lutz

您找到解决问题的办法了,我也很同情。

您是否知道@ ObjectModel.transactionalProcessingEnabled注释在SAP NetWeaver 750中是否也不起作用?

我在Eclipse中看到此注释的字体颜色与其他注释的字体颜色不同,并且BOF不在SAP NetWeaver中创建。

三十六小时_GS
2楼-- · 2020-08-15 10:02

嗨,洋子,

很抱歉,我们找不到此问题的解决方案。 从那以后,我们不再深入探讨BOPF主题。

此致

Nils

小c菟菟
3楼-- · 2020-08-15 10:07

嗨,Nils/Marcio,

你们能从CDS注释中在BOPF中创建子节点吗? 关于创建子节点有什么建议吗? 还是您把机票交给SAP以寻求进一步的帮助?

自那时以来,我关注了几篇文章,并严格按照建议的注释进行创建。 我只能在BOPF中创建"根"节点,但未创建子节点。 您能否让我知道子节点创建的问题是什么? 因为我没有任何授权问题,也没有错误。

谢谢

Santosh Kumar J

shere_lin
4楼-- · 2020-08-15 09:59

您的评论对我有所帮助,谢谢!

奄奄一息的小鱼
5楼-- · 2020-08-15 10:12

您好,

我遇到了类似的问题,即未生成子节点。 因此,我开始尝试各种变体,然后意识到在子视图中,我指定了以下内容:

semanticKey:['SalesOrder','SalesOrderItem'],

在阅读有关此注释的文档时,它指出"对于给定的实体,仅定义了一个语义键。"

所以我将其更改为以下内容:

semanticKey:['SalesOrderItem'],

然后删除我的BOPF对象并重新生成。 这解决了问题。

尝试一下,因为我不确定为什么会出现这种行为。

干杯

Vikas

SAP小菜
6楼-- · 2020-08-15 09:57

嗨,

我正面临类似的问题。 但是问题是,我的根节点下面有三个子节点。 我在根节点下创建了一个新的子节点,但未添加。

此外,我在subnode-3下创建了一个子节点。 BOPF中也没有将其累加。

请为此提供解决方案。

谢谢

Vignesh。

一周热门 更多>