我们正在开发一个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: .... })
此方法将我们限制为否定的,“值得拥有的例外”消息。我们还必须对应用程序的某些部分进行两次编码(台式机与Offlne应用程序)。
因此:离线同步和刷新后,是否有“适当的”权限来访问这些消息?
答案 0 :(得分:0)
要分析问题,可以使用此博客中所示的工具ILOData: Step by Step with the SAP Cloud Platform SDK for Android — Part 6c — Using ILOData
请注意,ILOData是Kapsel SDK的一部分,因此,尽管以上博客是适用于Android的SAP Cloud Platform SDK系列文章的一部分,但它也适用于Kapsel应用程序。 ILOData是基于命令行的工具,使您可以对脱机存储执行OData请求和查询。 它充当离线OData客户端,而无需应用程序。 因此,它是测试后端系统数据以及验证应用行为的好工具。 如果客户端的设备上的某些条目存在问题,则可以使用sendStore方法检索设备上的脱机存储,然后使用ILOData来查询数据库。