Skip to Content
Technical Articles
Author's profile photo Jeffrey Towell

Create Fiori App in Business Application Studio using Northwind odata (Part 1)

Introduction

While getting access to a trial account to try/learn Business Application Studio(BAS) is easy, not everyone will have a SAP backend system they can link to to supply data to the BAS environment. A publicly available odata service called Northwind is available and can be used for this. While in this blog I will describe the steps to use Northwind in BAS there is no reason the concepts herein could not be easily adapted for use in other IDEs.

Destination

To use the Northwind service your SAP Cloud Platform environment must know where this service “lives”. This is done by creating a destination from the SCP cockpit.

Click on “New Destination” to create the new destination called “Northwind” and use the configuration settings as shown above.

Note that when I did this it took a while for the destination to successfully respond to the “check connection button”. If this is the case for you please see:

Setting Northwind as a destination for Business Application Studio

Data Structure

Before writing an app we need to understand the data structure of the service we are using. In our case we will be looking at a small subset of what is available in the Northwind service.

The metadata of the Northwind service can be viewed here:

https://services.odata.org/Northwind/Northwind.svc/$metadata

We are interested in only 3 objects in part 1. The “Orders”, “Order_Details” and “Product” entities.

We want to create a master-detail app where the master object is Orders:

https://services.odata.org/V2/Northwind/Northwind.svc/Orders

Looking at the first order in the list (10248) we can link to its order details via the navigation property (association) “Order_Details”:

https://services.odata.org/V2/Northwind/Northwind.svc/Orders(10248)/Order_Details

As you can see this order contains 3 products. Looking at the first product (ProductID = 11) we can link to the Product entity via the association “Product”:

https://services.odata.org/V2/Northwind/Northwind.svc/Orders(10248)/Order_Details(OrderID=10248,ProductID=11)/Product

Visually this can be viewed as:

Create Freestyle App from Template

Now we run through the wizard to create an app from template. If you are not using BAS as your IDE this step will need to be adapted accordingly.

Click on “Start from Template” on the Welcome tab as you come into BAS

On the next screen choose “SAP Fiori Freestyle Project” and hit “Start”.

Note that SAP will be combining this Freestyle template into the “SAP Fiori application” template so don’t worry if your Freestyle template option has the word “Deprecated” after it. Just ignore it for this exercise.

[If it is removed or you simply want to use the new template then go the following blog and then return to the “Adapting Output” section of this blog below to continue:

Northwind Freestyle app with Business Application Studio’s new “SAP Fiori application” template option ]

 

Set target running environment to “Cloud Foundry”.

Select “SAP Fiori Master-Detail Application” and hit “Next”.

Set a suitable project name:

Set as Standalone Approuter:

Set Basic Attributes:

Set an application title:

Configure the services as follows and hit next:

The Object Collection screen assumes you have only 2 entities – one for master and one for detail. In our case the Northwind order details view contains IDs like product ID but not the product description. As such we need to link to a 3rd view (Products) to get the description. Because of this it is easier to fill the object collection screen fields that we are uncertain of with anything (because these fields are mandatory) and then change the resulting code to suite our purposes. I have completed this screen as follows:

On the popup select “Add to Workspace”.

Adapting Output

If we now run the app we can see what the wizard has created:

From this starting point we can adapt the code to fit our purposes.

Lets start by changing the following values in the i18n.properties file:

masterTitleCount=Northwind Orders ({0})
detailLineItemTableHeadingCount=Products List ({0})
priceTitle=Customer ID
detailLineItemTableIDColumn=Product
detailLineItemTableUnitNumberColumn=Price

Master View

Northwind does not have a rolled up price at order level so we will not have prices in our master view. So lets add customer number at this level. This means removing the number and numberUnit fields from our master list and adding customer ID as an “intro” in the list item. After doing this the <items> tag in our Master.view.xml looks as follows:

<items>
	<ObjectListItem
		type="Navigation"
		press=".onSelectionChange"
		title="{OrderID}"
	   	intro="{CustomerID}">
	</ObjectListItem>
</items>

Our Master view now displays as follows:

Detail View

We will add the customer ID at the top of the detail view. This will come through from the master view instead of price. To do this change the contents of the <semantic:headerContent> tag in Detail.view.xml to:

<semantic:headerContent>
	<ObjectAttribute title="{i18n>priceTitle}" text="{CustomerID}"/>
</semantic:headerContent>

For The first column in our detail view table we want the product ID and product description. Keep in mind that as mentioned before we will need to link to the Product view to get the product description as it is not at order details level.

For each product we will show the relevant price and hard code a currency as this is not supplied in order details.

To achieve all this we will use a Smart List. So replace the <table> tag and everything within it in Detail.view.xml with the following:

<smartList:SmartList id="smartProductList" smartFilter="smartFilterBar" listBindingPath="Order_Details" 
           expandFields="Product" header="Products List" showRowCount="true" showFullScreenButton="true" 
           enableAutoBinding="true">
           <smartList:listItemTemplate>
               <StandardListItem id="listTemplate" type="Navigation"   press="handleListItemPress" 
                                 title="{ProductID}" 
                                 info="{= ${UnitPrice} + ' €' }" description="{Product/ProductName}" />
           </smartList:listItemTemplate>
</smartList:SmartList>

For the above code to work make sure you have added the “smartList” XML namespace to the <mvc:View > tag at the top of the detail view:

<mvc:View
...
    xmlns:smartList="sap.ui.comp.smartlist"
...>

Output

 

Conclusion

It is possible to use Northwind as an odata provider to create Fiori apps in Business Application Studio. The code above can be used as a starting point for learning Fiori in BAS. In part 2 we do just that by adding a customer info popup to the detail screen.

 

Create Fiori App in Business Application Studio using Northwind odata (Part 2)

Assigned tags

      6 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Prasanna M
      Prasanna M

      Is there any other free to use,test ODATA service for beginners to try and test out in diff FIORI applications ? sometimes the northwind ODATA service throws error and 'no data' .

       

      thanks

      Author's profile photo Björn Kron
      Björn Kron

      Very great and easy to follow! Thanks a lot for sharing it with us.

      I already sent this blog entry to my colleagues who are starters.

      One small remark. I guess you should mention that the xml namespace sap.ui.comp.smartlist must be added for the usage of smartlist.

      Author's profile photo Jeffrey Towell
      Jeffrey Towell
      Blog Post Author

      Excellent point Bjorn - I'll update that now.

      Glad its been helpful.

      Author's profile photo Dinesh Ravisekaran
      Dinesh Ravisekaran

      Thanks for the simple steps , i am getting "couldn't find any sap fiori projects in workspace" when i try to preview the application.

      am i missing anything?

      i have referred to below blog , however no luck:

      https://answers.sap.com/questions/13216234/show-page-map-fo-results-in-could-not-find-any-sap.html

      Regards,

      Dinesh

       

      Author's profile photo Jeffrey Towell
      Jeffrey Towell
      Blog Post Author

      Hi Dinesh,

      My only suggestion is to got to File->Open Workspace... and check if the project was maybe created in another workspace.

      Author's profile photo Party Tecnico
      Party Tecnico

      Hi Jeffrey Towell

       

      I have followed all the steps, however the application not work.

       

      Attatch Image

      Error

      Error

      Regards