UI5/BOPF-函数导入调用-批处理模式

2020-09-16 06:40发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

在批处理模式下调用时,我遇到函数导入调用的问题。 我在UI上需要更新一些字段的几个节点。 让我们假设我有5个节点和一个CHANGE_NODE动作。 该动作被称为5次正确且符合预期。 在动作中,我设置了一条消息-5次不同。 我希望它们对于响应头中的所有响应都将作为SAP-MESSAGE属性可见。 不幸的是,当批处理结束时,成功函数RESONSE参数包含5个响应,但只有1个可以看到SAP-MESSAGE。 我已经尝试使用不同的LIFETIME/SEVERITY等消息,但是没有运气。

第二个问题是-当我进行批处理并且我对第二个节点执行CHENAGE_NODE操作,并且将密钥添加到失败的密钥表中时,整个BATCH都会中断。 我假设,只有当前操作会失败,并且框架将继续执行下一个节点的操作。 然后,在该批次的ODATA响应中,我仍将有5个响应-成功和失败。 现在,该批处理成功结束,只有2个响应-一个成功和一个失败。 框架未处理接下来的3个节点的操作。 我不认为在批处理OData调用中有多个节点实例的情况下这是正确的行为。

有人遇到这些问题吗?

谢谢!

Jakub

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

在批处理模式下调用时,我遇到函数导入调用的问题。 我在UI上需要更新一些字段的几个节点。 让我们假设我有5个节点和一个CHANGE_NODE动作。 该动作被称为5次正确且符合预期。 在动作中,我设置了一条消息-5次不同。 我希望它们对于响应头中的所有响应都将作为SAP-MESSAGE属性可见。 不幸的是,当批处理结束时,成功函数RESONSE参数包含5个响应,但只有1个可以看到SAP-MESSAGE。 我已经尝试使用不同的LIFETIME/SEVERITY等消息,但是没有运气。

第二个问题是-当我进行批处理并且我对第二个节点执行CHENAGE_NODE操作,并且将密钥添加到失败的密钥表中时,整个BATCH都会中断。 我假设,只有当前操作会失败,并且框架将继续执行下一个节点的操作。 然后,在该批次的ODATA响应中,我仍将有5个响应-成功和失败。 现在,该批处理成功结束,只有2个响应-一个成功和一个失败。 框架未处理接下来的3个节点的操作。 我不认为在批处理OData调用中有多个节点实例的情况下这是正确的行为。

有人遇到这些问题吗?

谢谢!

Jakub

付费偷看设置
发送
1条回答
SKY徐
1楼 · 2020-09-16 06:58.采纳回答

此问题的解决方法是创建消息类型的对象实例:

 CLASS-DATA:mo_message类型参考/bobf/if_frw_message。

,并在此处保留每个批处理请求调用的所有消息。 由于将调用同一个类,因此没有问题。

现在需要从事务管理器将消息放入消息处理程序中:

 DATA(lo_txn_mngr)=/bobf/cl_sadl_transaction_mngr => get()。
 lo_container_msg?= lo_txn_mngr-> if_sadl_transaction_manager〜get_message_handler()。
 

请注意,每次(每次批量请求)所有消息都将被放置在那里。 因此,如果我们有3个批处理请求:

第一批请求-> 1条消息
 第二批请求->第一和第二批请求的消息,
 第三批请求->将第一,第二和最后第三批请求的消息放入message容器中。  

您不能将所有消息从操作界面放入EO_MESSAGE,因为您将获得转储。 在这种情况下,所有消息都将映射到所有UI5批处理调用响应。 这对我有用,尽管不是我想要的。 此替代方法背后​​的原因是,批处理请求是在LOOP中处理的,并且在每次交互中都会清除消息容器,因此消息仅映射到最后一个批处理请求的响应。

干杯!

一周热门 更多>