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

OData function imports do not work with Edm.DateTime format

我正在使用 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 调用此函数时,它没有 return 任何结果。在 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。请建议传递日期时间输入的正确方法。

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

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

错误意味着您必须传递一个合适的日期。如果您 运行 BAPI BAPI_FLIGHT_CHECKAVAILIBILITY 具有相同的参数,则会返回相同的错误。此 BAPI 从 SFLIGHTS2 视图中选择。对该视图进行了 where-use 并找到了关于演示系统的 SAPBC405_ARCS_3 报告,您可以列出可用的航班。这是 'UA' carrid 的第一行(修改了你的 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>