SAPUI5 создает несколько значений (пакетов), используя сообщение

Для публикации данных в SAP Back-end я использую:

oModel.create("/Dummyset", oEntry); //so far it works fine

Теперь у меня есть несколько строк в моем oEntry, и это не работает. Я нашел следующее решение

aBatchOperation.push(contactBatchOperation);        
oModel.addBatchChangeOperations(aBatchOperation);
oModel.submitBatch(fSuccess,fError,true);

Но, к сожалению, он не работает с моей версией OData 2.0. Я всегда получаю сообщение об ошибке

«addBatchChangeOperations не является функцией»

Затем я попытался выяснить, какую функцию я могу использовать с OData v2. Я мог найти это.

batchChanges.push(oModel._createBatchRequest("/AttributesSet", "POST", wert.Atrributes[i].name));
oModel._submitBatchRequest(oModel.setProperty("/AttributesSet", batchChanges), true);

Но это все еще не работает. Как мне это исправить?


person Aline    schedule 09.03.2017    source источник


Ответы (1)


Я полагаю, вы хотите объединить несколько запросов на создание в один пакет, верно?

Для ODataModel создайте можно определить дополнительный идентификатор группы. Смотри ниже.

mParameters.Идентификатор группы? ID группы запросов; запросы, принадлежащие одной группе, будут объединены в один пакетный запрос

По сути, вы можете отправить несколько create с одним и тем же groupId, который вы можете определить самостоятельно.

Сначала необходимо установить определенную deferredGroups для ODataModel

var aDeferredGroup = oModel.getDeferredGroups().push("batchCreate");
oModel.setDeferredGroups(aDeferredGroup);

Затем вы вызываете несколько create.

var mParameters = {groupId:"batchCreate"};
oModel.create("/Dummyset", oEntry1, mParameters);
oModel.create("/Dummyset", oEntry2, mParameters);
oModel.create("/Dummyset", oEntry3, mParameters);

Наконец, вы можете вызвать submitChanges одним пакетом для нескольких запросов.

oModel.submitChanges(mParameters);
person Haojie    schedule 09.03.2017
comment
большое спасибо. У меня работает, но не так, как хотелось бы. вставляется только последний элемент oModel.create. Я не знаю, делаю ли я что-то не так сзади или спереди. - person Aline; 10.03.2017
comment
Вы проверяете запрос oData в инструментах разработчика Chrome, чтобы увидеть, отправлены ли несколько запросов. Если это правда, это должно быть проблемой бэкэнда. Вы должны реализовать внутренние методы changeset_begin, changeset_process и changeset_end. Вы можете проверить этот пост help.sap.com/saphelp_nw74/helpdata /ru/94/ - person Haojie; 10.03.2017
comment
Итак, наконец, это работает нормально. У меня было такое же значение oEntry. Вот почему я думал, что это не работает. Спасибо @Аллен - person Aline; 10.03.2017
comment
нельзя ли упаковать весь этот oEntry в один, а потом зациклиться на создании записей? Когда я пробую это с циклом for, он создает только последнюю запись, хотя значение oEntry другое. - person Aline; 10.03.2017
comment
Решено!! была просто проблема с декларацией - person Aline; 10.03.2017