Skip to Content
Technical Articles

How to manage objects using gCTS

With launch of much awaited gCTS app in 2019 SAP has taken a step forward towards Continuous Integration. gCTS makes use of special Git features , changes in the objects are still recorded in Transport Requests . We can move the objects to remote Git repositories i.e. “Push Objects” either by releasing the Transport Request or while working on the objects.

Sounds quite easy right? Yes, it is, we will see how to use gCTS in this Blog.

Key Pre requisites for having gCTS app working are:

  • S/4HANA EM 1909 FPS00
  • JVM Version should be 1.8 or higher
  •  You have GitHub account ( in case your Enterprise has its own private GitHub , you can use the same too )
  •  gCTS app is activated and you have the required role assigned to your user as per Fiori Library

Let us see sequence of key steps that are required to push objects to remote Git repositories:

  1. Maintain Configuration : Before you create repository ; maintain the configurations
  • VCS_PATH  : It need to be set to proper directory path in order to clone repositories on OS      level. In case you do not provide any value for configuration parameter VCS_PATH, the application will not create any directory on OS level and expects that the directory already exists
  • A2G_RUNTIME: Communication application for remote repository on the OS layer
  • JAVA_RUNTIME: Path to the java environment on OS layer .

    2.  Create Repository:You need to register repository on ABAP system before you can push objects to Git repositories.

The creation part of a repository is just a registration process and the opportunity to provide further configuration before clone

You also need to maintain Configuration for Repository ( Configuration tab in repository) by maintaining below parameters before saving Repository .

Click on Save to create Repository.

  1. Initialize System : In case ABAP system is the domain controller, then choose initialize system on the main page of app. This schedules gCTS services and all the required settings for Transport Management System are done. The system will automatically create the non-ABAP system and a transport layer that will be used to transport objects that are part of packages managed by gCTS. The transport layer follows the naming convention Z+<vSID>

Now when you create objects that are required to be moved to Git Repository; assign Transport layer to objects as Zvsid (the one that was created above)

4. Clone Repository  :All update or change actions are disabled as long as the repository was not cloned.

The cloning process copies the file structure of the remote repository to the file system of your ABAP system and imports the content to the local repository on the file system. Note that this process may take some time, depending on the size of the repository

Once the Repository is created successfully, status will be changed from ‘CREATED’ to ‘READY’ at the top of Repository

Once the clone Repository is successful, Clone Repository button will be disabled. You can check the results of cloning process in Logs tab.

Now when the transport requests are released in then ABAP system; the objects will automatically be pushed to the remote repository on the Git Server.

5. Push Objects : You can also push objects manually; where the Transport request of objects are not released yet. Go to Objects tab in the repository and click on “+”

P.S:  + button is only enabled when your repository status is in ‘READY’.

Now enter the name of object /package that you would like to push manually and click on Push button as shown. It will automatically create Transport of copies having the object and will automatically release the TR in the backend

You can also use this app to import objects from Repository to your SAP S/4HANA system as well .

To summarize ; in this blog post we have seen how using gCTS app you can push the objects to Git repositories once the basic settings as mentioned above are in place .

Please share your thoughts and any additional points you think we can add .

Thank you!

You must be Logged on to comment or reply to a post.
  • Thanks Nabheet . Either you can pull manually in subsequent systems using gCTS app / we can build CI pipeline which can be used to trigger changes automatically example currently we have been using internal Devops platform for triggering automatic push into quality after validating changes by executing ATC and ABAP Unit .
    One of the use case currently we have is an existing customer who has 2 development boxes ; one for Master changes D1 and other for Project/Int bug fixes changes D2
    The Master branch contains all the user stories that have already been developed in DEV system
    The Release branch contains the code done in DEV1 system (Typically any roll out changes/Int bug fixes).
    The code from release branch is merged continuously into Master branch.The Merged code is pushed back to D1 system .So benefit typically depends on how Customers are executing their implementation projects and if they have scenarios where they would have multiple people working on same development as gCTS will give that flexibility by using branching and merging concept.

    • Hi Taranamjit, this part is the one actually, we are waiting for, because the conceptualized stuff will be there as a working model with respect to Proper branching technique of GCTS.

      But this whole CI server scenario will come once the, TR is released from DEV, as Pipeline will only start after a commit, if I am not wrong. Can you provide any conceptualized model, which you are following.

      May be my perception would not be correct, but surely waiting for your reply of what till now you have achieved. ?✌

    • Thanks John .. Sorry for coming back late ; didn't check earlier . .. Well I spare time to list down my learnings since in future if anyone else faces same issue it can help him 🙂

      We are building pipeline using Jenkins so may be after we are done I will share the experience on that as well in coming month.

  • Interesting blog, Taranamjit. Thanks for sharing.

    I'm having issues with configuring my first repo and suspect the vSID is not setup correctly.  Are able to add a screenshot of the STMS configuration that the 'Initialise System' step produces?




    • hi Ian ,

      Thank you  . I am attaching the STMS image ; I have mocked up my S/4HANA system name in the screen shot .ZG19 is the transport layer generated with Initialize step . Now any objects I assign to Transport layer ZG19 are moved to GitHub when TR is released

      • Hi Taranamjit

        Thanks for this, I now have a similar setup after following the guidance below as well.

        My virtual system was not created by the 'Initialise System' and hence I had to do it manually.



  • Hi Taranam,

    Thanks for sharing. Very detailed post.

    I read you are building the pipeline using Jenkins, wondering if you have already observed any significant effort savings and impact on RICEFW objects.