Как получить доступ к сообщениям SAP OData в автономном приложении Kapsel? - PullRequest
0 голосов
/ 28 января 2019

Мы разрабатываем приложение 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).

Итак: существует ли «правильный» доступ к этим сообщениям после автономной синхронизации и сброса?

1 Ответ

0 голосов
/ 01 февраля 2019

Для анализа проблемы вы можете использовать инструмент ILOData, показанный в этом блоге: Шаг за шагом с помощью SAP Cloud Platform SDK для Android - Часть 6c - Использование ILOData

ПримечаниеILOData является частью Kapsel SDK, поэтому, хотя этот блог был частью серии SDK для облачной платформы SAP для Android, он также применим к приложениям Kapsel.ILOData - это инструмент, основанный на командной строке, который позволяет выполнять запросы и запросы OData к автономному хранилищу.Он функционирует как автономный клиент OData, без необходимости приложения.Таким образом, это хороший инструмент для тестирования данных из серверной системы, а также для проверки поведения приложения.Если у клиента есть проблема с некоторыми записями на его устройстве, автономное хранилище с устройства можно получить с помощью метода sendStore, а затем ILOData можно использовать для запроса базы данных.

Этот блог о KapselТакже может быть полезен подключаемый модуль OData .

...