通过HANA服务层获取文档行的批处理/序列/bin分配

2020-08-22 12:33发布

         点击此处--->   EasySAP.com群内免费提供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时,有没有办法告诉服务层填写这些数据?

         点击此处--->   EasySAP.com群内免费提供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时,有没有办法告诉服务层填写这些数据?

付费偷看设置
发送
4条回答
ZJXianG
1楼-- · 2020-08-22 13:27

泰兰,你好

在这里您找到了发现问题的原因。
序列号和批处理都是虚拟表。
服务层的数组查询基于物理表上的数据库SQL,因此无法应用 到上述表格。

但是,对于单元素查询,服务层在内部而不是在数据库SQL上在DI上实现它(并且这一层不支持使用filter,select,orderby ...)。 这样就可以获得SRNT和BTNT的内容。

您还可以对影响力门户网站提出改进意见:
https://www.sap.com/about/customer-involvement/influence-adopt.html

HTH,
Thiago。

歪着头看世界
2楼-- · 2020-08-22 13:04

Florian Pfeffer 您好,我已经用更多详细信息更新了问题。 问题是,当我将$ filter与DocNum或$ select一起用作OData GET请求的一部分时,我没有获得DocumentLines对象的SerialNumbers,BatchNumbers和DocumentLinesBinAllocations。

渐行渐远_HoldOn
3楼-- · 2020-08-22 13:19

您找到解决方案了吗? 我正面临着同样的问题。

派大星 ヾ
4楼-- · 2020-08-22 13:21

朱利安·洛萨诺(Julian Lozano) 遗憾的是,我还没有找到解决方案。 当我需要内容时,我忽略了$ select,而只是忽略了我不需要的数据。 这不是最佳选择,但至少可以奏效。

一周热门 更多>