如何执行OData读取日期作为实体主键

问题描述 投票:0回答:1

我在调用OData读操作时使用的日期格式很困惑,其中参数在entityset括号中提到。如果您可以粘贴每个答案,那将会很棒

  1. 如果我们要在实体集参数中传递值,如何使用ODataModel的read()方法? var sPath ="/EMP_DETAILSSet(Empid='50160458'/*, ...*/)"; oBackEndModel.read(sPath, { success: this._fGetDetailsSuccess.bind(this), error: this._fBackEndInvocationError.bind(this) }); 这是遵循的方法吗?或者我们还有其他方法吗?
  2. 如何使用OData将日期设置为实体设置关键参数?请更正下面的代码片段(在运行时给出错误的请求错误),其中dBegDatedEndDate是JS标准日期对象。 var sPath ="/EMP_DETAILSSet(Empid='50160458',Begdate="+ dBegDate.toJSON() + ",Enddate=" + dEndDate.toJSON() + ",HAFId=' ')"; oBackEndModel.read(sPath, { success: this._fGetDetailsSuccess.bind(this), error: this._fBackEndInvocationError.bind(this) });
  3. 如何执行多个展开操作以及上面提到的实体集参数?请修复以下代码中的错误,因为它不适合我。 var sPath ="/EMP_DETAILSSet(Empid='50160458',Begdate="+ dBegDate.toJSON() + ",Enddate=" + dEndDate.toJSON() + ",HAFId=' ')"; oBackEndModel.read(sPath, { urlParameters: { $expand: "NAVTODETAIL,NAVTOPROFILE,NAVTOREPORTEES" }, success: this._fGetDetailsSuccess.bind(this), error: this._fBackEndInvocationError.bind(this) });

Further updates

我遵循了Sunil的建议。 sPath在运行时看起来如下:

"/EMP_DETAILSSet(Empid='50160458',Begdate=datetime'2014-03-11T14:49:52',Enddate=datetime'9999-12-31T14:49:52',HAFId=' ')"

当我尝试这个时,它给了我以下错误:

2018-06-13 10:56:31.872300发生以下问题:HTTP请求失败404,未找到,{“错误”:{“code”:“005056A509B11EE1B9A8FEC11C21D78E”,“message”:{“lang”:“en”,“值“:”未找到段'49:52'的资源,Enddate = datetime'9999-12-31T14:49:52',HAFId =''。“},”innererror“:{”transactionid“:”5B20F78A93457852E10000000ACD4014 “,”timestamp“:”20180613052610.2725590“,”Error_Resolution“:{”SAP_Transaction“:”在SAP Gateway集线器系统上运行事务/ IWFND / ERROR_LOG并搜索上面带有时间戳的条目以获取更多详细信息“,”SAP_Note“:”请参阅SAP Note 1797736用于错误分析...“}}}}

你知道为什么吗?

请注意,以下URL工作正常,并在从SAP Gateway Client执行时返回结果:/ sap / opu / odata / XXX / YYYY_SRV / EMP_DETAILSSet(Empid ='50160458',Begdate = datetime'2014-03-11T14:49: 52',Enddate = datetime'9999-12-31T14:49:52',HAFId ='')?$ expandNAVTODETAIL,NAVTOPROFILE,NAVTOREPORTEES&$ format = json

odata sapui5
1个回答
0
投票
  1. 首先要检查一下,SAP Netweaver网关中定义的primitive type是什么。最有可能的是,它将是qqxxswpoi。您可以使用Edm.DateTime服务电话获取此信息。
  2. OData具有$metdata的标准表示

Edm.DateTime

注意:datetime'yyyy-mm-ddThh:mm[:ss[.fffffff]]'和引用部分之间不允许有空格。 datetime不区分大小写

示例:datetime

如果它的datetime'2000-12-12T12:00'表示,

示例:JSON Format

它应该看起来像:

"FlightDate": "/Date(1354665600000)/"
© www.soinside.com 2019 - 2024. All rights reserved.