Skip to Content
Technical Articles
Author's profile photo Andre Fischer

How to transport Fiori like applications using SAP Solution Managers Quality Gate Management

Authors

Max-Dirk Dittrich

Andre Fischer

Patrick Schmidt

Updates

  • 22.03.2016 Added information how to make objects that reside in $TMP transportable.

Introduction

In this document we want to describe how to handle the software changes of a project that encompasses the development of

that is deployed on the SAP Gateway server using the Quality Gate Management (QGM) which is part of SAP Solution Manager.

The scenario described is also applicable to projects where SAP Fiori applications and the underlying SAP Gateway service are extended and where the changes need to be transported through a typical 3-system landscape.

A big plus for both scenarios is that the complete life cycle management of a SAP Gateway service and the corresponding consuming SAP Fiori like application can be managed using the well known SAP Change and Transport System of an ABAP system.

The only problem however is that service development and consumer application development are usually carried out by different developers. In addition complexity is added by the fact that during the development process of an OData service repository objects and customizing data are created in the SAP Gateway Backend and SAP Gateway Server whereas the development artefacts of the SAP Fiori like application are only created on the SAP Gateway Server.

As a result 1 customizing request and 3 workbench requests in 2 system landscapes have to transported in synch between the SAP Gateway server and backend systems as shown in the following picture.

3 - Systemlandscape.jpg

This is where the Quality Gate Management (QGM) comes to the rescue. QGM allows for the creation of so called changes which can contain one or more workbench and customizing requests in different systems. With the help of QGM the workbench and customizing requests that have been assigned to those changes can be transported in synch and the process can be controlled and monitored centrally from SAP Solution Manager.

Please note:

If the objects that you want to transport cannot be transported since you might have created them in the development class $TMP, please have a look at the following post. How to change dev class $TMP for the repository objects of an OData service?.

Demo Flow

Step 1 – Create a change

Step 2 – Create workbench requests and customizing request

Step 3 – Gateway Service Builder – OData Service Creation

Step 4 – Gateway Service Builder – OData Service Implementation

Step 5 – Gateway Backend – Service Registration

Step 6 – Maintain Service – Service Activation on SAP Gateway Server

Step 7 – Maintain Service – System Alias Customizing

Step 8 – SAPUI5 Application Development

Step 9 – Transport changes via QGM

Step 1 – Create a change

The QGM supports the creation of transport request in different systems that are organized through a change request that spans different systems (e.g Gateway Server and Gateway Backend).

QGM.PNG

Step 2 – Create workbench requests and customizing request

In a second step three workbench requests for

  • the repository objects of the Gateway service
  • the service implementation and
  • the Fiori application

will be created.

In addition a customizing request is created for the customizing settings of the Gateway service as shown in the following screen shot.

Transport and Customizing Requests.PNG

Step 3 – Gateway Service Builder – OData Service Creation

When the OData service developer starts to create a new project in the Service Builder in the SAP Gateway backend system and assigns it to a development class the developer will be prompted to assign these changes to the transportable Workbench request (here: EH1K900309) that has been created using QGM before.

Assign Service Builder Project to transport request.PNG

Step 4 – Gateway Service Builder – OData Service Implementation

The steps shown in the video are described in detail in the how-to-guide How to Develop a Gateway Service using Code based Implementation.

Step 5 – Gateway Backend – Service Registration

The service implementation ends with the generation of the runtime objects. In this step the repository objects such as ABAP classes are generated and the Gateway service and model are registered in the SAP backend system.

Generate runtime objects and register in backend.PNG

As a result the developer is prompted to provide a transportable workbench request. Here the same workbench request (here: EH1K900309) will be used that already contains the Service Builder project.

add service implementation repository objects.PNG

Step 6 – Maintain Service – Service Activation on SAP Gateway Server

In this step the developer activates the Gateway service on the Gateway Server (Hub). Here the developer is prompted to provide a workbench request (here: GW1K900063). Please note that this happens on the Gateway Server development system (here: GW1).

Activate Service.PNG

Step 7 – Maintain Service – System Alias Customizing

You now want to transport the customizing settings for the system alias(es) that are assigned to the Gateway Service. This can be done from within the customizing table maintance view.

System Alias Transport 1.PNG

The developer will be prompted now to provide a customizing request (here: GW1K900065) that has been created earlier.

System Alias Transport 2.PNG

Step 8 – SAPUI5 Application Development

The developer of the SAPUI5 app can now develop the app and publish it finally on the Gateway server which is also called the frontend server for Fiori like applications. The SAPUI5 developer can submit the app so that it is published in the SAPUI5 ABAP repository from within his Eclipse development environement. Here the developer will be prompted to provide a workbench request (here: GW1K900067).

transport sapui5 app.PNG

Step 9 – Transport changes via QGM

Now QGM will be used to transport the three workbench requests and the customizing request in synch to the quality assurance system and finally to production.

release all transport requests 2.PNG

The status of the transports can be monitored. If for example a request is missing this can be easily be monitored in QGM

missing transport.PNG

Finally all requests have been transported to the production system.

all transports green.PNG

Result – SAPUI5 App runs

Finally the SAPUI5 app runs and displays a list of products  .

SAPU5 App.PNG

Appendix – List of repository objects being transported

SAP Gateway Server

The following objects have to be transported between the SAP Gateway server systems:

Object Transport Type PGMID OBJECT
Service Repository Object R3TR IWSG
Model Repository Object R3TR IWOM
ICF Node Repository Object R3TR SICF
System Alias Customizing R3TR TABU
Serivice Registation on the Hub Customizing R3TR TABU

