В функцию onSaveAsVariant добавьте код для изменения идентификатора, так как он помещает недопустимый в onSaveAsVariant
enter code here
var cantidadArray = oEvent.getSource().getVariantItems().length;
if (cantidadArray > 0) {
var ddd = oEvent.getSource().getVariantItems()[0].getId().length;
var cadenaid = oEvent.getSource().getVariantItems()[0].getId().substring(0, ddd - 1);
var numeroanterior = oEvent.getSource().getVariantItems()[cantidadArray - 2].getId().substring(70, 71);
var snun = Number.parseInt(numeroanterior) + 1;
oEvent.getSource().getVariantItems()[cantidadArray - 1].sId = cadenaid + snun;
}
and then when saving the refresh is performed
this.oContainer.save().done(function() {
this.onGetPersonalizer();
}.bind(this));
onGetPersonalizer: function() {
var msg = 'Variante Guardada con exito';
MessageToast.show(msg);
var oComponent = sap.ui.core.Component.getOwnerComponentFor(this.getView());
this.oPersonalizationService = sap.ushell.Container.getService("Personalization");
var oPersId = {
container: "TablePersonalisation", //any
item: "DemoTableUI" //any- I have used the table name
};
// define scope
var oScope = {
keyCategory: this.oPersonalizationService.constants.keyCategory.FIXED_KEY,
writeFrequency: this.oPersonalizationService.constants.writeFrequency.LOW,
clientStorageAllowed: true
};
// Get a Personalizer
var oPersonalizer = this.oPersonalizationService.getPersonalizer(oPersId, oScope, oComponent);
this.oPersonalizationService.getContainer("TablePersonalisation", oScope, oComponent)
.fail(function() {})
.done(function(oContainer) {
this.oContainer = oContainer;
this.oVariantSetAdapter = new sap.ushell.services.Personalization.VariantSetAdapter(this.oContainer);
// get variant set which is stored in backend
this.oVariantSet = this.oVariantSetAdapter.getVariantSet("DemoTableUISet");
if (!this.oVariantSet) { //if not in backend, then create one
this.oVariantSet = this.oVariantSetAdapter.addVariantSet("DemoTableUISet");
}
// array to store the existing variants
var Variants = [];
// now get the existing variants from the backend to show as list
for (var key in this.oVariantSet.getVariantNamesAndKeys()) {
if (this.oVariantSet.getVariantNamesAndKeys().hasOwnProperty(key)) {
var oVariantItemObject = {};
oVariantItemObject.VariantKey = this.oVariantSet.getVariantNamesAndKeys()[key];
oVariantItemObject.VariantName = key;
Variants.push(oVariantItemObject);
}
}
// create JSON model and attach to the variant management UI control
this.oVariantModel = new sap.ui.model.json.JSONModel();
this.oVariantModel.oData.variante = Variants;
this.getView().byId("idvariantManagement").setModel(this.oVariantModel, "variantes");
this.getView().byId("idvariantManagement").currentVariantSetModified(true);
}.bind(this));
debugger;
this.oTablepersoService.refresh();
},
, вот как это работает для «Сохранить как», что не работает, так это сохранение, так как оно имеет то же поведение, что и Бр Нил sh Пураник комментирует
У меня недавно была та же самая проблема, но для кнопки "Сохранить". У меня та же проблема, вы нашли какое-нибудь решение?
Спасибо D iego Guizzo