即使没有新条目,OData成功消息?

问题描述 投票:1回答:1

我有一个SAPUI5应用程序,它部署到ABAP服务器并可通过Fiori Launchpad访问。我使用这个应用程序在Hybris Marketing中创建一个新的交互(OData服务CUAN_IMPORT_SRV)。我的问题是,即使OData调用没有创建新条目(因为这样的条目已经存在),我得到了成功消息。当我向上传数据添加无效数据时,我收到错误消息。

这是我的代码:

var oModel = new sap.ui.model.odata.v2.ODataModel("https://hostname:port/sap/opu/odata/sap/CUAN_IMPORT_SRV/", true);

var oData = { some json... }

oModel.create("/ImportHeaders", oData, { 
success: function() { 
    sap.m.MessageBox.success("Interaction successfully created!", {
        title: "Success"
    });
},
error: function() { 
    sap.m.MessageBox.error("Interaction could not be created.", {
        title: "Error"                                
    });
}
});

当我运行/ n / iwfnd / traces时,它被标记为“成功执行”(即使没有创建新条目)。

即使没有创建新条目,如何显示成功消息?我怎么能避免这种情况?

odata sapui5
1个回答
0
投票

首先是在ABAP后端添加您的业务错误:

DATA: 
 lt_bapi_return type table of bapiret2,
 lo_message_container type ref to /iwbep/if_v4_message_container.

#Error handling
if lt_bapi_return is not initial.
#check if an error message is in lt_bapi_return
loop at lt_bapi_return into ls_bapi_return.
if ls_bapi_return-type = 'E'.

lo_message_container = io_response->get_message_container( ).

loop at lt_bapi_return into ls_bapi_return.
lo_message_container->add_t100(
exporting
iv_msg_type = ls_bapi_return-type
iv_msg_id = ls_bapi_return-id
iv_msg_number = ls_bapi_return-number
iv_msg_v1 = ls_bapi_return-message_v1
iv_msg_v2 = ls_bapi_return-message_v2
iv_msg_v3 = ls_bapi_return-message_v3
iv_msg_v4 = ls_bapi_return-message_v4 ).
endloop.

"raise exception
raise exception type zcx_e2e001_odata_v4_so
exporting
message_container = lo_message_container.

endif.
endloop.

endif.

在UI:

error: function(response) { 
    //response will have message details
    //each message can have business text, technical info, error code.
    sap.m.MessageBox.error("Interaction could not be created.", {
        title: "Error"                                
    });
}

您可以将这部分代码添加到每个重新定义的方法中。更好的是创建一个util方法并重用。

© www.soinside.com 2019 - 2024. All rights reserved.