代码之家  ›  专栏  ›  技术社区  ›  Natalie Perret

OData 2-SAP S4/Hana:如何选择和筛选嵌套属性/阵列?

  •  0
  • Natalie Perret  · 技术社区  · 4 年前

    嗨,我正在使用一个API(SAP、S4/Hana) OData 2 我试图在实体中获得一组字段,这些字段与应用于某些嵌套属性的过滤器相匹配。

    例如,如果我正在做

    GET https://my-base-url.com/http/purchaseOrderDL?$top=2&$skip=0
    

    然后我得到:

    "<YY1_PurchaseOrder_DL>
      <YY1_PurchaseOrder_Header>
        <YY1_Campaign_PDH></YY1_Campaign_PDH>
        <YY1_Deal_PDH></YY1_Deal_PDH>
        <YY1_ExternalPONumber_PDH></YY1_ExternalPONumber_PDH>
        <Supplier>12345</Supplier>
        <SupplierName>TEST MIGRATION TEST MIGRATION 02</SupplierName>
        <CompanyCode>FR02</CompanyCode>
        <PurchaseOrder>4500000000</PurchaseOrder>
        <LastChangeDateTime>2018-08-16T14:03:18.517</LastChangeDateTime>
        <YY1_PurchaseOrder_Items>
          <PurchaseOrderItem>00010</PurchaseOrderItem>
          <NetPriceAmount>10.00</NetPriceAmount>
          <MaterialGroup>00</MaterialGroup>
          <MaterialGroupName>Non-Sto Mat. w.o ID</MaterialGroupName>
          <PurchasingGroup>001</PurchasingGroup>
          <PurchasingGroupName>Post Sale</PurchasingGroupName>
          <CreationDate>2018-08-16T00:00:00.000</CreationDate>
          <PurchaseOrderDate>2018-08-16T00:00:00.000</PurchaseOrderDate>
          <Plant>00</Plant>
          <PlantName>Plant 1 FR</PlantName>
          <YY1_PurchaseOrderUUID_PDH></YY1_PurchaseOrderUUID_PDH>
          <DocumentCurrency>EUR</DocumentCurrency>
        </YY1_PurchaseOrder_Items>
      </YY1_PurchaseOrder_Header>
      <YY1_PurchaseOrder_Header>
        <YY1_Campaign_PDH></YY1_Campaign_PDH>
        <YY1_Deal_PDH></YY1_Deal_PDH>
        <YY1_ExternalPONumber_PDH></YY1_ExternalPONumber_PDH>
        <Supplier>12345</Supplier>
        <SupplierName>TEST MIGRATION TEST MIGRATION 02</SupplierName>
        <CompanyCode>FR99</CompanyCode>
        <PurchaseOrder>4500000001</PurchaseOrder>
        <LastChangeDateTime>2018-08-16T14:45:55.516</LastChangeDateTime>
        <YY1_PurchaseOrder_Items>
          <PurchaseOrderItem>00020</PurchaseOrderItem>
          <NetPriceAmount>20.00</NetPriceAmount>
          <MaterialGroup>00</MaterialGroup>
          <MaterialGroupName>Non-Sto Mat. w.o ID</MaterialGroupName>
          <PurchasingGroup>001</PurchasingGroup>
          <PurchasingGroupName>Post Sale</PurchasingGroupName>
          <CreationDate>2018-08-21T00:00:00.000</CreationDate>
          <PurchaseOrderDate>2018-08-21T00:00:00.000</PurchaseOrderDate>
          <Plant>FR02</Plant>
          <PlantName>ENTERTAIN. (PLT)</PlantName>
          <YY1_PurchaseOrderUUID_PDH></YY1_PurchaseOrderUUID_PDH>
          <DocumentCurrency>EUR</DocumentCurrency>
        </YY1_PurchaseOrder_Items>
        <YY1_PurchaseOrder_Items>
          <PurchaseOrderItem>00030</PurchaseOrderItem>
          <NetPriceAmount>25.00</NetPriceAmount>
          <MaterialGroup>00</MaterialGroup>
          <MaterialGroupName>Non-Sto Mat. w.o ID</MaterialGroupName>
          <PurchasingGroup>001</PurchasingGroup>
          <PurchasingGroupName>Post Sale</PurchasingGroupName>
          <CreationDate>2018-08-21T00:00:00.000</CreationDate>
          <PurchaseOrderDate>2018-08-21T00:00:00.000</PurchaseOrderDate>
          <Plant>FR02</Plant>
          <PlantName>ENTERTAIN. (PLT)</PlantName>
          <YY1_PurchaseOrderUUID_PDH></YY1_PurchaseOrderUUID_PDH>
          <DocumentCurrency>EUR</DocumentCurrency>
        </YY1_PurchaseOrder_Items>
        <YY1_PurchaseOrder_Items>
          <PurchaseOrderItem>00010</PurchaseOrderItem>
          <NetPriceAmount>15.00</NetPriceAmount>
          <MaterialGroup>00</MaterialGroup>
          <MaterialGroupName>Non-Sto Mat. w.o ID</MaterialGroupName>
          <PurchasingGroup>001</PurchasingGroup>
          <PurchasingGroupName>Post Sale</PurchasingGroupName>
          <CreationDate>2018-08-21T00:00:00.000</CreationDate>
          <PurchaseOrderDate>2018-08-21T00:00:00.000</PurchaseOrderDate>
          <Plant>FR02</Plant>
          <PlantName>ENTERTAIN. (PLT)</PlantName>
          <YY1_PurchaseOrderUUID_PDH></YY1_PurchaseOrderUUID_PDH>
          <DocumentCurrency>EUR</DocumentCurrency>
        </YY1_PurchaseOrder_Items>
      </YY1_PurchaseOrder_Header>
    </YY1_PurchaseOrder_DL>"
    

    我设法筛选和选择了位于 <YY1_PurchaseOrder_Header> ,例如:

    GET https://my-base-url.com/http/purchaseOrderDL?$top=2&$skip=0&$select=PurchaseOrder&$filter=PurchaseOrder eq '4500000004'
    

    我得到:

    <YY1_PurchaseOrder_DL>
      <YY1_PurchaseOrder_DLType>
        <PurchaseOrder>4500000004</PurchaseOrder>
      </YY1_PurchaseOrder_DLType>
    </YY1_PurchaseOrder_DL>
    

    这很有效,但我真的很惊讶,因为我能看到 YY1_PurchaseOrder_DLType 我以前在选择所有字段时看不到的级别。

    我的问题是,如果我想选择和/或过滤看起来像“数组/集合”的字段: YY1_PurchaseOrder_Items

    例如:

    GET https://my-base-url.com/http/purchaseOrderDL?$top=2&$skip=0&$select=YY1_PurchaseOrder_Items
    

    但这不会带来任何回报。

    我已经检查了其他答案:

    浏览了一遍 OData 2 documentation 和 some SAP bits ,但到目前为止,还没有什么结果。

    0 回复  |  直到 4 年前
    推荐文章