CDS实体的生成字段名称在本地和HDB上不同

2020-08-27 08:09发布

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

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


嗨,

我正在使用CAP(Node.js)构建应用程序,该应用程序还利用了一些自定义处理程序。

在这些处理程序中,由于大小写行为不同,我在处理从CDS视图中选择的实体时遇到问题。 遵循建议,已创建所有属性,从小写字母开始,然后根据需要创建骆驼,例如e。 G。 " parentNode"。

想象一下使用实体HierarchyNodes和分配给一个层次结构节点之一的Product建模的层次结构。

为了阅读更多层次结构信息,实现了自定义处理程序。

虽然这在SQLite DB上可以很好地在本地工作,但在HDB上生成的名称是不同的(全部大写)。

下面的代码展示了实现的逻辑。

 const products =等待tx.run(SELECT()。from(Products).where({ID:productKey}));
  如果(products.length = 1)
    const nodeIds =等待tx.run(SELECT('​​ID')。from(HierarchyNodes).where({ID:products [0] .hierarchyNode_ID})); 

在HDB产品[0] .hierarchyNode_ID上未定义,因为只有属性产品[0] .HIERARCHYNODE_ID。

在我看来,这是有问题的,因为两种环境的反应都应相似。

我暂时通过在选择函数中说明列名来解决这个问题,例如 SELECT('​​hierarchyNode_ID')。 这将导致对象在SQLLite和HDB上具有属性hierarchicalNode_ID。

如果我做错了什么或者这是一个错误,请告诉我。

感谢
Arne

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

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


嗨,

我正在使用CAP(Node.js)构建应用程序,该应用程序还利用了一些自定义处理程序。

在这些处理程序中,由于大小写行为不同,我在处理从CDS视图中选择的实体时遇到问题。 遵循建议,已创建所有属性,从小写字母开始,然后根据需要创建骆驼,例如e。 G。 " parentNode"。

想象一下使用实体HierarchyNodes和分配给一个层次结构节点之一的Product建模的层次结构。

为了阅读更多层次结构信息,实现了自定义处理程序。

虽然这在SQLite DB上可以很好地在本地工作,但在HDB上生成的名称是不同的(全部大写)。

下面的代码展示了实现的逻辑。

 const products =等待tx.run(SELECT()。from(Products).where({ID:productKey}));
  如果(products.length = 1)
    const nodeIds =等待tx.run(SELECT('​​ID')。from(HierarchyNodes).where({ID:products [0] .hierarchyNode_ID})); 

在HDB产品[0] .hierarchyNode_ID上未定义,因为只有属性产品[0] .HIERARCHYNODE_ID。

在我看来,这是有问题的,因为两种环境的反应都应相似。

我暂时通过在选择函数中说明列名来解决这个问题,例如 SELECT('​​hierarchyNode_ID')。 这将导致对象在SQLLite和HDB上具有属性hierarchicalNode_ID。

如果我做错了什么或者这是一个错误,请告诉我。

感谢
Arne

付费偷看设置
发送
3条回答
wang628962
1楼-- · 2020-08-27 08:49

您好,Arne,

实际上,sqlite和hdb应该为两个数据库返回相同大小写的值。 在某些情况下,我们无法做到这一点,例如,如果您运行SELECT.from('Books'),而Books不在模型中或在模型中以不同的方式命名。

但是,如果将csn实体传递给SELECT.from(),它应该可以立即使用。 您能否提供有关模型的更多信息,以及产品和HierarchNodes来自何处以及它们的外观?

最好的问候
塞缪尔

风早神人
2楼-- · 2020-08-27 08:46

感谢Arne,我们将

xfwsx85
3楼-- · 2020-08-27 08:40

嗨,塞缪尔,

我创建了一个简单的应用程序来重现报告的问题,您可以在此处获取它: https://github.com/ahusemann/cds_issue

复制步骤记录在 README.md 中。 让我知道您是否在复制行为方面遇到问题。

最好的问候

Arne

一周热门 更多>