我有一个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时,它被标记为“成功执行”(即使没有创建新条目)。
即使没有创建新条目,如何显示成功消息?我怎么能避免这种情况?
首先是在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方法并重用。