Legacy Navigation to IBN
Intent-Based Navigation (IBN) is a general cross-application navigation concept used in Fiori Launchpad and natively supported by SAP UI5 Fiori Apps.
Legacy applications based on WebDynpro or Dynpro technologies have their own navigation and resource/target addressing methods that do not map to IBN. To simplify the transition of existing applications from the GUI/WebDynpro world to the simplified experience of Fiori, support of the Fiori-like navigation in Classic UI technology apps is essential. It shall be a way for GUI/WebDynpro applications to use Intent-Based Navigation the same/similar way as it used by SAP UI5 apps. It shall be possible to remap the old target used in Visually Harmonized applications to the new lightweight Fiori application, and it shall be done with minimal modification efforts.
It also necessary to support previous navigation technics (OBN, Absolute Navigation, Call Transaction, etc) in Fiori Launchpad, and transparently convert them into IBN, providing such qualifiers as bookmarkability, readability, stability, and deep linking of URLs, ensuring that the target application keeps running in FLP.
The method provided below provides an easy way to automatically translate legacy navigation calls into IBN without or with minimal code changes.
The technic described below supports only the following legacy navigation targets
- Dynpro (SAP GUI Transaction)
If a target would be something different, for example, a URL, the navigation call would not be translated but will go as before: in-place without changing FLP URL, ex-place – leaving the FLP frame.
- Absolute Navigation (WebDynpro). No code modification necessary.
- Object-Based Navigation (WebDynpro). No code modification necessary.
- ABAP Report Launchpad based navigation == LPD_CUST (WebDynpro). No code modification necessary.
- Navigation using IF_LSAPI == CL_LSAPI_MANAGER (WebDynpro, Dynpro). No code modification necessary.
- CALL TRANSACTION. To be replaced by CL_LSAPI_MANAGER=>NAVIGATE_TO_TRANSACTION (Dynpro)
How to enable
To get the solution working you will need to fulfill several requirements:
- Upgrade your backend to SAP_UI 7.54.
- If you navigate using CALL TRANSACTION or IF_LSAPI=>NAVIGATE it may be sufficient to install only the latest NWBC ABAP Runtime patch note (PL67).
- Enabling generic intents for your backend system by creating Target Mappings
- Defining of additional system alias mapping in sid notation for the backend system on the front-end server system
- Setting the backend system flag that activates translation of navigation.
And now, more detailed about each step.
Generic intents for Classical UIs
The pre-requisite for enabling the automatic translation of the legacy navigation calls into IBN is the availability (assignment) of generic intents for starting any WebDynpro Application and GUI Transaction for the specific backend.
Assignment of the generic intent to a user would give him the potential ability to call any GUI Transaction / WebDynpro in the backend, but, of course, standard start authorization would be still executed, and if the user does not have permissions to start the app it would break. So, from the security perspective – everything is ok.
Target Mappings (TM) with generic intents are not pre-delivered with SAP Technical catalogs and shall be explicitly created/assigned on the customer side, since TMs referring explicit systems by use system alias in sid notation, and such names are specific for each system landscape.
The creation of own target mappings and catalogs enabled only for S/4 on-Premise, but not for S/4 Cloud. So, the way to use generic intents on S/4 Cloud not yet clear.
HUB scenario: enable the generic start of Classic UI apps for any backend
Any transaction on any connected backend
Any WebDynpro Application on any connected backend
HUB scenario: enable the generic start of Classic UI apps for a specific backend system
Any transaction on system URZ client 120
Any WebDynpro Application on system URZ client 120
Co-deployed scenario: enable the generic start of Classic UI apps
Any transaction on the Front-end system (backend and frontend is co-deployed)
Any WebDynpro Application on the Front-end system (backend and frontend is co-deployed)
Definition of the system alias in sid notation for the specific backend
When legacy navigation shall happen locally, on the same backend, the way to express it in IBN is to add a sap-system parameter pointing on the same system. For example sap-system=URZCLNT120. But there is an issue, that the IBN call is constructed on the ABAP side, where it is not known how the backend system is named by FLP. The solution here is to pass the name of yourself in the alternative form, using a sid notation (system ID + client): sap-system=sid(URZ.120), while this information is available. This requires that the FLP shall understand the alternative name of the backend system expressed in sid notation. In most cases, when the backend system was added using the task list, the aliasing of the destination using sid name shall be already available in table /UI2/V_ALIASMAP, but if not, it shall be maintained as shown below:
Such a configuration is only necessary with hub or federated deployment if the backend system is different from the front-end server. The alias mapping shall be configured in the front-end server /UI2/V_ALIASMAP.
More information about configuring the system destinations in the ABAP world can be found in Configuring Remote Systems in SM59.
Configuring using a task list
There is an easier way to connect the backend system to the front-end server using the task list SAP_GATEWAY_ADD_SYSTEM_ALIAS.
Backend configuration of Legacy to IBN auto transition
There are two ways to enable the automatic translation of absolute navigation into IBN: global and user-specific. Both ways shall be done on the backend system (not FrontEnd) and work only for this particular system when legacy navigation is triggered by an app located on this system.
- Global for system: Transaction SM30 => /UI2/NWBC_CFGCV => ParameterName = MAP_LEGACY_TO_IBN; ParameterValue = “X”.
- For specific user: Transaction SU52 => User parameter => MAP_LEGACY_TO_IBN = “X”
How to enable the automatic translation of legacy to IBN on the customer side?
There is no automatic way for now. You need to instruct customers on how to create corresponding TM and assign them to users and how to switch the mode in /UI2/NWBC_CFGCV on each backend. Here is a central consulting note describing that.
Does it work already with cFLP?
In some way… :
- There is no way to define global generic intents (e.g matching all targets) – you will need to define a separated intent (business app) for each possible target
- There is a way to define a mapping of system aliases to destination (sid to destination)
- And you still need to enable the translation of legacy to IBN for each connected backend