はじめに
lanchpadでタイルから別機能のタイルに遷移する機能を実装する機会がありました。
以下を参考に実装ができたので備忘録のため記事を書かせていただきます。
https://sapui5.hana.ondemand.com/sdk/#/api/sap.ushell.services.CrossApplicationNavigation
ソースコード
そのまま別機能に遷移したい場合
sample.Controller.js
var oCrossAppNav = sap.ushell.Container.getService("CrossApplicationNavigation");
oCrossAppNav.toExternal({
// 遷移先の情報
target: { semanticObject: "demoUI02", action: "display" },
// 遷移後に渡したいパラメータ情報
params: {
sendParam: "data"
}
});
target内部のsemanticObjectにはLaunchpadで登録されている指定画面のセマンティックオブジェクトを指定します。
Launchpadのアプリ情報から確認できます。
また、param部分に自由にデータを指定することで遷移後の画面に値を渡すことができます。
遷移後の画面で上記パラメータを取得するには以下ソースで取得ができます
sample.Controller.js
// 遷移先でパラメータを受け取る
let sKey = this.getOwnerComponent().getComponentData().startupParameters;
ちなみに別タブでの画面を遷移したい場合は以下のソースコード
sample.Controller.js
var oCrossAppNav = sap.ushell.Container.getService("CrossApplicationNavigation");
// 別タブ起動
var sHash = oCrossAppNav.hrefForExternal({
target: { semanticObject: "demoUI02", action: "display" },
params: {
sendParam: "data"
}
});
var url = window.location.href.split('#')[0] + sHash;
sap.m.URLHelper.redirect(url, true);