Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Sawyer_Peng
Advisor
Advisor

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 a 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 deployment. 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 have 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 be 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 trigger 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.
35 Comments
larshp
Active Contributor

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?

Sawyer_Peng
Advisor
Advisor
0 Kudos
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
justin_tobias3
Explorer
0 Kudos
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 ?
Sawyer_Peng
Advisor
Advisor
0 Kudos
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 Chan...

Regards,

Sawyer
0 Kudos

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?

 

Sawyer_Peng
Advisor
Advisor
0 Kudos
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
0 Kudos

Thank you Sawyer for your reply,

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

Regards,

Sajal

Sawyer_Peng
Advisor
Advisor
0 Kudos
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
0 Kudos
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
Sawyer_Peng
Advisor
Advisor
0 Kudos
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
0 Kudos
Hi Sawyer,

 

I have already raised an incident 3543789 / 2022.

 

Regards,

Sajal
0 Kudos

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

Sawyer_Peng
Advisor
Advisor
0 Kudos
Yes, this is mandatory.
0 Kudos
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
Sawyer_Peng
Advisor
Advisor
0 Kudos
Looks like gCTS configuration issue, it has to be checked further.
0 Kudos

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

AdrDen
Explorer
0 Kudos
Hi sawyer.peng2,

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
BorisZarske
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi justin.tobias3,

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:

Best regards,
Boris

BorisZarske
Product and Topic Expert
Product and Topic Expert
0 Kudos
Hi dengi7,

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.


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:


Best regards,
Boris
Sawyer_Peng
Advisor
Advisor
0 Kudos
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
former_member830042
Discoverer
0 Kudos
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
Sawyer_Peng
Advisor
Advisor
0 Kudos
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
BorisZarske
Product and Topic Expert
Product and Topic Expert
0 Kudos
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
0 Kudos

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
Sawyer_Peng
Advisor
Advisor
0 Kudos
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
0 Kudos
Hi Sawyer,

Remote R/3 connection is already open for SolMan

 
0 Kudos
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/8c2eb2059e5a455a9545...

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
Sawyer_Peng
Advisor
Advisor
0 Kudos
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
0 Kudos
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'
Sawyer_Peng
Advisor
Advisor
0 Kudos
Hi Mukund,

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

Regards,

Sawyer
rajeevgoswami1
Participant
0 Kudos

Hello Sawyer,

Thanks for the informative blog.

We are planning to implement gCTS with BitBucket and planning to connect it with Solman & ChaRM. As you mentioned in blog that "so far ChaRM only supports gCTS with GitHub as the Git server."

Does it support the Bitbucket now with latest Solman release, we are using SOLMAN 7.2 SP 16?

 

Regards,

Rajeev Goswami

Sawyer_Peng
Advisor
Advisor
0 Kudos
Hello Rajeev,

ChaRM replies on gCTS API to support different Git servers, so far I can confirm that GitLab is also supported. I will ask gCTS colleagues about BitBucket and get back to you.

Regards,

Sawyer
BenjaminWeishei
Participant
0 Kudos
Hello sawyer.peng2,

Thanks for the great blog.

I also have a question regarding the supported Git servers. Is gCTS now compatible with Charm in combination with Azure DevOps Git repositories? Is there a list of supported Git servers?

We are currently working with an S4HANA 2022 System.

Best regards,
Ben
Sawyer_Peng
Advisor
Advisor
0 Kudos
Hello Rajeev,

We consulted the gCTS colleagues and they told us that Bitbucket will be supported since S/4HANA 2023 release. Technically SOLMAN 7.2 SP16 should be able to handle the Git servers which gCTS supported, we will verify it after S/4HANA 2023 officially released. And if you want to use Bitbucket with SOLMAN, you also have to consider upgrading your systems to S/4HANA 2023.

Regards,

Sawyer
Sawyer_Peng
Advisor
Advisor
0 Kudos

Hello Ben,

We consulted the gCTS colleagues and they told us that Azure DevOps will be supported since S/4HANA 2023 release. Technically S/4HANA 2022 should be compatible with Azure DevOps, but it might have unknow limitations. You can get more information from note. https://me.sap.com/notes/2821718 in the section ‘3.4 Constraints Depending on Your Git Server’.

Regards,

Sawyer