如何使用SubmitChanges()方法发送实体的不变字段

2020-09-09 09:06发布

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

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


我们正在使用setProperty()方法来更改现有实体的字段。 使用setDeferredGroups()方法为批处理提交收集这些更改。 如果以后再调用SubmitChanges(),则仅将更改的字段和键提交到后端OData服务。 但是我们需要让实体的所有字段都发回后端进行处理。

这是我们收集更改的方法:

 oModel.setDeferredGroups([" myChanges"]);;
 oModel.setChangeBatchGroups({" *":{batchGroupId:" myChanges",single:false}});
 oModel.setProperty(path +"/img/DepCode1",selectEl.getSelectedKey());
 oModel.setProperty(path +"/img/DepCodeGroup1"," YCSNCS");
 

然后在中央onSave方法中提交更改的数据:

 onSave:function(oEvent){
 var that = this;
 var successHandler = function(errorEvent){
 sap.m.MessageBox.success("成功",{
 标题:"成功",
 initialFocus:null
 });
 that.getModel()。refresh(true);
 };
 var errorHandler = function(successEvent){
 sap.m.MessageBox.error("错误!",{
 标题:"成功",
 initialFocus:null
 });
 };
 var oModel = this.getView()。getBindingContext()。getModel();
 如果(oModel.hasPendingChanges()){
 oModel.submitChanges({
 成功:successHandler,
 错误:errorHandler
 });
 }
 },
 

但是,如果我们在ABAP中检查数据提供者类(/IWBEP/IF_MGW_APPL_SRV_RUNTIME〜CHANGESET_PROCESS)中的请求数据,则只能看到密钥,并且已更改的字段将发送到后端。 为了进一步处理数据,我们还需要未更改的字段,否则我们将不得不再次从后端表中读取数据,这将是巨大的开销。

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

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


我们正在使用setProperty()方法来更改现有实体的字段。 使用setDeferredGroups()方法为批处理提交收集这些更改。 如果以后再调用SubmitChanges(),则仅将更改的字段和键提交到后端OData服务。 但是我们需要让实体的所有字段都发回后端进行处理。

这是我们收集更改的方法:

 oModel.setDeferredGroups([" myChanges"]);;
 oModel.setChangeBatchGroups({" *":{batchGroupId:" myChanges",single:false}});
 oModel.setProperty(path +"/img/DepCode1",selectEl.getSelectedKey());
 oModel.setProperty(path +"/img/DepCodeGroup1"," YCSNCS");
 

然后在中央onSave方法中提交更改的数据:

 onSave:function(oEvent){
 var that = this;
 var successHandler = function(errorEvent){
 sap.m.MessageBox.success("成功",{
 标题:"成功",
 initialFocus:null
 });
 that.getModel()。refresh(true);
 };
 var errorHandler = function(successEvent){
 sap.m.MessageBox.error("错误!",{
 标题:"成功",
 initialFocus:null
 });
 };
 var oModel = this.getView()。getBindingContext()。getModel();
 如果(oModel.hasPendingChanges()){
 oModel.submitChanges({
 成功:successHandler,
 错误:errorHandler
 });
 }
 },
 

但是,如果我们在ABAP中检查数据提供者类(/IWBEP/IF_MGW_APPL_SRV_RUNTIME〜CHANGESET_PROCESS)中的请求数据,则只能看到密钥,并且已更改的字段将发送到后端。 为了进一步处理数据,我们还需要未更改的字段,否则我们将不得不再次从后端表中读取数据,这将是巨大的开销。

付费偷看设置
发送
4条回答
樱桃小丸子0093
1楼-- · 2020-09-09 09:32

默认情况下,框架会自动为您调用getentity,但是当您通过CHANGESET_PROCESS

Bunny_CDM
2楼-- · 2020-09-09 09:35

嗨,

处理时,我不知道这种情况。 不明白,如果显示给您的用户的数据来自BE,并且在SubmitChange之后,如果您具有对象密钥,为什么需要将请求发送给您的所有数据? 它们都是您的全部?!

问候,

约瑟夫

浮生未央
3楼-- · 2020-09-09 09:27

您可以检查http请求吗?

< p>是合并还是放置?

SAP砖家
4楼-- · 2020-09-09 09:29

http请求的类型为" MERGE"。
@Joseph:如果不将所有字段都发送回去,则必须重新获取后端中的某些数据,这会在处理过程中导致性能问题。

一周热门 更多>