Я хочу передать количество единиц хранения за один шаг. Мне нужны все единицы хранения одновременно в методе 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
), которое мне нужно в качестве ключа.
1 ответ
Ключ - реализовать набор изменений.
В вашем 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.
См. в этом блоге .
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
it_changeset_request
должны содержаться все созданные (или обновленные, или удаленные) сущности.changeset_process
существует дважды. Сначала с интерфейса/IWBEP/IF_MGW_APPL_SRV_RUNTIME
. Второй от интерфейса/IWBEP/IF_MGW_CORE_SRV_RUNTIME
. Используйте первый (как видно из моего ответа). Он будет содержать параметры импорта. Также используйте первый дляchangeset_begin
иchangeset_process
.