当绑定到ABAP日期(不是时间戳)时,是否正确地将DateTime字段绑定到DatePicker?

2020-09-26 19:08发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 决定最终提出这个问题,...

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

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


大家好,

决定最终提出这个问题,因为我相信我们中的许多人都在为UI5中只处理日期Edm.DateTimes的正确方法而苦苦挣扎(不需要手动操作 日期(JavaScript中的日期),所以我们开始:

我知道OData v4(带有sap.ui.model.type.Date)可能会解决所有带有日期的问题,但是现在,我想获得一个 如何正确地将ABAP中的日期值绑定到DatePicker的想法,使您可以使用UTC日期时间来避免UI5和ABAP之间的转换问题(澳大利亚下午的问题)。

换句话说-我有一个Edm.DateTime字段,该字段连接到ABAP Date数据元素,以便自动转换(我不想使Gateway服务复杂化并使用其他数据类型)。

现在,当我使用sap.m.DatePicker时,我将Edm.DateTime属性绑定到DatePicker的" dateValue"。

这很好,除了会给我一个问题 下午在A 因为日期转换不正确。

因此,如果我尝试使用以下方法绑定到dateValue:

 {path:'DateOfBirth',请键入:'sap.ui.model.type.DateTime  ',约束条件:{displayFormat:'Date'},formatOptions:{UTC:true}} 

这实际上并没有绑定。

我可以将其绑定到value和 它看起来像是可行的,但是在更新odata属性之前错过了验证日期值的整个过程,这是我需要的功能。

Graham Robinson在谈到使用Edm.DateTimeOffset时提到过,但这确实 似乎不允许您将其映射到仅包含日期的ABAP字段,因此尽管目前我也了解Edm.DateTime将来将为此退休,但我已经排除了这一点,但这可能无法完成 直到Edm.Date在Gateway(Odata v4)中可用。

任何人在这里都有最佳做法?

谢谢

Matt

7条回答
Tong__Ming
2020-09-26 19:29 .采纳回答

好-如果您为出生日期定义了DatePicker,则以" a"解决方案开始:

 


 

在绑定OData属性的同时,我们使用change事件将属性手动更新为UTC偏移本地时区,如下所示:

 onDatePickerChange:function(oEvent){
//格式化日期以消除UTC问题
 var oDatePicker = oEvent.getSource();
 var oBinding = oDatePicker.getBinding(" dateValue");
 var oNewDate = oDatePicker.getDateValue();
 如果(oNewDate){
 var sPath = oBinding.getContext()。getPath()+"/" + oBinding.getPath();
 var oFormatDate = sap.ui.core.format.DateFormat.getDateTimeInstance({
 模式:" yyyy-MM-ddTKK:mm:ss"
 });
 oBinding.getModel()。setProperty(sPath,new Date(oFormatDate.format(oNewDate)));
 }
 } 

请注意,如果清除了DatePicker值,我们将让默认绑定将DateOfBirth的更新处理为空。

所有操作,虽然不理想,但这是建议的解决方案 我们在OData的v4上。

一周热门 更多>