В приложении, которое я сейчас разрабатываю,
У меня есть несколько гиперссылок на стандартные транзакции бэкэнда sap, такие как BP, PDL и так далее.
Я открываю их с помощью CrossApplicationNavigation.
они открывают новую вкладку.
В моем основном приложении я реализовал кнопку, чтобы закрыть каждую вкладку и вернуться в корневой режим.
Я попробовал следующее:
Скрипт для закрытия других вкладок или браузера
вот мой код:
var oCrossAppNavigator = sap.ushell.Container.getService("CrossApplicationNavigation");
var oExtUi = oEvent.getSource().getText();
var hash = oCrossAppNavigator.hrefForExternal({
target: {
semanticObject: "ZSIMM_PDL",
action: "display"
},
params: {
"UtilitiesPDL": oExtUi
}
});
var url = window.location.href.split("#")[0] + hash;
this._oComponent = sap.ui.component(sap.ui.core.Component.getOwnerIdFor(this.getView()));
this._myModel = this._oComponent.getModel("oModelWindow");
this._myModel.setProperty("/Window", window);
sap.m.URLHelper.redirect(url, true);
},
таким образом, я открываю новую вкладку с моим semanticObject. и я регистрирую это в моей модели.
следующий шаг - метод, связанный с моей кнопкой:
this._myModel = this._oComponent.getModel("oModelWindow");
var aWindow = this._myModel.getData().Window;
aWindow.close();
Я загружаю окно открытой вкладки.
инструкция close не работает, она пишет:
«Скрипты могут закрывать только те окна, которые были им открыты».
что я понимаю в CrossApplicationNavigation, это то, что он открыл новую вкладку и перенаправил с помощью sap.m.URLHelper.redirect (url, true);
знает ли текущий экран перед вызовом нового, какую страницу он открывает?
и есть ли способ закрыть его вручную?