Skip to Content
Technical Articles
Author's profile photo Mikhail Minakov

Three types of Intent-Based Navigation in FIORI/RAP

During my daily work I’ve got a task to implement a call of another Fiori App from my Fiori Elements App. In order to achieve that I have found three possible ways to implement it (but only one of them was working for me):

  1. Intent-based Navigation as RAP CDS Association
  2. Intent-based Navigation as ABAP Call from RAP Action
  3. Intent-based Navigation as Fiori Extension

Let’s discuss all of them in details 🙂

1. Intent-Based Navigation as RAP CDS Association

According to documentation

you can use @UI.lineItem annotation with type #FOR_INTENT_BASED_NAVIGATION to configure intent-based Navigation to another Fiori App. I have used the following configuration in Metadata Extension view of my RAP Model:

  @UI: { lineItem: [ { position: 100 } 
      , { type: #FOR_INTENT_BASED_NAVIGATION, label: 'Send request', semanticObject: 'my_semantic_object', semanticObjectAction: 'create', requiresContext: true }
      , identification: [ { position: 100 } 
      , { type: #FOR_INTENT_BASED_NAVIGATION, label: 'Send request', semanticObject: 'my_semantic_object', semanticObjectAction: 'create'}
      , selectionField: [ { position: 40 }

The button will be shown only on the List Report Page in spite of the fact, that I have configured it in identification section as well.

Note, that you can see the button only after deploying application to Fiori Launchpad, you cannot see the button in Eclipse or BAS Preview. This type of navigation will only work for Fiori Apps and not for SAP GUI for HTML even if you call this from Fiori Launchpad as target mapping.


2. Intent-Based Navigation as ABAP Call

You can use the class to trigger intent-based navigation to Fiori App from ABAP code like that:

          object = 'your_semantic_object'
          action = 'your_action'
          parameters = lt_parameters
          navigation_mode = if_lsapi=>gc_s_navigation_mode-new_external_window ).

This is working nicely but only from the backend side. So you cannot use this code as behaviour implementation of custom action in RAP, it will not work.

More information here


3. Intent-Based Navigation as Fiori Extension

According to the documentation

The CrossApplicationNavigation service is used here to call an semantic object action.

I have generated the fiory elements extension using “Guided Development” function in BAS.

Choosing “Add a custom action using extensions”

After executing this wizard the manifest.json file will be updated with a new action snippet where you can setup the button label

                            "content": {
                                "header": {
                                    "actions": {
                                        "a_op_btnSendRequest": {
                                            "id": "a_op_btnSendRequestButton",
                                            "text": "CS-Auftrag Versenden",
                                            "press": "csorder.csorder.custom.ObjectPageExtController.f_op_SendRequest",
                                            "requiresSelection": false

and new ObjectPageExtController.js file will be created in webapps/custom section.

ObjectPageExtController.js contains a empty function where you have to implement your code for intent-based navigation.

The implementation may look like following:

function (){
    "use strict";
    return {
        f_op_SendRequest: function(oEvent) {
            var oCrossAppNav = sap.ushell.Container.getService("CrossApplicationNavigation"); 
            // trigger navigation
                target : { semanticObject : "Name of your semantic object", action : "Your action" },
                params : { your_parameter : [ your_value ] }

After this you will see the new button in Object Page, clicking on it will run another Fiori App in the same window.

You can configure the same button for List Report Page, but in this case you have to process all the selected records in a loop (in case you have allowed multiple selection).

So SAP gives us at least three possible ways to perform intent-based Navigation, depending of your requirements.


What is your experience with intent-based Navigation? Write in comments, how did you use it.

I will be glad if the content of this blog is useful to you. Follow me so you don’t miss the next content about SAP, Fiori, SAPUI5 and possibly OpenUI5.

I would also reccomend you to follow the SAP Fiori Elements environment Topic page

and read other community posts


Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Jelena Perfiljeva
      Jelena Perfiljeva

      Thanks for sharing! It's "three" (3) and "intent-based" though. "Intent" is a noun, "intend" is a verb. English is confusing, I know. 🙂

      Thanks again!

      Author's profile photo Mikhail Minakov
      Mikhail Minakov
      Blog Post Author

      Thank you for corrections! I have updated the post.

      Author's profile photo Bunny Arora
      Bunny Arora

      Hi Mikhail ,

      I believe all these navigations opens up in the same window, is there any way to open these navigations in a separate window?

      Author's profile photo Gary O'Neill
      Gary O'Neill

      Using the Fiori Extension can you run custom transaction codes / programs?

      Author's profile photo Dhananjay Hegde
      Dhananjay Hegde

      Nice post.  I was not aware of the ABAP intent-based navigation 🙂

      By the way, you can add 4th one for Fiori Elements apps -

      Fiori Elements v2 - you can use extensionAPI.getNavigationController( ).navigateExternal( ) . Documentation.

      Fiori Elements v4 - within a contoller, you can use this.getExtensionAPI( ).intentBasedNavigation.navigateOutbound( ) .  Example here

      For this, you need to configure an outbound navigation key in manifest.json where you need to provide a semantic object and an action.  Then in the custom action implementation, you can call the method by passing this key and parameters as required for navigation.