我想一步通过大量的存储单元。我需要在CREATE_ENTITY
方法中同时使用OData服务实现中的所有存储单元(CREATE_ENTITY
,或者CREATE_DEEP_ENTITY
,或者…?),因为我必须对一些值进行比较。
我试过批量请求。这不起作用,因为每个存储单元都调用了CREATE_ENTITY
方法。这样我就可以在每个电话中只访问一个存储单元。
我还搜索了有关deep_entities
的教程。但我只找到一些结构很深的东西(头像)。但是我有一个平面结构(键:存储单元),并希望将它作为表/数组传递给我的CREATE_ENTITY
方法。在SAPUI5中应该可以这样做。
作为解决办法,我可以将所有存储单元传递到一个字符串中,并将其传递给CREATE_ENTITY
方法。但对我来说,这似乎很业余。
下面是我如何调用CREATE
方法:
onStartVert: function () {
this.oContext = this.getModel().createEntry("/LenumIPunktSet", {
success: this._successSave.bind(this),
error: this._errorSave.bind(this)
});
var oBindingPath = {
path: this.oContext.getPath()
};
this.getView().bindObject(oBindingPath);
var sLenum;
for (var i = 0; i < this._data.LePool.length; i++) {
sLenum = this._data.LePool[i].lenum;
this.getModel().create("/LenumIPunktSet", {
lenum: sLenum
});
}
this.getModel().submitChanges();
this.getRouter().navTo("iPunkt02");
},
CHANGESET_PROCESS
方法的签名是:
CT_CHANGESET_DATA TYPE /IWBEP/IF_MGW_CORE_SRV_RUNTIME=>TY_T_CHANGESET_DATA
/IWBEP/CX_MGW_BUSI_EXCEPTION Business Exception
/IWBEP/CX_MGW_TECH_EXCEPTION Technical Exception
因此,到目前为止,还没有可用的表IT_CHANGESET_REQUEST
。我的实体类型只有一个字段(lenum
)作为键。
发布于 2020-07-30 06:45:09
关键是实现变更集。
在DPC_EXT
中,重新定义以下三个方法:
方法CHANGESET_BEGIN
将激活批处理。
METHOD /iwbep/if_mgw_appl_srv_runtime~changeset_begin.
cv_defer_mode = 'X'.
ENDMETHOD.
METHOD /iwbep/if_mgw_appl_srv_runtime~changeset_end.
* empty
ENDMETHOD.
方法changeset_process
将包含逻辑。it_changeset_request
包含属于此批处理请求的所有实体。
METHOD /iwbep/if_mgw_appl_srv_runtime~changeset_process.
LOOP AT it_changeset_request ASSIGNING FIELD-SYMBOL(<fs_changeset_request>).
" <fs_changeset_request>-request_context->get_request_details( ) << which entity is it?
" <fs_changeset_request>-operation_type << is it CREATE, UPDATE or DELETE?
" <fs_changeset_request>-entry_provider->read_entry_data( ... ) << read entity into structure
ENDLOOP.
ENDMETHOD.
有关详细信息,请参阅这个博客。
https://stackoverflow.com/questions/63150330
复制相似问题