Skip to Content
Product Information
Author's profile photo Sawyer Peng

How Change Request Management (ChaRM) Leverages Git-enabled CTS (gCTS)

Introduction

Change Request Management (ChaRM) controls change and transport process for ABAP system landscape which is based on classic Change and Transport System (CTS), but since SAP Solution Manager 7.2 SP12 ChaRM integrated with Git-enabled Change and Transport System (gCTS) to provide a possibility to transport ABAP code using Git-enabled CTS instead of CTS. A new change document type introduced to support the change management process. By default, Git-enabled changes are delivered as change transaction SMGH.

Prerequisite

In order to run Git-enabled Change process you have to be prepared. First you have to configure gCTS for ChaRM, so far ChaRM only supports gCTS with GitHub as the Git server. You can get more details about the configuration from the online help Configuring Git-enabled CTS.

To get a better understanding about Git-enabled Change, you can refer to online help Processing Git-enabled Changes.

Working with Git-enabled Change

Add your managed gCTS system (SAP_BASIS 755 SP00 and higher) to your Solution according to their system roles even they don’t have transport routes connected. E.g., take H18 as the development system, H19 as the testing system and H17 as the production system in the Solution definition, but they are seperated systems without transport routes.

Git-enabled Change supports all kinds of Change Cycles (Continual Cycle, Phase Cycle and Release Cycle), you have to build the transport track for your gCTS landscape manually during the tasklist creation of Change Cycle. Because in fact the gCTS systems are isolated from each other and you have to create the “transport routes” in your mind and connect them by system roles they acted, ChaRM will detected the valid gCTS systems and you only have to assign them to related system roles. Git-enabled Change support gCTS landscape with mutiple target systems and production systems, each target system or production system has an equal position in its role.

Once tasklist created, you will see what a gCTS transport track looks like in the landscape overview. And Git-enabled Change doesn’t support cCTS scenario so far.

 

Create a Git-enabled Change (SMGH) with the Change Cycle you just created, set the status to “In Development“. As developer you have to assign a Git repository and branch to the Git-enabled Change, which means you code change will be managed by the Git repository you choosed. Normaly your gCTS system might be linked to several Git repositories, but you have to decide which one is used for your Change.

After the Git Version Control Data saved, then you can start your development work with creating a new transport request. The gCTS transport request will be created by gCTS API and it has specific attributes assigned, although it looks the same like normal transport request but it will never be exported and imported (since there is not transport route at all).

If the developer finishes the development work then next transport task should be released, during the releasing of the transport task the ABAP code will be pushed to related non-production branch (usually we use feature branch) of the Git repository.

Go to Transport Management assignment block of your Git-enabled Change, there is a column named “Commits” in the table. Each time when developer releases a transport task from gCTS development system, the ABAP code will be pushed to Git repository with a new commit ID.

Click on the commit number link, the details of the commit will be displayed in an popup. And click on the commit ID link, it will open the commit details in Git repository. The ABAP code change will be described as XML data in Git repository, this means the ABAP code change already been pushed to Git repository. By default the code was pushed when releasing the transport request, but ChaRM requires the code pushing at task release, refer to SAP Note 2983745 for more details.

As developer finished the code change and set the Git-enabled Change to status “To Be Tested“, the code change will be pulled from Git repository and deployed into quality assurance system. During the whole process ChaRM triggered the code pull on quality assurance system, and the gCTS APIs on quality assurance system executed the pulling and delpoyment. This is totally different from traditional CTS mechanism, which original transport request or transport of copy was imported into quality assurance system.

Go to Landscape assignment block of Git-enabled Change, there is column named “Current Commit” for each system, which means the newest code version comes from the commit of Git repository. The development system and test system now has the same current commit, so the ABAP code change already deployed into test system. This action will also be recorded in the text log. Click on the hyperlink of the commit ID, it will also open the commit details in Git repository.

Till now developer handover the code change to tester and  tester will verify the feature on test system, if everything works as expected then tester will set the Git-enabled Change status to “Successfully Tested“. The original gCTS transport request was released from development system, but it will never been exported because there is no consolidation route between development system and the test system, in gCTS world the releasing of the transport request only means the development work is completed, no new transport tasks and no commits will come.

