SAP Gateway - неожиданный текст для преобразования XML-ABAP

URL-вызов из шлюза

/sap/opu/odata/sap/ZMU_SHOP_MENU_SRV/ShopMenuSet?$expand=Menu/Menu_Section/Menu_Content/Menu_Item_Deal/Deal_Articles/Article_Modifier/Modifier_Class/Modifier_Group/Modifier_Options,Menu/Menu_Section/Menu_Content/Menu_Item_Deal/Prices,Menu/Menu_Section/Menu_Content/Article_Modifier/Modifier_Class/Modifier_Group/Modifier_Options.

Структуры DDIC для вышеуказанного были импортированы индивидуально в SAP Gateway Service Builder (SEGW) и связаны через ассоциации.

Это вызывает метод /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_EXPANDED_ENTITYSET в SAP.

 DATA: ls_shop_menu   TYPE zmu_s_shop_menu.

    APPEND 'MENU/MENU_SECTION/MENU_CONTENT/MENU_ITEM_DEAL/DEAL_ARTICLES/ARTICLE_MODIFIER/MODIFIER_CLASS/MODIFIER_GROUP/MODIFIER_OPTIONS' TO et_expanded_tech_clauses.
    APPEND 'MENU/MENU_SECTION/MENU_CONTENT/MENU_ITEM_DEAL/PRICES' TO et_expanded_tech_clauses.
    APPEND 'MENU/MENU_SECTION/MENU_CONTENT/ARTICLE_MODIFIER/MODIFIER_CLASS/MODIFIER_GROUP/MODIFIER_OPTIONS' TO et_expanded_tech_clauses.
    CALL METHOD zmu_menu_ctrl=>get_menu_for_shop
      EXPORTING
        iv_shop            = '0005'
        iv_date            = sy-datum
        iv_price_condition = ''
        iv_price_list_type = ''
      IMPORTING
        rs_shop            = ls_shop_menu.

    copy_data_to_ref(
         EXPORTING
         is_data = ls_shop_menu
         CHANGING
         cr_data = er_entityset
         ).

ER_ENTITYSET заполнен нормально.

Ошибка 500 возникает в MOVE_CORRESPONDING (/IWBEP/CL_MGW_DATA_HELPER) - неожиданный текст для преобразования XML-ABAP

lo_xml_reader = cl_sxml_string_reader=>create( lv_xdoc ).
    lo_xml_reader->next_node( ).
    CALL TRANSFORMATION /iwbep/st_any_data
      SOURCE XML lo_xml_reader
      RESULT data = <ls_target_data>.

Есть ли у кого-нибудь совет о том, как правильно настроить вложенную структуру на стороне SEGW, которая может обрабатывать переданную структуру?

Понятия не имею, где я ошибаюсь.

1 ответ

поскольку вы находитесь в методе набора сущностей, вы должны передать тип таблицы в copy_data_to_ref. Вместо ls_shop_menu передайте lt_shop_menu, где lt_shop_menu является табличным типом ls_shop_menu. то есть

добавить ls_shop_menu к lt_shop_menu.

copy_data_to_ref( ЭКСПОРТ is_data = lt_shop_menu ИЗМЕНЕНИЕ cr_data = er_entityset).

Другие вопросы по тегам