1

我正在使用 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 上。请建议传递日期时间输入的正确方法。

4

1 回答 1

1

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

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

该错误意味着您必须通过合适的日期。如果您BAPI_FLIGHT_CHECKAVAILIBILITY使用相同的参数运行 BAPI,则会返回相同的错误。此 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>
于 2017-04-29T05:59:16.257 回答