OData SAP函数导入不适用于Edm.DateTime格式

时间:2017-04-27 14:56:15

标签: datetime odata sap

我正在使用SAP RMTSAMPLEFLIGHT。它有函数导入,需要DateTime作为输入参数

<FunctionImport Name="CheckFlightAvailability" ReturnType="RMTSAMPLEFLIGHT.FlightAvailability" m:HttpMethod="GET" sap:label="Check availability of flight" sap:action-for="RMTSAMPLEFLIGHT.Flight">
<Parameter Name="airlineid" Type="Edm.String" Mode="In" MaxLength="3"/>
<Parameter Name="connectionid" Type="Edm.String" Mode="In" MaxLength="4"/>
<Parameter Name="flightdate" Type="Edm.DateTime" Mode="In" Precision="0"/>
</FunctionImport>

当我尝试使用以下URL调用此函数时,它不会返回任何结果。在Postman中,我得到了BadRequest 400代码。

http://sapes4.sapdevcenter.com/sap/opu/odata/iwfnd/RMTSAMPLEFLIGHT/CheckFlightAvailability?airlineid= 'AA' 和;的ConnectionId = '0017' 和; flightdate = datetime'2016-11-23T00:00:00'

仅在具有DateTime输入的FunctionImports中发生这种情况。请建议传递日期时间输入的正确方法。

1 个答案:

答案 0 :(得分:0)

虽然HTTP状态为400,但URL会返回有效响应(使用EN语言登录演示系统)。返回的XML包含有关错误的更多信息:

<code>BC_IBF/055</code>
<message xml:lang="en">Flight AA 0017 20161123 does not exist</message>

错误意味着您必须通过合适的日期。如果您使用相同的参数运行BAPI BAPI_FLIGHT_CHECKAVAILIBILITY,则会返回相同的错误。此BAPI从SFLIGHTS2视图中进行选择。对于此视图的使用位置以及发现SAPBC405_ARCS_3演示系统的报告,您可以列出可用的航班。这是'UA'carid的第一行(修改了您的URL):

http://sapes4.sapdevcenter.com/sap/opu/odata/iwfnd/RMTSAMPLEFLIGHT/CheckFlightAvailability?airlineid='UA'&connectionid='0941'&flightdate=datetime'2016-09-29T00:00:00'

回复是:

<d:CheckFlightAvailability xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:type="RMTSAMPLEFLIGHT.FlightAvailability">
    <d:ECONOMAX>220</d:ECONOMAX>
    <d:ECONOFREE>8</d:ECONOFREE>
    <d:BUSINMAX>22</d:BUSINMAX>
    <d:BUSINFREE>2</d:BUSINFREE>
    <d:FIRSTMAX>10</d:FIRSTMAX>
    <d:FIRSTFREE>0</d:FIRSTFREE>
</d:CheckFlightAvailability>