使用@ sap/cds/common/temporal-视图生成中断

2020-08-24 03:29发布

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

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


你好

这里的另一个问题。

在实体定义中使用@ sap/cds/common/temporal并将表作为服务公开时,服务不返回任何数据,即使我们在表中填充了CSV导入和 检查显示已正确插入数据。

db cds中的实体:

实体CST_FAKTOR:临时,托管,临时{
         FAKTOR_ID:整数;
         FAKTOR_TYP:字符串(50)不为null;
         VON:时间不为空;
         BIS:时间不为空;
         MONTAG:布尔值;
         DIENSTAG:布尔值;
         MITTWOCH:布尔值;
         DONNERSTAG:布尔值;
         FREITAG:布尔值;
         SAMSTAG:布尔值;
         SONNTAG:布尔值;
         因素:Decimal(30,10)不为null;
 }
 

srv cds中的服务:

 service CleaningService {
    Faktor实体作为clean.CST_FAKTOR上的投影;
 } 

经过一些搜索,我们意识到该视图(当您有服务时将由CDS自动生成)具有自动生成的where子句,这似乎是完全错误的,并且看起来也不同(甚至更多),这取决于您是否 使用cli或WebIDE在本地构建它。 看起来如下:

本地:

位置(CST_FAKTOR_0.validFrom current_time)

在HANA中:……(CST_FRISTIGKEITEN.VALIDFROM SESSION_CONTEXT('VALID-FROM'));

首先,在本地情况下,这样做是正确的,但这样做并不符合我们的利益。 如果要按照我自己的规则选择,可能是所有无效的规则,或者将来使用某些具有有效性的数据,或者...。
由于在生成的视图中进行了硬编码,所有这些都不起作用。 我们该如何预防呢?

第二,在汉娜的情况下,生成的代码对我们完全没有意义。 为什么要检查会话上下文变量?

第三:为什么使用cli或webide时生成的代码会有所不同?

目前唯一的解决方案是对生成的hdbcds文件进行适配器,因为它总是被覆盖,所以没有意义。

感谢您的解决方案。

最诚挚的问候,

Tobias

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

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


你好

这里的另一个问题。

在实体定义中使用@ sap/cds/common/temporal并将表作为服务公开时,服务不返回任何数据,即使我们在表中填充了CSV导入和 检查显示已正确插入数据。

db cds中的实体:

实体CST_FAKTOR:临时,托管,临时{
         FAKTOR_ID:整数;
         FAKTOR_TYP:字符串(50)不为null;
         VON:时间不为空;
         BIS:时间不为空;
         MONTAG:布尔值;
         DIENSTAG:布尔值;
         MITTWOCH:布尔值;
         DONNERSTAG:布尔值;
         FREITAG:布尔值;
         SAMSTAG:布尔值;
         SONNTAG:布尔值;
         因素:Decimal(30,10)不为null;
 }
 

srv cds中的服务:

 service CleaningService {
    Faktor实体作为clean.CST_FAKTOR上的投影;
 } 

经过一些搜索,我们意识到该视图(当您有服务时将由CDS自动生成)具有自动生成的where子句,这似乎是完全错误的,并且看起来也不同(甚至更多),这取决于您是否 使用cli或WebIDE在本地构建它。 看起来如下:

本地:

位置(CST_FAKTOR_0.validFrom current_time)

在HANA中:……(CST_FRISTIGKEITEN.VALIDFROM SESSION_CONTEXT('VALID-FROM'));

首先,在本地情况下,这样做是正确的,但这样做并不符合我们的利益。 如果要按照我自己的规则选择,可能是所有无效的规则,或者将来使用某些具有有效性的数据,或者...。
由于在生成的视图中进行了硬编码,所有这些都不起作用。 我们该如何预防呢?

第二,在汉娜的情况下,生成的代码对我们完全没有意义。 为什么要检查会话上下文变量?

第三:为什么使用cli或webide时生成的代码会有所不同?

目前唯一的解决方案是对生成的hdbcds文件进行适配器,因为它总是被覆盖,所以没有意义。

感谢您的解决方案。

最诚挚的问候,

Tobias

付费偷看设置
发送
3条回答
天桥码农
1楼 · 2020-08-24 03:44.采纳回答

您好Tobias,

时态方面与时态查询选项一起使用。 对于OData标准,这些仍在进行中(请参见 https://github.com/oasis-tcs/odata-vocabularies/blob/master/vocabularies/Org.OData.Temporal.V1.md )。 但是,现在,您可以分别使用标题" sap-valid-from"," sap-valid-to"和" sap-valid-at"。 HANA的会话上下文由运行时进行相应设置。

对于SQLite,您所描述的where子句是静态的。

最后,请注意时间数据是beta功能。

最好,
塞巴斯蒂安

软件心理学工程师
2楼-- · 2020-08-24 03:58

你好塞巴斯蒂安,谢谢。

我认为我的模型中有一些东西,就像我尝试您的链接时收到的

 {
 "错误":{
 " code":" BAD_REQUEST",
 " message":"在'EmployeeCurriculumService.Position'中没有名称为'sap-valid-from'的元素",
 "细节":[]
 }
 } 

我现在正在使用VSCode进行开发,我还将通过WebIDE进行快速测试。

谢谢!

我是小鹏鹏啊
3楼-- · 2020-08-24 03:59

您好,塞巴斯蒂安,谢谢。

我认为我的模型出了点问题,因为当我尝试链接时会收到

 {"错误":{"代码":" BAD_REQUEST","消息":"在'EmployeeCurriculumService.Position'中没有名称为'sap-valid-from'的元素","详细信息":[]}} 

我现在正在使用VSCode进行开发,我还将通过WebIDE进行快速测试。

谢谢!

一周热门 更多>