S4sdk 使用S/4HANA SDK使用SalesOrderItem API
我正在尝试使用获取所有SalesOrderItems com.sap.cloud.sdk.s4hana.datamodel.odata.services.DefaultSalesOrderService 由S/4HANA SDK提供的类,但响应始终为空列表,在日志中我看到此错误:S4sdk 使用S/4HANA SDK使用SalesOrderItem API,s4sdk,S4sdk,我正在尝试使用获取所有SalesOrderItems com.sap.cloud.sdk.s4hana.datamodel.odata.services.DefaultSalesOrderService 由S/4HANA SDK提供的类,但响应始终为空列表,在日志中我看到此错误: c.s.c.s.odatav2.connectivity.ODataQuery : Failed to convert response into ODataFeed: Illegal argument for me
c.s.c.s.odatav2.connectivity.ODataQuery : Failed to convert response into ODataFeed: Illegal argument for method call with message 'to_ValueAddedService'.
提及:SDK的最新版本为2.9.1,S/4HANA系统的版本为1902
这是一个响应示例:
{
"d":{
"results":[
{
"__metadata":{
"id":"/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrderItem(SalesOrder='1',SalesOrderItem='10')",
"uri":"/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrderItem(SalesOrder='1',SalesOrderItem='10')",
"type":"API_SALES_ORDER_SRV.A_SalesOrderItemType"
},
"SalesOrder":"1",
"SalesOrderItem":"10",
"HigherLevelItem":"0",
"SalesOrderItemCategory":"",
"SalesOrderItemText":"Trading Goods Testing",
"PurchaseOrderByCustomer":"test 1",
"Material":"HAWA1",
"MaterialByCustomer":"",
"PricingDate":"\/Date(1547769600000)\/",
"RequestedQuantity":"10",
"RequestedQuantityUnit":"PC",
"ItemGrossWeight":"1.000",
"ItemNetWeight":"1.000",
"ItemWeightUnit":"KG",
"ItemVolume":"0.000",
"ItemVolumeUnit":"",
"TransactionCurrency":"",
"NetAmount":"1000000",
"MaterialGroup":"A001",
"MaterialPricingGroup":"",
"Batch":"",
"ProductionPlant":"",
"StorageLocation":"",
"DeliveryGroup":"0",
"ShippingPoint":"",
"ShippingType":"",
"DeliveryPriority":"1",
"IncotermsClassification":"",
"IncotermsTransferLocation":"",
"IncotermsLocation1":"",
"IncotermsLocation2":"",
"CustomerPaymentTerms":"",
"SalesDocumentRjcnReason":"",
"ItemBillingBlockReason":"",
"WBSElement":"",
"ProfitCenter":"",
"ReferenceSDDocument":"",
"ReferenceSDDocumentItem":"0",
"SDProcessStatus":"A",
"DeliveryStatus":"A",
"OrderRelatedBillingStatus":"",
"YY1_DownPaymentReferen_SDI":"1400000013",
"to_Partner":{
"__deferred":{
"uri":"/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrderItem(SalesOrder='1',SalesOrderItem='10')/to_Partner"
}
},
"to_PricingElement":{
"__deferred":{
"uri":"/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrderItem(SalesOrder='1',SalesOrderItem='10')/to_PricingElement"
}
},
"to_SalesOrder":{
"__deferred":{
"uri":"/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrderItem(SalesOrder='1',SalesOrderItem='10')/to_SalesOrder"
}
},
"to_ScheduleLine":{
"__deferred":{
"uri":"/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrderItem(SalesOrder='1',SalesOrderItem='10')/to_ScheduleLine"
}
},
"to_Text":{
"__deferred":{
"uri":"/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrderItem(SalesOrder='1',SalesOrderItem='10')/to_Text"
}
},
"to_ValueAddedService":{
"__deferred":{
"uri":"/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrderItem(SalesOrder='1',SalesOrderItem='10')/to_ValueAddedService"
}
}
}
]
}
}
在执行请求之前使用.select()可以绕过此问题,但这不是一个长期解决方案。这需要在SDK内部修复。这是SAP S/4HANA云端的问题。
to_ValueAddedService
导航属性未在$metadata
中声明,但是它出现在A_SalesOrderItem
OData EDM实体上,并且不起作用。SAP S/4HANA Cloud的同事已经在调查这起事件。请添加您的代码!最新版本实际上是2.10.0,你能试试这个吗?底层API可能在1902年发生了更改。@GetMapping(“/items”)公共列表salesOrderItems()抛出ODataException{return new DefaultSalesOrderService().getAllSalesOrderItem().execute(new-ErpConfigContext(SALES_ORDER_DESTINATION_NAME));}我已将版本更改为2.10.0,但问题仍然存在。我发现使用select可以绕过此错误。您能否提供针对/sap/opu/odata/sap/API\u SALES\u ORDER\u SRV/a\u SALES ORDER?format=json
(或/sap/opu/odata/sap/API\u SALES\u ORDER\u SRV/a\u SALES ORDER(“”)的请求输出,当然可以删除任何敏感数据?由于某种原因,返回的json格式似乎不正确。通常,所提到的错误消息未能将响应转换为ODataFeed:带有消息的方法调用参数非法…
表明OData API的元数据与您使用的SDK版本不对应。你能用最新的再试一次吗?在撰写本文时,2.11.1是最新版本。2.12.0可能很快就会发布。请尝试使用最新版本,并让我们知道这是否解决了您的问题(不使用解决方法)。