在sapui5中显示来自create_stream方法的Odata错误消息

2020-08-30 16:18发布

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

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


大家好,

我无法在sapui5应用程序中显示服务器端消息。

我正在实现一个csv文件上传,以通过BAPI创建销售订单。 因此,我使用 sap.ui.FileUploader 并重新定义了方法/IWBEP/IF_MGW_APPL_SRV_RUNTIME〜CREATE_STREAM

编码以从bapi-call返回错误消息:

 data(lo_container)= mo_context-> get_message_container()。
 lo_container-> add_messages_from_bapi(
  出口
  it_bapi_messages = lt_return
  iv_determine_leading_msg = abap_true
  iv_add_to_response_header = abap_true

  )。
 

这些消息不会传输到我的应用程序。

当我在其他方法(例如,任何其他 get_entityset 方法)中执行相同的操作时,消息将返回并显示在应用程序中。

有人可以帮我吗?

此致

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

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


大家好,

我无法在sapui5应用程序中显示服务器端消息。

我正在实现一个csv文件上传,以通过BAPI创建销售订单。 因此,我使用 sap.ui.FileUploader 并重新定义了方法/IWBEP/IF_MGW_APPL_SRV_RUNTIME〜CREATE_STREAM

编码以从bapi-call返回错误消息:

 data(lo_container)= mo_context-> get_message_container()。
 lo_container-> add_messages_from_bapi(
  出口
  it_bapi_messages = lt_return
  iv_determine_leading_msg = abap_true
  iv_add_to_response_header = abap_true

  )。
 

这些消息不会传输到我的应用程序。

当我在其他方法(例如,任何其他 get_entityset 方法)中执行相同的操作时,消息将返回并显示在应用程序中。

有人可以帮我吗?

此致

付费偷看设置
发送
2条回答
hongfeng1314
1楼 · 2020-08-30 16:49.采纳回答

嗨,

在创建流中使用的实体中创建新属性'errormessage'。

并使用以下代码重新定义该实体的GET_ENTITY。

 DATA ls_converted_keys像er_entity。
 DATA lv_source_entity_set_name TYPE字符串。
 io_tech_request_context-> get_converted_keys(
           输入
             es_key_values = ls_converted_keys)。
  lv_source_entity_set_name = io_tech_request_context-> get_source_entity_set_name()。
 如果lv_source_entity_set_name ='EntitySet'并且
 lv_source_entity_set_name NE io_tech_request_context-> get_entity_set_name()。
 io_tech_request_context-> get_converted_source_keys(
       导入es_key_values = ls_converted_keys)。
 万一。
     er_entity-errormessage = ls_converted_keys-errormessage。

在创建流方法中,形成属性'errormessage'的密钥表。

然后使用键表和实体名称创建流调用GET_ENTITY,并将读取的响应发送到接口,代码如下。

创建对象lo_tech_read_request_context。

 *为读取操作创建密钥表
       ls_key-name ='错误消息'。
       ls_key-value = lv_msg_error。(您的错误消息在这里)
       如果ls_key-value不是INITIAL。
         将ls_key附加到lt_keys。
       万一。

 *将密钥表和实体集名称设置为请求上下文对象
       lo_tech_read_request_context-> set_keys(导入et_keys = lt_keys)。
       lv_entityset_name = io_tech_request_context-> get_entity_set_name()。
       lo_tech_read_request_context-> set_entityset_name(导入ev_entityset_name = lv_entityset_name)。
 *创建后调用读取
     /iwbep/if_mgw_appl_srv_runtime〜get_entity(
         出口
           iv_entity_name = iv_entity_name
           iv_entity_set_name = iv_entity_set_name
           iv_source_name = iv_source_name
           it_key_tab = it_key_tab
           io_tech_request_context = lo_tech_read_request_context
           it_navigation_path = it_navigation_path
         输入
           er_entity = ls_entity)。
 *将读取的响应发送到呼叫者界面
      ASSIGN ls_entity-> *至。
      copy_data_to_ref(导出is_data = 
        更改cr_data = er_entity)。
    ENDIF。

致谢,
维涅什

Nan4612
2楼-- · 2020-08-30 16:59

嗨维涅什,

感谢您的答复,工作成功!

此致

一周热门 更多>