SAP Gateway Backend

Objects to be transported between the SAP Gateway backend systems

Object Transport Type PGMID OBJECT
Service Builder Project Repository Object R3TR IWPR
Model Provider Class Repository Object R3TR CLAS
Model Provider Extension Class Repository Object R3TR CLAS
Data Provider Class Repository Object R3TR CLAS
Data Provider Extension Class Repository Object R3TR CLAS
Model object Repository Object R3TR IWMO
Service object Repository Object R3TR IWSV

Fiori like application

The repository objects of an Fiori like application are deployed on the so called Frontend Server which is the same as the SAP Gateway server

Object Transport Type
ICF Service Repository Object
Info Object from MIME Repository Repository Object
BSP page Repository Object

Assigned Tags

      12 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Krishna Kishor Kammaje
      Krishna Kishor Kammaje

      Thanks Andreas. Very usefull. I have a question.

      I have read your document on creating System Aliases in Production.

       

      This document mentions transporting system aliases. I do not see any value in transporting system alias from Dev to Quality (since Dev system alias will point to Dev backend). Am I missing anything?

      Author's profile photo Andre Fischer
      Andre Fischer
      Blog Post Author

      Hi Krishna,

       

      you are right that any system alias in a DEV system should point to a DEV backend.

       

      But the system alias is just a wrapper for the underlying RFC destination.

       

      So for testing purposes you should use the same name for a system alias (e.g. CRM_BACKEND) in your DEV system as in your QAS and PRD system. This system alias should however point to the DEV CRM backend.

       

      This is especially true if you want to test scenarios where several backends are used with a multi origin.

       

      The assignment of a system alias to a service using transaction /IWFND/MAINT_SERVICE is customizing which is not allowed in a productive system.

       

      Therefore I described in my document http://scn.sap.com/docs/DOC-42241 how it is possible to maintain the system alias itself in a productive system since this can be done as a so called direct setting whereas this is not possible for the assignment of the system alias to a service itself.

       

      This way you can change the RFC destination which will be different in DEV, QAS and PRD.

       

      Best Regards,

      Andre

      Author's profile photo Krishna Kishor Kammaje
      Krishna Kishor Kammaje

      Perfect. Got it now.

      I was used to naming the system alias same as RFC destination. So I need to be careful in naming the system alias so that it does not convey wrong meaning.

      Author's profile photo Andre Fischer
      Andre Fischer
      Blog Post Author

      Hi Krishna,

       

      from several customers we know that they have naming conventions for RFC destinations. RFC destinations may for example contain the SID and client of the target system. By using system aliases we are able to abstract from such naming conventions.

      Best Regards,

      Andre

       

       

      Author's profile photo Former Member
      Former Member

      Hi Andre,

       

      Under Activate and Maintain Services ERP_UTILITIES_UMC, I was able to transported to QA, but the changes does reflected in QA. Do you know why?

       

      Thanks

      David

      Author's profile photo Andre Fischer
      Andre Fischer
      Blog Post Author

      Hi David,

      i am not sure whether I understood your question correctly.

      Can you please give some more details what worked and what did not work?

      ERP_UTILITIES_UMC is the OData service delivered mit the solution multichannel for utilities. So this is usually imported into your backend via an add on.

      the only thing you transport is the service activation.

      so if you only have transported the service activation you might be missing the service implementation part?

      Best Regards,

      Andre

      Author's profile photo Kevin Kenfack
      Kevin Kenfack

      Hi Andre,

      thank you for your post. Please i have a question, after transporting my Fiori App to Q, how can i simply delete it without deleting one by one.

      BR,

      Kevin

      Author's profile photo Andre Fischer
      Andre Fischer
      Blog Post Author

      Hi Kevin,

      your question is not 100% clear to me since do not get what you mean by "without deleting one by one."

      Are you planning to delete one or more SAP Fiori applications (apps and odata service implementations) in your Q-system?

      Are you planning to delete apps and odata services in the dev system and are wondering whether the deletion can be transported as well?

      Best Regards,

      Andre

       

      Author's profile photo Kevin Kenfack
      Kevin Kenfack

      Thanks for your answer, i want to transport one Fiori Application form Dev in Q ( with one or more transport request). After transporting in Q i need to transport again in P-System. and also want to find a solution to delete it (apps, odata service, role and catalog) in P without delete in Dev

      BR,

      Kevin

      Author's profile photo Andre Fischer
      Andre Fischer
      Blog Post Author

      Hi Kevin,

      Deleting all items in the DEV system and then transport the deletions through Q and P.

      See also the comment of my colleague Jorge Baltazar in another blog.

      https://blogs.sap.com/2016/10/12/fiori-s4hana-basic-configuration-help-task-lists/comment-page-1/#comment-409896

      If you have objects created that are local objects and can thus not be transported my following blog might help:

      https://blogs.sap.com/2016/03/21/how-to-change-dev-class-tmp-for-the-repository-objects-of-an-odata-service/

      Best Regards,
      Andre

       

      Author's profile photo Kevin Kenfack
      Kevin Kenfack

      Many thanks.

      But can i delete all items in Q System and then transport the deletions through P? Is it possible?

      BR,

      Kevin

      Author's profile photo Andre Fischer
      Andre Fischer
      Blog Post Author

      Hi Kevin,

      deleting objects in a Q-system when they still exist in your development system is tricky. See the following blog post about "deletion transports" and especially the comments that discuss other options using SE80.

      BR

      Andre