Skip to Content
Product Information
Author's profile photo Karin Spiegel

The gCTS-Story Continues…

SAP S/4 HANA 2020 is there. It comes with new offerings and features for gCTS.

The most important one is maybe the new repository layout – we call it Layout Version 3. When you create new repositories, the new repository layout will be used, the file format will be set to JSON by default (as long as the repository is empty, you can also switch to xml if you like ) and support for table data will be included. With JSON as file format the readability of the repository content is improved.

But why is that feature that important? Do you really need it? Most probably yes – the new layout version is the prerequisite for one of the most wanted features since gCTS is out: You can now also push customizing transport requests into your Git repository and pull them into one client on the target system. Technically speaking, objects of the types TDAT and VDAT are supported – support for CDAT objects is not available yet , but we plan to include it, soon.

Using gCTS for customizing is very simple: Just enter the correct target system when creating the transport request – this is the virtual SID (vSID) that you defined when you created your repository.

You can find more details on the SAP Help Portal in the chapter Use gCTS for Customizing Data.

gCTS also takes first steps towards supporting conflict resolution

  • Automatic push and pull are not an option, if you expect conflicts and need to resolve them. Up to now, gCTS used to pull the current state of the remote repository and merge the changes into that state before pushing. The consequence of this is that changes that were provided to the remote repository from another source could be overwritten by your new push as committing and pushing were executed at once . So, the first step towards conflict resolution is to stop this behavior. Therefore, you have to set two parameters for the repository (or on system level if you want to introduce the behavior for all repositories) Disable Automatic Pull and Push
  • The Objects tab in the gCTS app provides the tools that you need to track files that cause conflicts. For conflicting files, you can open a conflict resolution UI which shows the local and the remote versions as well as a merge suggestion that you need to edit. Please check the SAP Help Portal at Use the Conflict Resolution Editor for more details

To give you an idea, what the conflict resolution UI looks like:

In addition, SAP S/4HANA 2020 comes with two improvements that help you setting up gCTS more smoothly and checking the configuration:

  • The Wizard to Enable gCTS and
  • the Health Check to get details if everything works fine or if there are issues.

Another good thing about the Enable gCTS Wizard and the Health Check: You can add them to your SAP S/4HANA 1909 system as well, by implementing a few SAP Notes or implementing a Support Package – Check the central gCTS Note 2821718 for details.

You can find many more details and links to documentation topics in the section Git-Enabled Change and Transport System of the ABAP Platform What’s new Viewer.