At this point of time, the testing phase is also finished. The Change Manager is considering making the code change productive, this means the Change Manager will approve the code change to be move into production system. To achieve this, the Change Manager set the Git-enabled Change to status “Authorized for Production“. And what ChaRM will do in the backend is very different from the past, since now ChaRM leverages the gCTS API and Git process, so if ABAP code is going to be productive, the code in Git repository must be productive first. This step will triggers an action in Git side: a Pull Request will be created and the approved, then the code in non-productive branch (feature branch) will be merged into production branch (master/main branch), this is how code change go-live in Git world. The production system is linked to the productive branch of the Git repository, so ChaRM has to make sure the code in Git side go-live first. The text log will record the action, and the Pull Request could be found in the Git.

At the very last step it’s time to let the ABAP code go-live in the production system, IT Operator sets the Git-enabled Change status to “Deployed into Production“, then the code change will be pulled from productive branch (master/main branch) of the Git repository and deployed into production system. It is very similar when the code was deployed into test system, the only difference is that the code was pulled from non-productive branch (feature branch).

Go to Transport Management assignment block, click on the icon in “Deploy Status” column, you will get an overview on which commit was deployed by which transport request for each target system and production system.

Summary

Git-enabled Change (SMGH) is the dedicated transaction type for ChaRM to leverage the new way of ABAP code transport provided by gCTS, and Git-enabled Change present you how ChaRM tried to integrate with CI/CD process.

