gCTS
gCTS is an offering from SAP that allows us to manage ABAP (Advanced Business Application Programming) change and transport management processes using Git as an external version management system. By integrating Git with the traditional SAP transport system, gCTS enables developers to leverage Git's powerful version control capabilities, branching strategies, and collaboration features in the context of SAP ABAP development.
Key Features
Git Integration: gCTS integrates Git repositories with SAP systems, allowing ABAP developers to store their source code, configurations, and other development artifacts in Git repositories.
Version Control: Developers can take advantage of Git's version control features, such as branching, merging, and code reviews, to manage ABAP source code changes more efficiently.
Continuous Integration and Delivery (CI/CD): By using Git and gCTS, SAP customers can set up CI/CD pipelines for ABAP development. This enables automation of testing, deployment, and release processes, leading to faster and more reliable software delivery.
Collaboration: Developers can collaborate more effectively by using Git's collaboration features, such as pull requests and code reviews, to review and discuss code changes before they are merged into the main codebase.
Traceability and Auditing: gCTS provides traceability and auditing capabilities, allowing organizations to track changes made to the SAP systems and ensuring compliance with regulatory requirements.
gCTS Integration with ReleaseOwl
The integration of gCTS (Git-enabled Change and Transport System) with ReleaseOwl is a powerful combination for SAP customers. By integrating gCTS with ReleaseOwl, organizations can leverage the functionalities of Git repositories and establish robust Continuous Integration and Continuous Delivery (CI/CD) processes for their ABAP (Advanced Business Application Programming) development. The integration of gCTS with ReleaseOwl offers a streamlined and efficient approach to managing ABAP development, enabling organizations to deliver high-quality SAP applications faster, with reduced risks, and improved collaboration among team members. To enable gCTS we require a Git platform host, an ABAP system in which code will be developed, and a CI server (which is optional) which can be used to automate development cycle.
Prerequisites
Before starting the gCTS configuration, ensure the following prerequisites are met:
An SAP S/4 HANA 1909 or 2022 system
An SAP machine (with version 11 or higher) or comparable JRE
Import the relevant SAP Central Note (based on the SP level of your system)
Create gCTS-related working directories at the OS level
Configuration Steps
Once the prerequisites are met and the ABAP system is ready, proceed with the configuration which consists of three major steps:
gCTS Configuration on ABAP System
Git Enablement
CI/CD Pipeline Configuration in ReleaseOwl
Steps in the ABAP System to Complete the gCTS Configuration
Validate Required SAP Notes
Authorizations
Validate Required Ports
gCTS Fiori UI Enablement
Set Parameters and Initialize Systems
Systems in use here to guide the user the steps involved
Access to either GitHub or BitBucket
Access to the gCTS environment of SAP (S4 2022). Here – S4D (main Dev system), S4Q (QA system) and S4V (virtual system for production).
Each package should be linked to one repository.
Steps Involved in gCTS Configuration with GitHub
Create a new repository in GitHub. (Example:
ZKRK_GCTS_SALES.
)Open the gCTS environment for SAP using the Fiori app URL.
Log in using your SAP gCTS ABAP system credentials.
A blank screen is displayed by default upon successful login.
Search for:
gcts
in the Fiori Launchpad.Select: Git-enabled CTS – Manage Repositories.
All existing repositories linked to the current gCTS environment are displayed.
Click on Create to initiate repository creation.
Fill the required details as follows:
Field
Description
URL
Enter the URL of the GIT repository you want to link with the SAP gCTS environment.
Description
Enter a relevant description, or keep the default description text.
vSID
Enter any name of your choice. A virtual system with this name will be created in the Transport Route. Note: Each unique GIT repository requires its own virtual system in SAP gCTS.
Role
Select Developer.
Type
Select GitHub.
Visibility
Select Private.
Click Save. A new repository gets created.
Upon repository creation:
A new transport layer is automatically created.
This transport layer appears under the Configuration tab parameters.
The naming convention used is
Z<vSID>
where<vSID>
is the system ID.It is also visible in the Transport Routes screen.
Repository Authorization and Configuration
Authorization is required to clone the repository:
Navigate to the Configuration tab.
Click Create.
Add the following two parameters:
CLIENT_VCS_AUTH_USER
: Enter the GitHub user ID in the Value field.CLIENT_VCS_AUTH_TOKEN
: Enter the GitHub personal access token.
Both parameters will appear in the configuration list.
GitHub Branch Setup
Create required branches in GitHub:
dev
branch frommain
qa
branch fromdev
Repository Cloning and Development in SAP
Navigate to the SAP gCTS application.
Clone the ABAP system repository with the one created in GitHub.
This creates a local copy of the GitHub repository in the SAP ABAP system.
The latest commits from GitHub become visible in the local repository.
For every repository:
The default active branch in SAP gCTS is
main
.Any changes made in SAP will be saved to this branch by default.
Based on the requirement, the active branch can be changed (e.g., set to
dev
instead ofmain
).
Create the same package in the SAP ABAP system as defined in the gCTS environment.
Enter all the required details:
Select the transport layer created during the repository creation in gCTS.
Click Save.
The system prompts the user to create a transport request:
Create a new transport request.
Click Save.
Now, create a class in the same package:
Enter all the required details.
Choose the appropriate package.
Click Save.
The system prompts to associate the class with a transport request:
Select the newly created transport request.
Save the changes.
Make required changes to the class.
Save and activate the objects.
Release the task associated with the transport request in use.
Integration of SAP gCTS with ReleaseOwl and GitHub
Register the Transport Manager Credential in the Credential Manager section in ReleaseOwl.
Register the Transport Domain Controller in ReleaseOwl:
Click Get Systems to fetch all systems available in the system landscape.
The newly created SAP system ID (e.g., RKS) will be listed.
Register the GITHub credential in the Credential Manager.
Register the dev ABAP system in ReleaseOwl as follows:
Ensure to select the role as Development.
Choose the appropriate credential for each repository.
The SAP system should be the actual Development system (e.g., S4D) and not the gCTS Virtual System (e.g., RKD).
Set up the QA gCTS system for transporting changes from Dev to QA:
Login to QA SAP gCTS using SAP ABAP credentials.
Create a repository in QA with the same name as in Dev.
Fill in the required details accordingly.
Field
Description
URL
Enter the URL of the GIT repository that you want to link with the SAP gCTS environment.
Description
Enter a relevant description, or keep the default description text.
vSID
Enter the name of the virtual system that was created in the SAP gCTS Dev environment.
Role
Select Provided.
Type
Select GitHub.
Visibility
Select Private.
Add two configuration parameters in QA as done in Dev:
CLIENT_VCS_AUTH_USER
CLIENT_VCS_AUTH_TOKEN
Clone the repository in SAP gCTS (QA) environment to the ABAP system.
Switch the active branch from
main
toqa
.
Register the same ABAP system in ReleaseOwl for QA:
Login to ReleaseOwl and add a new ABAP system.
Select the role as Provided.
Choose the appropriate credential for each repository.
The SAP system should be the actual QA system (e.g., S4Q) and not the gCTS Virtual System (e.g., RKS).
Add the appropriate SAP ABAP environment to the active project in ReleaseOwl.
Create a User Story in ReleaseOwl.
Add the transport request to the user story and save the changes.
Release the transport request from ReleaseOwl.
Once the transport request is released:
The associated commits can be viewed.
In GitHub, refresh the repository — the new objects will now be visible in the dev branch.
The changes will not be pushed to QA until the transport request is imported into QA.
Create a Release Pipeline in ReleaseOwl:
Add a Deployment Task.
Save the pipeline.
Associate the release pipeline with the active Project Settings in ReleaseOwl.
Grant Deployment Permissions to the user:
Navigate to: Project Settings > Users > Security.
Without this, deployment will not proceed.
Promote the User Story to QA:
Click OK.
Check for any Approval Tasks that may be pending for deployment to take place.
Once the approver approves the task, the deployment starts.
Click on Go to Pipeline Activity.
Check the Deployment Logs.
The gCTS task details are visible directly in the pipeline activity logs. This links the deployment to specific gCTS tasks, supporting traceability and audits.
When you click “View gCTS Switch Details” in ReleaseOwl (Pipeline Activity > Logs), you can view metadata related to the gCTS operation for the associated deployment.
Once deployment is successful:
Verify that changes are pushed to the qa branch in GitHub.
Login to SAP gCTS (QA) and confirm that the latest commits are available.
Login to S4Q (QA) ABAP system:
On the first transport, the package, class, and objects will be pushed to QA ABAP.
On subsequent transports, only the changed objects will be updated in both:
SAP QA gCTS Fiori
SAP QA ABAP system
Last updated