Ключ варианта SAPUI5 при сохранении выпуска - PullRequest
0 голосов
/ 20 апреля 2020

В функцию 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

...