OData日期时间属性的规则

2020-09-04 12:22发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)关于实体中Edm.datetim...

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

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


关于实体中Edm.datetime属性问题的文章很多。 提供的解决方案通常视具体情况而定,因此很难弄清出问题的原因和补救措施。

这是一个简短的讨论(我希望!),它为edm.datetime属性建立了一些规则。 如果这些规则或某些其他规则有任何例外,请发布。

规则1

使用Edm类型日期时间。 不要为了方便起见将日期保持为edm.string

规则2

如果可以使用null值,则使该属性可以为null。 如果需要一个值(强制性),则不要使其为空。

规则3

仅当后端日期包含" 00000000"作为值时,才能正确评估可为空的属性。 包含空格的ABAP日期值(很遗憾允许这样做)将不会被视为null,但也不能转换为edm.datetime-您会从服务器收到运行时错误。

规则4

请注意完整属性定义。 仅为您的"日期属性"提供edm.datetime类型是不足以确保OData解析期间正确转换的。 参见规则5、6和7。

规则5

如果date属性是用于实体定义的DDIC结构的一部分,并且该组件是DATS(基本D类型),则可以直接在其中放置一个D类型值,例如

有效ABAP:

ls_entity-date = sy-datum。


这种类型的日期可能会落入规则3中提到的"日期为空但无效"陷阱中。

规则6

如果date属性是DDIC结构的不是的一部分,并且实体定义是"自由格式",则在分配其后端数据类型时,也可以直接在其中放置D类型值:例如

此类型的日期可能属于规则3中提到的"日期为空但无效"陷阱。

规则7

如果date属性不是DDIC结构的一部分,则实体定义为"自由格式",并且没有后端数据类型,则必须像填充时间戳一样填充目标。 这是因为MPC生成的属性类型是打包类型字段。 在规则5和6中,MPC生成的属性类型是D类型。

请注意,edm.datetime将包含一个表示微秒的附加部分,除非从高分辨率时间戳(即比sy-uzeit更为详细)中抽取,否则通常不会填充该部分。

此类型的日期不能落入规则3中提到的"日期为空但无效"陷阱中。

规则8

您也可以将TIMESTAMP用作DDIC结构实体库中的组件类型,而不是DATS。 可以按照规则7进行转换。

我确定我们可以在此处添加更多内容:例如,我发现" json格式"的提要日期看起来有些"奇"-是对还是错?

致谢

罗恩。

(7.1 kB)
7条回答
能不能别闹
2020-09-04 13:03

嗨罗恩,

谢谢。 我面临一个新错误:


我们如何在Odata URL中将datetime传递为空白,其中Date是关键字段。 在这里,我使用的是自定义RFC。


当我通过Date = datetime'2014-05-14T00:00:00'传递时,我可以获取这些值, 但我想将日期字段传递为空白。


我尝试了不同的格式:


Date = datetime' 0000-00-00T00:00:00'

Date = datetime '00 -00-00T00:00:00'

Date = datetime''

日期=''


/sap/opu/odata/sap/ZSRV/GetReports(PoNo ='12345',Date = datetime'')


我只想传递参数中的一个字段,即PoNo。 日期字段是必填字段,因为这是输入参数

问候,

Tejas

一周热门 更多>