Во-первых, основной журнал GW находится в /IWFND/ERROR_LOG
tcode. Он содержит как системные, так и пользовательские ошибки шлюза и выглядит так:
Общий подход к ведению журнала ошибок в SAP Gateway:
- Поместите свое собственное сообщение об ошибке и вызовите бизнес-исключение в методе проверки параметров JSON
Это делается при получении входных параметров, это может быть метод GetEntity
или CreateEntity
класса MPC_EXT. Когда мы говорим о создании заказа, вероятно, это будет CreateEntity
, и там вы можете проанализировать структуру строки JSON и проверить ее. Анализ JSON выходит за рамки этого вопроса.
- При обнаружении ошибок будет запущено исключение, которое будет отображаться как в журнале, так и в консоли браузера.
В шлюзе есть два основных типа исключений: /iwbep/cx_mgw_busi_exception
и /iwbep/cx_mgw_tech_exception
, но, поскольку мы хотим внедрить собственную логику, наш выбор - первый.
Общий подход к реализации обработки исключений:
IF json_invalid = abap_true.
DATA(lo_message_container) = me->mo_context->get_message_container( ).
lo_message_container->add_message( iv_msg_type = /iwbep/cl_cos_logger=>error
iv_msg_number = '100'
iv_msg_id = 'ZJSO'
iv_add_to_response_header = abap_true
).
RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception
EXPORTING
message_container = lo_message_container.
Важно: не пропустите параметр iv_add_to_response_header = abap_true
при добавлении сообщения, таким образом вы сможете читать сообщения об ошибках прямо в ответ, не просматривая логи.
Поскольку ваше бизнес-требование заключается в создании заказа из JSON, возможно, вам понадобится метод
add_messages_from_bapi
:
lo_message->add_messages_from_bapi( it_bapi_messages = lt_return_msg ).
он использует эту точную структуру BAPIRET2, полученную в результате создания вашего заказа BAPI.
Наконец, после того, как все сделано, стоит отследить полезную нагрузку через /IWFND/TRACE
, чтобы проверить, какая полезная нагрузка поступает во внешний интерфейс.
person
Suncatcher
schedule
17.06.2020