logo

Are you need IT Support Engineer? Free Consultant

SAP gCTS Explained — Git, ABAP and DevOps Finally …

  • By sujay
  • 14/06/2026
  • 25 Views

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

  1. The Problem With Classic CTS in a DevOps World
  2. What Is SAP gCTS?
  3. Git Terminology for ABAP Developers (The Glossary)
  4. gCTS-Specific SAP Terms Explained
  5. CTS vs. abapGit vs. gCTS — What Is the Difference?
  6. How gCTS Works — Architecture and Flow
  7. Navigating the gCTS Fiori App
  8. Branch Strategies for ABAP Teams
  9. 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:

  1. ABAP objects in the TR are serialized into XML/text files (using abapGit-compatible format)
  2. A Git commit is created in the local workspace with the TR description as the commit message
  3. The commit is pushed to the remote Git repository (GitHub/GitLab) — automatically if VCS_AUTOMATIC_PUSH=true
  4. The code is now visible in GitHub as a new commit with changed files including .clas.abap, .clas.xml, .ddls.asddls, etc.
  5. A CI/CD pipeline can be triggered by the new commit (via webhook) to run ATC checks and ABAP Unit Tests
  6. 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

Shrikrushna175_1-1781444368445.Png


— 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

Shrikrushna175_2-1781444411000.Png

— 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.

Shrikrushna175_3-1781444442495.Png

— 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:

Shrikrushna175_4-1781444500563.Png

 

— 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 PiperScreenshots sourced from openSAP course “DevOps for ABAP with gCTS in SAP S/4HANA” © 2021 SAP SE.

Source link

Leave a Reply

Your email address will not be published. Required fields are marked *