Мы разрабатываем приложение SAP Fiori для использования на Launchpad и в качестве автономного гибридного приложения, а также с использованием SAP SDK и его подключаемых модулей Kapsel.Одной из проблем, с которыми мы сталкиваемся в настоящее время, является обработка сообщений ODATA.На шлюзе мы используем диспетчер сообщений для добавления дополнительной информации к ответу.
" ABAP snippet, random Gateway entity method
[...]
DATA(lo_message_container) = me->mo_context->get_message_container( ).
lo_message_container->add_message(
iv_msg_type = /iwbep/cl_cos_logger=>warning
iv_msg_number = '123'
iv_msg_id = 'ZFOO'
).
" optional, only used for 'true' errors
RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception
EXPORTING
message_container = lo_message_container.
В приложении Fiori мы можем напрямую получить доступ к этим данным из диспетчера сообщений.Данные могут быть применены к элементу управления MessageView.
// Fiori part (Desktop, online)
var aMessageData = sap.ui.getCore().getMessageManager().getMessageModel().getData();
Однако наше автономное приложение всегда имеет пустую модель сообщения.После синхронизации или сброса модель сообщения всегда пуста - даже после запуска методов генерации сообщений в серверной части.Единственный способ получить какое-то сообщение - это вызвать исключение / iwbep / cx_mgw_busi_exception и передать контейнер сообщений.Сообщения можно найти в разобранном состоянии в объекте / ErrorArchive и прочитать для дальнейшего использования.
// Hybrid App part, offline, after sync and flush
this.getModel().read("/ErrorArchive", { success: .... })
Этот подход ограничивает нас только отрицательными сообщениями, «достойными исключений».Мы также должны дважды закодировать некоторые части нашего приложения (приложение Desktop против Offlne).
Итак: существует ли «правильный» доступ к этим сообщениям после автономной синхронизации и сброса?