Shrikrushna Kulkarni · SAP ABAP/RAP Developer · Jun 14th 2026 · 10 min read
This blog explains what gCTS is, what every key term actually means, and why it is replacing the classic transport approach — before you touch a single configuration screen.
This is Blog 1 of 3 in the gCTS Series
Blog 1: Concepts & Terminology (this post) · Blog 2: SAP Public Cloud Configuration · Blog 3: SAP On-Premise Configuration
Table of Contents
- The Problem With Classic CTS in a DevOps World
- What Is SAP gCTS?
- Git Terminology for ABAP Developers (The Glossary)
- gCTS-Specific SAP Terms Explained
- CTS vs. abapGit vs. gCTS — What Is the Difference?
- How gCTS Works — Architecture and Flow
- Navigating the gCTS Fiori App
- Branch Strategies for ABAP Teams
- gCTS in CI/CD Pipelines — The Big Picture
1. The Problem With Classic CTS in a DevOps World
The SAP Change and Transport System has existed since 1992. It is one of the most reliable pieces of SAP infrastructure — every object change is automatically recorded, every transport follows a defined landscape route, and nothing reaches production without a release cycle. It works.
But the world around SAP development has changed dramatically. Teams now expect:
- Version history with line-level diffs — not just “TR DEVK900123 was imported”
- Branching — so two developers can work on the same codebase in parallel without blocking each other
- Code review before deployment — via Pull Requests, not informal over-the-shoulder reviews
- CI/CD pipelines — automated quality checks triggered by every code change
- Rollback in seconds — not “re-import the previous transport and hope nothing else changed”
Classic CTS delivers none of these natively. gCTS was built to close this gap — without replacing the transport system that SAP customers depend on.
2. What Is SAP gCTS?
gCTS (Git-enabled Change and Transport System) is SAP's solution that connects the ABAP Change and Transport System with external Git repositories — GitHub, GitLab, Azure DevOps, Bitbucket, and others. It was delivered as part of SAP S/4HANA since release 1909 and is the only available transport mechanism for SAP BTP ABAP Environment (Public Cloud / Steampunk).
The One-Sentence Definition
When a developer releases a Transport Request in SAP, gCTS automatically serializes the ABAP objects into files, creates a Git commit, and pushes it to GitHub. That is the entire mechanism — everything else builds on top of it.
— The complete gCTS-enabled DevOps lifecycle — developer releases TR, gCTS pushes to Git, CI server tests changes, automatic pull deploys to follow-on systems.
gCTS gives your ABAP development team:
- A complete, auditable Git history of every ABAP object — with human-readable diffs
- Native Git branching for parallel development streams
- Code review via Pull Requests on GitHub/GitLab before code reaches QAS
- CI/CD integration — GitHub Actions, Jenkins, Azure Pipelines — via the gCTS REST API
- Instant rollback to any prior commit hash
Note: gCTS Does NOT Replace CTS
Transport Requests still exist. Objects are still recorded in TRs. Release processes are unchanged. gCTS intercepts the TR release and routes objects to Git instead of — or alongside — the file-based transport buffer. The Git repository becomes the source of truth. Think of it as an extension to CTS, not a replacement.
3. Git Terminology for ABAP Developers
If you are coming from a pure ABAP background, Git terminology can be confusing because it uses familiar words (commit, branch, pull) in different contexts than ABAP does. Here is a complete glossary with the SAP/gCTS equivalent for each term:
| Git Term | Simple Definition | gCTS Context (SAP Equivalent) |
| Repository (Repo) | The storage unit for all your code files and their complete version history | In gCTS: one Git repo = one SAP Software Component (Public Cloud) or one set of packages linked via Transport Layer (On-Premise) |
| Clone | Creates a local copy of a remote Git repository on your machine | In gCTS: downloads the Git repo content into the SAP system's internal workspace. Done once per system. |
| Stage / Staging | Selecting which file changes to include in the next commit (git add) | In gCTS: staging is automatic — objects are staged when a TR is released. No manual git add needed. |
| Commit | A snapshot of staged changes saved to the local repo with a message, author, and timestamp | In gCTS: TR release = Git commit. The TR description becomes the commit message. |
| Push | Sends local commits to the remote repository (GitHub/GitLab) | In gCTS: happens automatically after TR release if VCS_AUTOMATIC_PUSH=true. |
| Pull | Downloads commits from the remote repository into your local workspace | In gCTS: used in QAS and PRD systems to import changes. Replaces classic “import transport”. |
| Branch | A lightweight, movable pointer to a specific commit — enables parallel work streams | In gCTS: each SAP system is configured to track one branch. DEV tracks “dev”, QAS tracks “qas”, PRD tracks “main”. |
| Merge | Combining changes from one branch into another | In gCTS: done via a Pull Request on GitHub/GitLab (recommended) or via the Branches tab in the gCTS App. |
| Pull Request (PR) | A formal request to merge one branch into another, enabling code review before the merge | Handled entirely on the Git provider side (GitHub/GitLab). After PR approval and merge, the target SAP system performs a Pull. |
| Commit Hash / SHA | A unique 40-character identifier for each commit (e.g., a3f9bc1d…) | In gCTS: you can pull a specific commit by its hash — enabling precise rollback to any previous state. |
4. gCTS-Specific SAP Terms Explained
| SAP gCTS Term | What It Means | Public Cloud vs. On-Premise |
| Software Component (SC) | The top-level container in Public Cloud that maps your development to a gCTS repository. | Public Cloud: MANDATORY. On-Premise: not required. |
| Role: SOURCE | This SAP system can push (write) and pull (read) from Git. Development systems have this role. | Same in both environments. Always assign SOURCE to DEV systems only. |
| Role: PROVIDED | This SAP system can only pull (read-only). QAS and PRD have this role. | Same in both environments. Prevents accidental pushes from non-development systems. |
| Virtual SID (vSID) | A logical transport target in STMS that represents gCTS. | On-Premise ONLY. Not used in Public Cloud. |
| Transport Layer | In On-Premise STMS: a named transport route configuration. | On-Premise ONLY. Not configured in Public Cloud. |
| gCTS Registry | An advanced feature (S/4HANA 2021+) that provides a central directory mapping ABAP objects to their target repositories. | Available in On-Premise. Also available in some Public Cloud scenarios. |
| Task-Based Committing | Creates a Git commit when an individual developer's Task is released. | Both environments, but enabling mechanism differs. |
| gCTS Workspace | The local directory on the SAP application server where gCTS maintains the cloned Git repository. | On-Premise: visible and configurable. Public Cloud: managed internally by SAP. |
5. CTS vs. abapGit vs. gCTS — What Is the Difference?
This is the most common question in SAP developer communities. Here is the definitive comparison:
| Aspect | Classic CTS | abapGit | SAP gCTS |
| What it is | SAP-native transport system since 1992 | Open-source community tool for Git | SAP-native Git integration built on CTS |
| Git support | No | Full Git support (any provider) | Full Git support (GitHub, GitLab, Azure, Bitbucket) |
| Branching | No — branching concept | Manual branching support | Native branching integrated with TR lifecycle |
| Code review (PR) | Not available | Via Git PR workflow | Via Git PR workflow |
| SAP Public Cloud (BTP ABAP) | N/A — SAP manages internally | Cannot be installed on managed systems | Pre-enabled by SAP — only option in Public Cloud |
| SAP On-Premise | Default transport system | Can be installed on most ABAP versions | Available from SAP_BASIS 7.54 / S/4HANA 1909 |
| Officially supported | SAP official | Community — not SAP-supported | SAP official — use BC-CTS-GIT for incidents |
| CI/CD integration | Limited — needs 3rd-party tools | Possible but not native | Native REST API + Project Piper steps |
| Object history | TR history only — no line diff | Full Git history with diffs | Full Git history with diffs |
| Rollback | Manual re-import of old transport | Git revert or checkout | Pull specific commit hash — seconds to rollback |
| Customizing support | Full | Limited | Full from S/4HANA 2020+ |
abapGit Cannot Be Used in SAP Public Cloud
abapGit requires installing an ABAP program on your system. In SAP BTP ABAP Environment (Steampunk), there is no access to install custom programs at the system level. gCTS is the only Git tool available in Public Cloud — there is no workaround.
6. How gCTS Works — Architecture and Flow
When a developer releases a Transport Request:
- ABAP objects in the TR are serialized into XML/text files (using abapGit-compatible format)
- A Git commit is created in the local workspace with the TR description as the commit message
- The commit is pushed to the remote Git repository (GitHub/GitLab) — automatically if VCS_AUTOMATIC_PUSH=true
- The code is now visible in GitHub as a new commit with changed files including .clas.abap, .clas.xml, .ddls.asddls, etc.
- A CI/CD pipeline can be triggered by the new commit (via webhook) to run ATC checks and ABAP Unit Tests
- After passing quality gates, the target system (QAS/PRD) performs a Pull — fetching commits from Git and activating the ABAP objects
7. Navigating the gCTS Fiori App
The gCTS App in the SAP Fiori Launchpad has two main views you will use daily:
7.1 System View — Your Home Screen
— gCTS System View: header shows system information, existing repositories are listed with Role, Type, vSID, and latest commit hash.
The System View shows: system SID and URL, Enable gCTS / Health Check buttons, Credentials section, and all repositories registered on this system.
7.2 Repository View — Where You Work Daily
— Repository View: header shows URL, Branch, Role, Status, Current Commit. Tabs: Commits, Configuration, Activities, Objects, Branches, Log.
The key tabs you will use most:
- Commits — View commit history, pull a specific commit, update to latest. This is where you deploy to QAS/PRD.
- Branches — Create branches, switch active branch, merge branches.
- Objects — View tracked ABAP packages and objects. Push individual objects.
- Configuration — Set repository parameters (AUTOMATIC_PUSH, TASK_COMMIT, etc.)
8. Branch Strategies for ABAP Teams
The openSAP course dedicates a full unit to branch design (Week 3). Choosing the right strategy depends on your system landscape.
— 3-Tier landscape branch recommendation: DEV system with dev/feature branches, QAS for testing, PRD with main/release branches.
Branch Design Principle
The branch is maintained at the repository level, not per transport request. The DEV system is always configured to track the “dev” branch.
9. gCTS in CI/CD Pipelines — The Big Picture
SAP's open-source CI/CD library Project Piper provides ready-made pipeline steps specifically for gCTS. These steps can be used in Jenkins, GitHub Actions, and other CI platforms:
— Complete Project Piper pipeline for gCTS: Create Repository → Clone Repository → Deploy Repository → Execute ABAP Unit Tests → Rollback on failure.
- gctsDeploy — Deploys a specific commit or HEAD of a branch to a target SAP system via gCTS Pull
- gctsExecuteABAPUnitTests — Runs ABAP Unit Tests on the deployed objects; fails the pipeline if tests fail
- gctsExecuteABAPQualityChecks — Runs SAP ATC (ABAP Test Cockpit) checks; returns results in checkstyle XML format
- gctsRollback — Rolls back the target system to the previous commit if any stage fails
- gctsCloneRepository / gctsCreateRepository — Automates initial setup in a new system
References:
SAP Help Portal — gCTS · SAP Note 2821718 · openSAP Course · Project Piper — Screenshots sourced from openSAP course “DevOps for ABAP with gCTS in SAP S/4HANA” © 2021 SAP SE.



