在|在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete 操作
在 SAP Business Application Studio 里创建一个 SAP UI5 应用,应该具有如下的项目结构:
文章图片
打开 Home.view.xml
, 添加一个 Create 按钮:

文章图片
该按钮被点击后,我们期望弹出一个对话框,该对话框的实现源代码如下:

文章图片

文章图片
打开和关闭对话框的源代码:
onOpenAddDialog: function () {
this.getView().byId("OpenDialog").open();
},
onCancelDialog: function (oEvent) {
oEvent.getSource().getParent().close();
},
对话框里调用的 onCreate 方法代码如下:
onCreate: function () {
var oSo = this.getView().byId("idSo").getValue();
if (oSo !== "") {
const oList = this._oTable;
const oBinding = oList.getBinding("items");
const oContext = oBinding.create({
"soNumber": this.byId("idSo").getValue(),
"customerName": this.byId("idCustName").getValue(),
"customerNumber": this.byId("idCustomer").getValue(),
"PoNumber": this.byId("idPo").getValue(),
"inquiryNumber": this.byId("idInqNumber").getValue()
});
oContext.created()
.then(()=>{
// that._focusItem(oList, oContext);
this.getView().byId("OpenDialog").close();
});
}else {
MessageToast.show("So cannot be blank");
}},
this._oTable
的赋值,发生在 onInit
钩子函数里:this._oTable = this.byId("table0");

文章图片
下面进行测试。点击 Create 按钮,弹出对话框:

文章图片
维护了必填字段后,点击 Create:

文章图片
能看到成功创建的 Sales Order:

文章图片
下面进行删除操作的实现。
我们设计一个 Edit 按钮,只有再进入 Edit 模式,才允许点击删除按钮:

文章图片
Edit 按钮的实现逻辑:
onEditMode: function(){
this.byId("editModeButton").setVisible(false);
this.byId("saveButton").setVisible(true);
this.byId("deleteButton").setVisible(true);
this.rebindTable(this.oEditableTemplate, "Edit");
}
实现
onDelete
函数:onDelete: function(){var oSelected = this.byId("table0").getSelectedItem();
if(oSelected){
var oSalesOrder = oSelected.getBindingContext("mainModel").getObject().soNumber;
oSelected.getBindingContext("mainModel").delete("$auto").then(function () {
MessageToast.show(oSalesOrder + " SuccessFully Deleted");
}.bind(this), function (oError) {
MessageToast.show("Deletion Error: ",oError);
});
} else {
MessageToast.show("Please Select a Row to Delete");
}},
OData V4 模型允许开发人员指定是否将请求捆绑并作为批处理请求(Batch request)发送,以及何时发送请求。
参数 groupId 指定默认批处理组,默认为
$auto
。 开发人员可以使用参数 updateGroupId 为更新请求设置批处理组。 如果不设置此参数,将使用 groupId。【在|在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete 操作】以下代码实例化了一个模型,该模型将批处理组“myAppUpdateGroup”中的所有更新请求捆绑在一起; 然后可以使用 oModel.submitBatch("myAppUpdateGroup") 发送批处理请求。
sap.ui.define(["sap/ui/model/odata/v4/ODataModel"], function (ODataModel) {
var oModel = new ODataModel({
serviceUrl : "/sap/opu/odata4/IWBEP/V4_SAMPLE/default/IWBEP/V4_GW_SAMPLE_BASIC/0001/",
synchronizationMode : "None",
updateGroupId : "myAppUpdateGroup"
});
});
推荐阅读
- 踩坑-Tomcat(servlet)在启动(加载)是执行两次
- Day|Day 82/100 如何在docker中发布项目代码
- 投稿|营收利润“此消彼长”,水滴在阵痛中转身
- Android自定义弹出框的方法
- 韩国|每5个韩国年轻人,就有1个在买比特币,“中年人炒房,不让我们炒币?”
- 有哪些好用的工作汇报工具
- 带你区分几种并行
- 投稿|这届618,「六绝」在论什么剑?
- 在 KubeSphere 上部署 Apache Pulsar
- 如何从0到1构建一个极简的基础架构设施