点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
对于HANA服务层,当我请求包含批号,序列号或箱位置分配的文档时,结果中没有收到这些文件。 DocumentLines JSON对象的" BatchNumbers"," SerialNumbers"和" DocumentLinesBinAllocations"节点只是空数组。
将来会取消此限制吗? 在开发具有仓库管理功能的应用程序时,这带来了很大的麻烦。
编辑:我被要求澄清,所以这里有一个例子。 在遍历此示例的过程中,我发现了有关我的问题的更多细节。
首先,我使用以下HTTP请求创建了"购买交货单"文档:
POST/b1s/v1/PurchaseDeliveryNotes { " CardCode":" S10000", " DocumentLines":[ { " ItemCode":" A00001", " WarehouseCode":" 05", "数量":4 " DocumentLinesBinAllocations":[ { " BinAbsEntry":2, "数量":2 }, { " BinAbsEntry":26, "数量":2 } ] }, { " ItemCode":" A00006", " WarehouseCode":" 05", "数量":2 "序列号": [ { " InternalSerialNumber":" SN0013" }, { " InternalSerialNumber":" SN0014" } ], " DocumentLinesBinAllocations":[ { " SerialAndBatchNumbersBaseLine":0, " BinAbsEntry":2, "数量":1 }, { " SerialAndBatchNumbersBaseLine":1 " BinAbsEntry":26, "数量":1 } ] }, { " ItemCode":" B10000", " WarehouseCode":" 05", "数量":10, "批号":[ { " BatchNumber":" CH0001", "数量":4 }, { " BatchNumber":" CH0002", "数量":6 } ], " DocumentLinesBinAllocations":[ { " SerialAndBatchNumbersBaseLine":0, " BinAbsEntry":2, "数量":2 }, { " SerialAndBatchNumbersBaseLine":0, " BinAbsEntry":3, "数量":2 }, { " SerialAndBatchNumbersBaseLine":1 " BinAbsEntry":4, "数量":3 }, { " SerialAndBatchNumbersBaseLine":1 " BinAbsEntry":5 "数量":3 } ] } ] }
文档已创建,并具有 DocEntry 493 和 DocNum 481 。
现在,我可以通过" GET/b1s/v1/PurchaseDeliveryNotes(493)"进行请求。 运行此请求时,可以正确获取有关文档的所有信息,包括DocumentLines内部的SerialNumbers,BatchNumbers和DocumentLinesBinAllocations,就像在POST请求中发送它们一样。
但是,如果我运行以下请求:
获取/b1s/v1/PurchaseDeliveryNotes?$ filter = DocNum eq 481&select = DocumentLines
然后我得到这样的不完整数据:
{ " odata.metadata":" https://192.168.112.99:50000/b1s/v1/$metadata#PurchaseDeliveryNotes", "值":[ { " DocumentLines":[ { " LineNum":0, " ItemCode":" A00001", " ItemDescription":" J.B. Multifunktionsdrucker 1420", "数量":4.0, (...大量不需要的数据...) "序列号": [], "批号":[], " CCDNumbers":[], " DocumentLinesBinAllocations":[] }, { " LineNum":1 " ItemCode":" A00006", " ItemDescription":" Rainbow 1200 Laserdrucker", "数量":2.0, (...大量不需要的数据...) "序列号": [], "批号":[], " CCDNumbers":[], " DocumentLinesBinAllocations":[] }, { " LineNum":2 " ItemCode":" B10000", " ItemDescription":" Etikettendrucker", "数量":10.0, (...大量不需要的数据...) "序列号": [], "批号":[], " CCDNumbers":[], " DocumentLinesBinAllocations":[] } ] } ] }
如您所见,序列号,批号和DocumentLinesBinAllocations为" []"(空数组),而不包含数据。
即使我在GET请求中使用$ filter和$ select时,有没有办法告诉服务层填写这些数据?
泰兰,你好
在这里您找到了发现问题的原因。
序列号和批处理都是虚拟表。
服务层的数组查询基于物理表上的数据库SQL,因此无法应用 到上述表格。
但是,对于单元素查询,服务层在内部而不是在数据库SQL上在DI上实现它(并且这一层不支持使用filter,select,orderby ...)。 这样就可以获得SRNT和BTNT的内容。
您还可以对影响力门户网站提出改进意见:
https://www.sap.com/about/customer-involvement/influence-adopt.html
HTH,
Thiago。
Florian Pfeffer 您好,我已经用更多详细信息更新了问题。 问题是,当我将$ filter与DocNum或$ select一起用作OData GET请求的一部分时,我没有获得DocumentLines对象的SerialNumbers,BatchNumbers和DocumentLinesBinAllocations。
您找到解决方案了吗? 我正面临着同样的问题。
朱利安·洛萨诺(Julian Lozano) 遗憾的是,我还没有找到解决方案。 当我需要内容时,我忽略了$ select,而只是忽略了我不需要的数据。 这不是最佳选择,但至少可以奏效。
一周热门 更多>