前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete

在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete

作者头像
用户6256742
发布2024-05-25 09:56:22
580
发布2024-05-25 09:56:22
举报
文章被收录于专栏:网络日志网络日志

在 SAP Business Application Studio 里创建一个 SAP UI5 应用,应该具有如下的项目结构:

在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete

打开 Home.view.xml, 添加一个 Create 按钮:

代码语言:javascript
复制
<Button id="createButton" icon="sap-icon://add" tooltip="Create" visible="true" press="onOpenAddDialog">
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete

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

在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete

打开和关闭对话框的源代码:

代码语言:javascript
复制
onOpenAddDialog: function () {
   this.getView().byId("OpenDialog").open();
},
onCancelDialog: function (oEvent) {
   oEvent.getSource().getParent().close();
},

对话框里调用的 onCreate 方法代码如下:

代码语言:javascript
复制
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 钩子函数里:

代码语言:javascript
复制
this._oTable = this.byId("table0");
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete

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

在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete

维护了必填字段后,点击 Create:

在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete

能看到成功创建的 Sales Order:

在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete

下面进行删除操作的实现。

我们设计一个 Edit 按钮,只有再进入 Edit 模式,才允许点击删除按钮:

代码语言:javascript
复制
<Button id="deleteButton" icon="sap-icon://delete" tooltip="Delete" visible="false" press="onDelete">
<Button id="editModeButton" visible="true" icon="sap-icon://edit" tooltip="Edit" press="onEditMode">
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete
在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete

Edit 按钮的实现逻辑:

代码语言:javascript
复制
onEditMode: function(){
     this.byId("editModeButton").setVisible(false);
     this.byId("saveButton").setVisible(true);
     this.byId("deleteButton").setVisible(true);
     this.rebindTable(this.oEditableTemplate, "Edit");
}

实现 onDelete 函数:

代码语言:javascript
复制
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。

以下代码实例化了一个模型,该模型将批处理组“myAppUpdateGroup”中的所有更新请求捆绑在一起; 然后可以使用 oModel.submitBatch("myAppUpdateGroup") 发送批处理请求。

代码语言:javascript
复制
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"
    });
});
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档