Hi all,
I am trying to implement a multi level expand (EntityA$expand=EntityB/EntityC) but it is not working for the entity C - it is returning blank).
I can see in debug that the entityset, from the expand method, is being overwritten by a 5 column entity set from standard SAP (only showing entity A and ToItems (Entity B)).
My expand logic is filling the data correctly.
Results:
URL:
../TrolleyHeaderSet?$expand=ToItems/ToMaterials
SEGW:
Association:
Debug:
Expand code:
CASE iv_entity_set_name. WHEN 'TrolleyHeaderSet'. DATA: "lt_expand TYPE STANDARD TABLE OF zswm_gw_trolley_expand, lt_filters TYPE /iwbep/t_mgw_select_option, ls_filter TYPE /iwbep/s_mgw_select_option, lv_filter TYPE zewm_zone. lv_expand_tech_clause = io_tech_request_context->get_expand( ). TRANSLATE lv_expand_tech_clause TO UPPER CASE. DATA: BEGIN OF ty_expand. INCLUDE TYPE zcl_zgw_picking_soluti_mpc_ext=>ts_trolleyheader. DATA: toitems TYPE zcl_zgw_picking_soluti_mpc_ext=>tt_trolleyitems, tomaterials TYPE zcl_zgw_picking_soluti_mpc_ext=>tt_trolleymaterials, END OF ty_expand. DATA: lt_trolleys TYPE STANDARD TABLE OF zswm_trolley_ctrl, lt_trolley_header TYPE zcl_zgw_picking_soluti_mpc_ext=>tt_trolleyheader, lt_trolley_item TYPE zcl_zgw_picking_soluti_mpc_ext=>tt_trolleyitems, lt_trolley_mats TYPE zcl_zgw_picking_soluti_mpc_ext=>tt_trolleymaterials, lt_expand LIKE STANDARD TABLE OF ty_expand. DATA: ls_trolley_header TYPE zcl_zgw_picking_soluti_mpc_ext=>ts_trolleyheader, ls_trolley_item TYPE zcl_zgw_picking_soluti_mpc_ext=>ts_trolleyitems, ls_materials TYPE zcl_zgw_picking_soluti_mpc_ext=>ts_trolleymaterials, ls_expand LIKE LINE OF lt_expand. SELECT * FROM ztwm_trolleyctrl INTO CORRESPONDING FIELDS OF TABLE lt_trolleys. IF sy-subrc <> 0. RETURN. ENDIF. LOOP AT lt_trolleys ASSIGNING FIELD-SYMBOL(<fs_trolleys>). MOVE-CORRESPONDING <fs_trolleys> TO ls_trolley_header. APPEND ls_trolley_header TO lt_trolley_header. MOVE-CORRESPONDING <fs_trolleys> TO ls_trolley_item. APPEND ls_trolley_item TO lt_trolley_item. ENDLOOP. lt_trolley_mats = zcl_wm_picking_solution=>get_materials( ). SORT lt_trolley_header BY trolley_type ASCENDING. SORT lt_trolley_item BY trolley_id ASCENDING trolley_type ASCENDING. SORT lt_trolley_mats BY trolley_id ASCENDING trolley_type ASCENDING material ASCENDING. DELETE ADJACENT DUPLICATES FROM lt_trolley_header. LOOP AT lt_trolley_header ASSIGNING FIELD-SYMBOL(<fs_header>). MOVE-CORRESPONDING <fs_header> TO ls_expand. LOOP AT lt_trolley_item ASSIGNING FIELD-SYMBOL(<fs_item>) WHERE trolley_type = <fs_header>-trolley_type. APPEND <fs_item> TO ls_expand-toitems. ENDLOOP. LOOP AT lt_trolley_mats ASSIGNING FIELD-SYMBOL(<fs_material>) WHERE trolley_type = <fs_header>-trolley_type. APPEND <fs_material> TO ls_expand-tomaterials. ENDLOOP. APPEND ls_expand TO lt_expand. CLEAR ls_expand. ENDLOOP. WHEN OTHERS. RETURN. ENDCASE. copy_data_to_ref( EXPORTING is_data = lt_expand CHANGING cr_data = er_entityset ). APPEND lv_expand_tech_clause TO et_expanded_tech_clauses.