You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从OData服务读取深度插入的子父层级子项数据?

解决方案:获取嵌套层级的子项数据

我看了你的问题,核心问题出在嵌套数据的读取层级逻辑错误,另外也需要确认OData关联配置是否正确。下面分两部分说明:

1. 修正读取代码的层级逻辑

你的Payload里,ITEMTOSERIALS是INVTOITEM的子集合(每个库存条目对应一组序列号数据),但你当前的代码直接从顶级的ls_deep中遍历ITEMTOSERIALS,这显然不符合数据结构的嵌套关系——它根本不在顶级层级,而是嵌套在每个INVTOITEM条目内部。

你需要把ITEMTOSERIALS的遍历逻辑放到INVTOITEM的循环内部,这样才能获取到对应条目的子项数据。修改后的代码示例如下:

CASE lv_entityset_name.
  WHEN 'INVENTORYSet'.
    io_data_provider->read_entry_data( IMPORTING es_data = ls_deep ).
    ls_inventory-iblnr = ls_deep-iblnr.
    ls_inventory-gjahr = ls_deep-gjahr.

    LOOP AT ls_deep-INVTODATE INTO ls_date.
      ls_dates-zldat = ls_date-zldat.
    ENDLOOP.

    LOOP AT ls_deep-INVTOITEM INTO ls_item.
      IF ls_item-entry_qnt EQ 0.
        ls_item-zero_count = 'X'.
      ELSE.
        ls_item-entry_qnt = ls_item-entry_qnt.
      ENDIF.
      MOVE-CORRESPONDING ls_item TO ls_items.
      APPEND ls_items TO lt_items.

      " 在这里处理当前INVTOITEM下的ITEMTOSERIALS
      LOOP AT ls_item-ITEMTOSERIALS INTO ls_serials.
        MOVE-CORRESPONDING ls_serials TO ls_serials1.
        APPEND ls_serials1 TO lt_serials.

        " 如果需要处理Serialno数组,再嵌套一层循环
        LOOP AT ls_serials-Serialno INTO ls_serial.
          " 这里可以单独处理每个序列号,比如存入另一个内表
          ls_single_serial-serialno = ls_serial-Serialno.
          APPEND ls_single_serial TO lt_single_serials.
        ENDLOOP.
      ENDLOOP.
    ENDLOOP.
ENDCASE.

2. 确认OData关联配置是否正确

除了代码逻辑,还要确保你的OData服务模型和数据提供者配置支持深度读取这个嵌套层级:

  • EDMX模型检查:在你的OData服务的EDMX文件中,INVTOITEM实体必须定义指向ITEMTOSERIALS的NavigationProperty,并且设置正确的Partner和Multiplicity属性。
  • Data Provider配置:在你的OData数据提供者类(比如继承自/IWBEP/CL_MGW_ABS_DATA的类)中,确保在处理深度插入时,允许扩展ITEMTOSERIALS导航属性。比如在CREATE_DEEP_ENTITY方法中,要正确解析嵌套的实体集合,或者在相关方法中配置允许读取关联的子实体。

额外注意点

你的Payload里Serialno是一个数组结构(每个ITEMTOSERIALS下有多个Serialno对象),所以如果需要单独处理每个序列号,还要在ITEMTOSERIALS的循环内部再嵌套一层遍历Serialno的逻辑,就像上面代码示例里的那样。

内容的提问来源于stack exchange,提问作者Pranita Jadhav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:14:01