CAP:属性数据类型日期的使用在创建新条目时导致错误

2020-08-27 06:20发布

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

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


大家好,

我使用CAP CDS创建了一个实体,该实体具有两个数据类型为Date的字段。 该实体由服务发布和注释。 如果在" Fiori元素列表"报告中使用了此实体,并通过其"对象页面"创建了新条目,则会显示以下错误消息,因为JavaScript日期对象返回了服务,而不是格式为YYYY-MM-的字符串。 DD,正如该服务显然期望的那样。

实体Employee:受管理的{
   键VId:UUID;
       VPerNr:整数;
       VFirstName:字符串;
       VLastName:字符串;
       VBegin:日期;
       VEnd:日期;
 }
 

注意:我们没有使用时间方面,因为它创建了DateTimeOffset类型的字段,这意味着您不仅可以在界面上输入日期,还可以输入时间。 还是有一种方法可以使用display-format =" Date"注释此字段?

请求有效载荷:

 POST员工HTTP/1.1
 内容类型:application/json
 sap-contextid-accept:标头
 接受:application/json
 接受语言:de-DE
 DataServiceVersion:2.0
 MaxDataServiceVersion:2.0
 内容长度:168

 {" VPerNr":4711," VFirstName":" Test"," VLastName":" User"," VBegin":" \/Date(1575244800000)\/"," VEnd":" \/Date(1575590400000)\ /"," __ metadata":{" type":" P20GService.Employees"}} 

注意:
我正在使用@ sap/cds-odata-v2-adapter-proxy,因为Fiori Elements仅适用于oData v2。

关于
西蒙(Simon)

(15.7 kB)

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

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


大家好,

我使用CAP CDS创建了一个实体,该实体具有两个数据类型为Date的字段。 该实体由服务发布和注释。 如果在" Fiori元素列表"报告中使用了此实体,并通过其"对象页面"创建了新条目,则会显示以下错误消息,因为JavaScript日期对象返回了服务,而不是格式为YYYY-MM-的字符串。 DD,正如该服务显然期望的那样。

实体Employee:受管理的{
   键VId:UUID;
       VPerNr:整数;
       VFirstName:字符串;
       VLastName:字符串;
       VBegin:日期;
       VEnd:日期;
 }
 

注意:我们没有使用时间方面,因为它创建了DateTimeOffset类型的字段,这意味着您不仅可以在界面上输入日期,还可以输入时间。 还是有一种方法可以使用display-format =" Date"注释此字段?

请求有效载荷:

 POST员工HTTP/1.1
 内容类型:application/json
 sap-contextid-accept:标头
 接受:application/json
 接受语言:de-DE
 DataServiceVersion:2.0
 MaxDataServiceVersion:2.0
 内容长度:168

 {" VPerNr":4711," VFirstName":" Test"," VLastName":" User"," VBegin":" \/Date(1575244800000)\/"," VEnd":" \/Date(1575590400000)\ /"," __ metadata":{" type":" P20GService.Employees"}} 

注意:
我正在使用@ sap/cds-odata-v2-adapter-proxy,因为Fiori Elements仅适用于oData v2。

关于
西蒙(Simon)

(15.7 kB)
付费偷看设置
发送
6条回答
haha101010
1楼 · 2020-08-27 07:13.采纳回答

西蒙,你好

该问题已在cds-odata-v2-adapter-proxy的1.4.11版中修复,即cds类型的属性的入站值。日期从"/img/Date()/"转换为 分别为" YYYY-MM-DD"格式。

关于您的注释:没有注释仅显示DateTimeOffset属性的日期部分。 OData v4本机支持Date和DateTimeOffset,而对于OData v2,日期是通过结合使用DateTime和sap:display-format:" Date"批注来实现的。 cds-odata-v2-adapter-proxy会自动处理此问题。

最好,
塞巴斯蒂安

路亽曱_Ryan
2楼-- · 2020-08-27 07:11

我认为最好使用DateTime而不是Date来避免此问题。

SAP浪
3楼-- · 2020-08-27 07:13

嗨西蒙,

以下是如何添加UI注释的示例: https://github.com/SAP-samples/cloud-cap-samples/blob/master/packages/bookshop/app/admin/fiori-service.cds

最好

塞巴斯蒂安

Violet凡
4楼-- · 2020-08-27 06:50

嗨,格雷戈·沃尔夫

感谢 为您的答案。 但这只是解决实际问题的方法。 我们只想在ui上显示日期而无需时间。 可以在本地注释文件中或通过cds服务中的注释添加显示格式注释吗?

问候
Simon

太Q了
5楼-- · 2020-08-27 06:58

嗨,塞巴斯蒂安 ,

感谢您的修复。 现在,创建一个条目就可以了。

关于
Simon

spaceman01
6楼-- · 2020-08-27 07:12

嗨,格雷戈尔,

不,您是对的。 那只是作为如何添加特定于UI的注释的示例。

但是,在进一步分析之后,OData v2适配器似乎存在数据转换问题。 只要有解决方案,我就会更新答案。

最佳,
塞巴斯蒂安

一周热门 更多>