Assigned Tags

      18 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Clemens Prill
      Clemens Prill

      Hello Karin,

      it's great to hear that gCTS gets enhanced and improved! We as a partner and customer look forward to this. From our experience with gCTS and after reading your post, I have some questions/feedback:

      1. Does the new JSON file format replace the XML file format in future or will SAP maintain both formats as supported? For now, I feel like XML would be a better choice than JSON so I'm a bit worried that XML will be removed in future.
      2. SAP mentioned that they want to try to become compatible with abapGit's file format and to introduce a new file format for these purposes. Is it planned that JSON will become the new foundation for a new file format which fits this use case the best? I refer to the statements in the Statement of Direction for Continuous integration in an ABAP environment, version 1.3 from 2019.
      3. Does the branch support get enhanced too?
      4. My impression by the screenshot showing the comparison of two objects is that it becomes quickly overwhelming when you compare complex objects (many lines of code) or even branches with multiple changed objects. The comparison from abapGit, GitLab or Git itself is quite good. Could it be possible that we get that as a new feature or enhancement to better compare complex changes?
      5. Does SAP S/4 HANA 2020 get authentication methods not just for GitHub but also for GitLab and especially private Git repositories? In the past authentication wasn't supported and the URLs were static so they didn't fit to newer GitHub/GitLab API versions.

      I noticed that the last link to the ABAP Platform What's new viewer is broken. It returns an error: "We're sorry, but this content is not accessible." Can someone fix this?

      Thank you to you and your team for making gCTS possible!

      Best Regards,

      Author's profile photo Karin Spiegel
      Karin Spiegel
      Blog Post Author

      Hi Clemens,

      Concerning your questions:

      1. For compatibility reasons, XML will stay. Please note that Repositories that already contain objects have to stay in the format that they are. You can only switch the format for newly created repositories directly after their creation.
      2. We plan to create a new file format in gCTS that improves e.g. readability. We hope that this can then also be used by ABAPGit
      3. It depends on what you would like to do with the branches. Creating different branches and switching between branches can be done. If you need to do conflict resolution when merging, then the conflict resolution that is shown in the blog post is a first step that shall support use cases that need this feature. If you would like to do distributed development where development is done in different systems in different branches and would like to merge these developments in one branch on e.g. an integration system, then you might need some kind of registry to remember where an object originates from, then we cannot support this up to now.
      4. the conflict resolution UI is a first step to support merge scenarios where conflicts need to be resolved. It always compares single objects, not complete branches. The objects that require attention when merging are shown on the objects tab of the gCTS SAP Fiori App. You can then open the conflict resolution for each of these files and decide whether one or the other version shall win or solve the conflicts. Do you miss the color code inside that UI?
      5. gCTS in general is not restricted to a certain Git-Platform.
        You can use SSL and SSH for authentication in gCTS in SAP S/4HANA 1909. The parameter for this is CLIENT_VCS_CONNTYPE. Documentation is available in here: This also supports GitLab
        In SAP S/4HANA 2020 you can make use of user specific authentication in gCTS. Details are described in here

      concerning the link for the What's New Viewer: it works for me...could you maybe try again?

      Hope this helps
      Kind regards
      Karin

       

      Author's profile photo Clemens Prill
      Clemens Prill

      Hi Karin,

      thank you for your prompt reply and sorry for my late reply! First of all, the link does work for me now. Seems like someone did fix this or it was some temporary issue :). My colleagues had issues with this link before too.

      4. I see two places where this object comparison makes sense: a) Having a conflict in a merge to fix and b) You want to see the differences between objects between two commits or branches. It would be nice if you have a nice overview for all the changes; not just one by one in a single object/file. An example for this would be the great split or unified diff view of abapGit.

      5. There were technical limitations in the gCTS SAP standard regarding these points so we had to modify the SAP standard on our own. SAP support confirmed that there was no solution for that yet, beside implementing your own changes.

      We will make sure that we take a look at the new gCTS versions to see all the new features and details.

      Thank you!

      Best Regards,

      Author's profile photo Karin Spiegel
      Karin Spiegel
      Blog Post Author

      Hi Clemens,

      concerning 4. and another argument for looking into SAP S/4HANA 2020: with this release, you can use the compare functionality for branches to get the differences. Details are on the SAP Help Portal at Use the Branches Tab of a Repository.

      Kind regards
      karin

      Author's profile photo Himanshu Sharma
      Himanshu Sharma

      Hello Karin,
      Exploring GCTS since for some time now, got some doubts...
      we are now able to put almost all the configurations, also tested pushing the objects on Git.
      But how we can pull the object through gcts, will it be an automatic import to Test system only, or we also can pull the same object to Dev again also.
      If this is so, then we must have to configure Test system first, focusing on the domain controller part explained in blogs.
      Or, still with only Dev system also it is possible to pull the objects to Dev back.

      Author's profile photo Karin Spiegel
      Karin Spiegel
      Blog Post Author

      Hi Himanshu.

      gCTS itself does not import or deploy anything automatically anywhere. gCTS creates out of the box a new commit when you release a transport request. This means the your customizing / coding is converted into files and stored in a Git repository. Nothing else happens automatically.

      The commits are then available for all systems that are connected to the same repository (and have the respective branch activated). You could choose any commit from the list and activate it for your system. This can be a QA system or also the development system itself if you would like to activate older coding versions. But please be aware that there is not backup done for data that was created using later coding versions. If you activate a commit, the coding of that commit will be deployed and activated. This can result in a loss of data.

      Details on how to work with the commits tab are available on the SAP Help Portal at Use the Commits Tab of a Repository

      If you would like to automate the process of importing new commits e.g. into a test system, you would need to set up a pipeline. Some sample steps for this are provided in Project 'Piper'

      The Library Steps that are made for gCTS in onPremise systems all start with gCTS - e.g. https://sap.github.io/jenkins-library/steps/gctsCloneRepository/

      Kind regards

      Karin

      Author's profile photo Asanka Liyanage
      Asanka Liyanage

      Hi Karin,

      If I have traditional 3 box SAP system can I still use gCTS? why should I use gCTS instead of normal CTS?

      Please explain.

      Thank you!

      Asanka.

      Author's profile photo Karin Spiegel
      Karin Spiegel
      Blog Post Author

      Hi Asanka,

      the idea of gCTS is explained in here: https://blogs.sap.com/2019/11/14/gcts-is-here/

      gCTS is an option to move your ABAP development towards DevOps processes. It is not a must. CTS is still available and supported. You don't have to use gCTS if the transport processes provided by CTS fulfill your requirements.

      Kind regards

      Karin

      Author's profile photo Asanka Liyanage
      Asanka Liyanage

      Hi Karin,

      our gCTS set up was working fine for 2 months and all of a sudden it has broken the connection from ABAP to Remote repository. 
      Credentials were saved successfully and now it complains that there is no access authorisation to the remote repository. 
      I have created a new token and tried to save it in credential store yet it does not seem to be accepting that. 
      error message is 'Credentials could not be validated.'. we have applied the note for this issue as you have suggested previously.
       I am confused as I have done everything from my end to resolve this issue. yet, unsuccessful. 
      could you please help me to figure out what went wrong?

      Thanks!!!.

      Asanka.

      Author's profile photo Karin Spiegel
      Karin Spiegel
      Blog Post Author

      Hi Asanka,

       

      this is hard to say from a distance. I am sure that you did look into it, but my only guess is that something with the token went wrong. Did you copy the token without any blanks in the beginning and in the end?  On which release are you? If its a newer one, then is the selected endpoint type correct?

      (in addition - not related to this error, but if tokens are running out of validity: did you store new tokens both for the 'real' users and also for the user who runs the observer job?)

      Kind regards

      Karin

      Author's profile photo Asanka Liyanage
      Asanka Liyanage

      Thanks Karin.

      I will check the settings again and see.

      by the way how do you create credentials in github for the user who runs the observer job ?

       

      Thanks,

      Asanka.

      Author's profile photo Karin Spiegel
      Karin Spiegel
      Blog Post Author

      Hi Asanka,

      you creta a 'normal' user on GitHub - noting special about this user - and create a token for this user. Then you open the gCTSApp of your ABAP system, log on with the user who runs the observer job  and add this token to the credentials store of the user.

       

      Kind regards

      Karin

      Author's profile photo Asanka Liyanage
      Asanka Liyanage

      Hi Karin,

      when I try to add gctsobserver as a collaborator I can't find gctsobserver on the list.  how could I add 'gctsobserver' to the list? please help. That is the issue I guess.

       

      Thanks,

      Asanka.

      Author's profile photo Karin Spiegel
      Karin Spiegel
      Blog Post Author

      Hi Asanka,

      in which ist do you look for this user? If you try to find him on github.com because this is the user that we used in the openSAP course, then this is not possible. The user was just an example for the course. You need to make use of your own users.

      Kind regards

      Karin

      Author's profile photo Asanka Liyanage
      Asanka Liyanage

      I see. I think that explains it. Thanks Karin. I will create our own user.

      Cheers,

      Asanka.

       

      Author's profile photo Abhinav Gupta
      Abhinav Gupta

      Hi Karin

      Is there any documentation on how to use gCTS for customizing data between two clients of the same system? gCTS App setup? How will we set up the repositories in the GCTS App and Git? I am assuming registry will be mandatory for that scenario? supported by SAP??

       

      Thank you

      Abhi

      Author's profile photo Karin Spiegel
      Karin Spiegel
      Blog Post Author

      Hi Abhi,

      currently, there is no documentation for that.

      First thing you should have is (at least) one separate repository for customizing, Workbench objects should not be pushed into that repository. In addition, you should have on separate branch per source client.

      Imports should be turned off to avoid imports when switching branches

      To pull the same content into another client of the same system, you would need to log on to the gCTS App in that respective client and then do a deploy as described in here: https://help.sap.com/docs/ABAP_PLATFORM_NEW/4a368c163b08418890a406d413933ba7/36e4d0c2d0484c08923b77b01522c0d8.html

      Kind regards

      Karin

      Author's profile photo Abhinav Gupta
      Abhinav Gupta

      Hi Karin

      Than you so much for the quick response.

      We will try this approach and respond here, if we get stuck. 🙂 and/or if it does not work and maybe a support message.

      Thank you

      Abhi