Assigned Tags

      30 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Lars Hvam
      Lars Hvam

      One branch can be pulled into a system per software component? As a consequence, only one feature branch can be tested in the QAS system at a time, per software component?

      In a CI setup, "Integrate your changes into the main line frequently and in small bits." (ref), ie. every feature is a small change, resulting in typically many feature branches?

      Author's profile photo Sawyer Peng
      Sawyer Peng
      Blog Post Author

      Hi Lars,

      You can have serveral branches for your DEV and QAS system, but you can only have one branch active for you system. Which means you can have a specific branch for one component, but if you want to make change to other component then you have to switch branch then.

      You can choose to have onlyh one feature branch and merge the small changes to your main branch frequently, typically you can do the merge whenever you want, you don't have to create a branch for every small feature specially.

      Regards,

      Sawyer

      Author's profile photo Justin Tobias
      Justin Tobias

      Hi Sawyer

      We have Solution Manager ChaRM (on-prem) and would like to configure the CI/CD pipeline + GitHub repository for Fiori development in the SCP (Cloud) environment using ChaRM. What is your recommendation ?

      Author's profile photo Sawyer Peng
      Sawyer Peng
      Blog Post Author

      Hi Justin,

      As far as I know, the Git-enabled CTS (gCTS) currently doesn't support SCP (should be BTP now) officially, but it will come later I believe.

      So far for SCP development, ChaRM provides Cloud TMS process but it has no integration with CI/CD + GitHub. You can refer to How to use the integration of SAP Cloud Platform Transport Management into SAP Solution Manager Change Request Management and Quality Gate Management | SAP Blogs

      Regards,

      Sawyer

      Author's profile photo Boris Zarske
      Boris Zarske

      Hi Justin Tobias,

      Although your question is already older, I also wanted to point out the situation for SAP BTP: here, we have SAP Cloud Transport Management service, which is integrated both with:

      1. CI/CD (for example, using the integrated hand-over option in the release stage of SAP Continuous Integration and Delivery service of the included pipeline templates for SAP Fiori that directly trigger a transport of the qualified changes in SAP Cloud Transport Management - or by using the tmsExport or tmsUpload step of project 'Piper' [described in this scenario] with any third-party CI/CD infrastructure)
      2. Change Management - be it ChaRM/QGM of SAP Solution Manager (see link in Sawyer's reply) or change and deployment management capabilities of SAP Cloud ALM (described here)

      If you want to see this interplay of SAP Continuous Integration and Delivery service, SAP Cloud Transport Management service and change management (on the example of SAP Cloud ALM) in action, there has been a webcast recently you can watch on YouTube here.

      The holistic picture is shown here:
      Holistic%20picture%20of%20hybrid%20change%20management

      Best regards,
      Boris

      Author's profile photo Sajal Jain
      Sajal Jain

      Hi Sawyer

      Do we require these three systems in the gCTS integration with the ChaRM or is it possible to do this configuration with only Two system connected with ChaRM?

       

      Author's profile photo Sawyer Peng
      Sawyer Peng
      Blog Post Author

      Hi Sajal,

      So far two system landscape is not supported by ChaRM Git-enabled Change process, the best practice always recommends at least one test system for your landscape.

      Regards,

      Sawyer

      Author's profile photo Sajal Jain
      Sajal Jain

      Thank you Sawyer for your reply,

      Can we use virtual system as one of the three systems?

      Regards,

      Sajal

      Author's profile photo Sawyer Peng
      Sawyer Peng
      Blog Post Author

      Hi Sajal,

      I don't think you can use a virtual system, as ChaRM will check every system if it is gCTS enabled.

      Regards,

      Sawyer

      Author's profile photo Sajal Jain
      Sajal Jain

      Hi Sawyer,

      What auth and roles are required when we upgrade our solman, to be able to create git enabled change in SM_CRM.

      We are not able to see the Default transaction SMGH while creating a change.

      Regards,

      Sajal

      Author's profile photo Sawyer Peng
      Sawyer Peng
      Blog Post Author

      Hi Sajal,

      Regarding the configuration and authorization for Git-enabled Change, I suggest you raise an incident to SAP support.

      And regarding your last question which was about two system landscape for SMGH, I checked again and we support this kind of system landscape, you can have only Dev system and Prd system in your landscape.

      Regards,

      Sawyer

      Author's profile photo Sajal Jain
      Sajal Jain

      Hi Sawyer,

       

      I have already raised an incident 3543789 / 2022.

       

      Regards,

      Sajal

      Author's profile photo Mukund Joshi
      Mukund Joshi

      Hi Sawyer,

      We have SolMan system having version 7.2 SP16, which is connected to S4HANA 2021 FPS03 systems S4 Dev (Actual), S4 Qas (Actual) S4P (Virtual) and there is already STMS route S4 Dev-S4 Qas-S4P, the standard ChaRM Normal Change other types works fine.

      We have also setup gCTS in S4 Dev S4 Qas and it works OK as expected.

      Now when we are trying to create the ChaRM Phase Cycle to Add Git-enabled Tracks, we are NOT able to see S4 Dev S4 Qas in drop down to select under Development & Target systems respectively, but surprisingly we can see the S4P system under Production even though S4P is a Virtual system.

      SAP Incident raised:

      5867851 / 2023 Issue in ChaRM Phase Cycle with gCTS systems
      Author's profile photo Sawyer Peng
      Sawyer Peng
      Blog Post Author

      Hi Mukund,

      I can see that my colleague is handling it, I also want to have a check but the R/3 connection for SOLMAN system is not available.

      Regards,

      Sawyer

      Author's profile photo Mukund Joshi
      Mukund Joshi

      Hi Sawyer,

      Remote R/3 connection is already open for SolMan

       

      Author's profile photo Sajal Jain
      Sajal Jain

      Hi Sawyer,

      Is it required to implement SAP note 2945557 - Git-enabled Change and Transport System (gCTS) Dedicated Remote Function Modules for Change Request Management (ChaRM) in our managed systems when we are integrating gCTS with ChaRM?

       

      Regards,

      Sajal

      Author's profile photo Sawyer Peng
      Sawyer Peng
      Blog Post Author

      Yes, this is mandatory.

      Author's profile photo Sajal Jain
      Sajal Jain

      Hello Sawyer,

       

      As you have mentioned, we have to build the transport track for our gCTS landscape manually during the tasklist creation of Change Cycle, but while task list creation we are getting the error consolidation system not found and no transport track for current config. what can be the reason for that?

       

      Reagrds,

      Sajal

      Author's profile photo Sawyer Peng
      Sawyer Peng
      Blog Post Author

      Looks like gCTS configuration issue, it has to be checked further.

      Author's profile photo Sajal Jain
      Sajal Jain

      Can you please check, I have already opened an incident 3543789 / 2022

      Author's profile photo Adrian Dengusiak
      Adrian Dengusiak

      Hi Sawyer Peng,

      Thanks for your blog, it's very interesting. Can we use this mechanism for SAPUI5 apps? Or it's only for ABAP?

      We have GitHub, where we store our custom UI5 apps, we also use ChaRMs to manage transports. We have 3-systems on-premise landscape (dev, qa, prod).

      It would be very nice to automate the transports and builds between different systems, but is gCTS a right tool? Is it possible to build & deploy UI5 apps like you presented in the blog or we should go for Project Piper?

      BR,

      Adrian

      Author's profile photo Boris Zarske
      Boris Zarske

      Hi Adrian Dengusiak,

      For SAP Fiori apps, gCTS would not apply - but besides project 'Piper', you could also consider SAP Continuous Integration and Delivery service, which also allows a direct deployment to an ABAP front-end server/Gateway, for which it brings a dedicated pipeline template as part of the service.

      Pipeline%20for%20SAP%20Fiori%20running%20on%20ABAP%20Front-End%20Server

      Here, you can set up an automated pipeline, linked to your Git repository, that does automatically build and qualify your SAP Fiori changes and out-of-the-box can perform a direct deployment (via SAP Cloud Connector), without own CI/CD infrastructure:

      Release%20stage%20of%20SAP%20Fiori%20pipeline%20for%20ABAP%20Front-End%20Servers

      Best regards,
      Boris

      Author's profile photo Sawyer Peng
      Sawyer Peng
      Blog Post Author

      Hi Adrian,

      Sorry for the late reply. So far, we only support ABAP changes. But I think Boris provided a good idea to you.

      Regards,

      Sawyer

      Author's profile photo Neha Singh
      Neha Singh

      Hi Sawyer,

      We are planning to integrate GitHub with SAP BTP.Can you help us with any documentation on how to do that?
      We already have Charm integrated with CTMS, would it be possible to integrate Charm with GitHub too in this scenario?

      Thanks

      Neha

      Author's profile photo Sawyer Peng
      Sawyer Peng
      Blog Post Author

      Hi Neha,

      ChaRM couldn't work with GitHub directly, ChaRM integrates with Git-enabled CTS (gCTS) and gCTS works with GitHub directly. And so far gCTS only supports on-premise landscape, maybe gCTS will support BTP in the future but now it's not possible.

      Regards,

      Sawyer

      Author's profile photo Boris Zarske
      Boris Zarske

      Hi Neha,

      As Sawyer already outlined, the flow for ABAP development on-premise/in private cloud around SAP S/4HANA would be GitHub --> gCTS --> ChaRM.

      For SAP BTP, the flow would be GitHub --> cTMS --> ChaRM. This is now also in place for SAP BTP, ABAP environment, as described in this blog post.

      Best regards,
      Boris

      Author's profile photo Mukund Joshi
      Mukund Joshi

      Hi Sawyer,

      Error: Git-enabled ChaRM: Deployment into test systems has not been completed

      We have setup Git-enabled ChaRM in our SolMan 7.2 SPS 16 system SolMan system by following SAP guide https://help.sap.com/docs/SAP_Solution_Manager/8b923a2175be4939816f0981b73856c7/8c2eb2059e5a455a954578473cb472b5.html?version=7.2.16

      The SolMan SolMan system is connected to S4HANA 2021 FPS03 systems S4HANA Dev and S4HANA Qas, on S4HANA we have setup gCTS Fiori other required configuration which works OK independently of ChaRM.

      Now, when we tried to create Git-enabled change, we were able to create TR via ChaRM in S4HANA Dev, after making change when we released only Task, gCTS in S4HANA Dev creates commit in Github local and remote repositories of S4HANA Dev as we have enabled task based commit in Git as mentioned in blog https://blogs.sap.com/2020/08/05/create-a-commit-in-git-when-an-abap-task-is-released/

      But when we tried to change status of Git-Enabled Change from In Development to To Be Tested, it shows below error

      " Status was reset by system
      Deployment into test systems has not been completed."

      One thing we observed in ChaRM task list that the Action 'Deployment in Target System (/TMWFLOW/SCMA_TRORDER_DEPLOY)' does not show any logs

      Author's profile photo Sawyer Peng
      Sawyer Peng
      Blog Post Author

      Hi Mukund,

      You should not follow https://blogs.sap.com/2020/08/05/create-a-commit-in-git-when-an-abap-task-is-released/ for ChaRM setup, it's for pure gCTS not ChaRM.

      For task level commit you should implement SAP Note 2983745 and follow the instructions.

      Regards,

      Sawyer

      Author's profile photo Mukund Joshi
      Mukund Joshi

      Hi Sawyer,

      We have already implemented automatic corrections of SAP Note 2983745 in managed S4HANA 2021 FPS03 dev system.

      The manual steps mentioned in SAP Note are applicable to SAP_BASIS release 755 & 757, but our SAP_BASIS  release is 756, so we are confused which manual steps of SAP Note 2983745 to be followed?

      We have already raised Case ID: 5917995 / 2023 for 'Error: Git-enabled ChaRM: Deployment into test systems has not been completed'

      Author's profile photo Sawyer Peng
      Sawyer Peng
      Blog Post Author

      Hi Mukund,

      Please follow the 755 manual activity as I mentioned in the case.

      Regards,

      Sawyer