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).