我正在使用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中发生这种情况。请建议传递日期时间输入的正确方法。
答案 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>