December 20, 2025 / admin

TL;DR (≈ 90 words)

ChaRM tickets, manual transports, and midnight cut-overs make ABAP feel 1999. This guide shows how our Micro-GCC squad replaced the ticket parade with a Git-driven CI/CD pipeline:

  1. abapGit → GitHub exports every Z-package.
  2. gCTS pulls straight into Dev, triggers ABAP Unit + ATC in Jenkins.
  3. Transport Factory auto-builds & deploys to QAS and Prod—blue/green—when pipelines are green.

Result: commit → Prod in 38 minutes, rollback in < 2 minutes, zero manual steps. Copy-paste pipelines, YAML, and ATC variant included.

Why ABAP Still Lags in DevOps 

Traditional flow – SE38 → SE80 → Transport → ChaRM → Basis release night.
Pain points:

  • Serial locks—only one dev at a time on a Z-package.
  • Blind merges—no code review, no pull-request diff.
  • Long feedback—ATC & ABAP Unit run days later in QAS.

Goal: bring ABAP onto the same rails as Java/Node—branch → PR → pipeline → Prod with shift-left quality gates.

High-Level Architecture 

java

CopyEdit

              GitHub (origin)

                   ▲     |

   push / PR       |     | gCTS webhook

                   |     ▼

               gCTS Repo (DEV) ──► ABAP Dev System

                                  (Unit + ATC)

                                       │

                           Jenkins Pipeline (#123)

                                       │

                 Transport Factory API (CTS+) —─► QAS —─► PROD

                                       │                ▲

                       Blue/Green Switch (F5 / SAP APIM)│

                                       ▼                │

                               Grafana & Slack Alerts ──┘

  • abapGit – devs commit locally, push to GitHub.
  • gCTS – pulls commit automatically into the ABAP DEV system.
  • Jenkins – runs ABAP Unit & ATC variant S4H_READINESS_EXT.
  • Transport Factory – builds transport of copies (toc), signs & releases.

Blue/Green – F5 or APIM toggles traffic; rollback flips alias.

Step-by-Step Pipeline 

3.1 abapGit Local Workflow

bash

CopyEdit

# First-time clone

abapgit clone https://github.com/acme/sd_pricing.git ZSD_PRICING

# Work, test …

abapUnit run ZSD_PRICING

# Commit & push

git add . && git commit -m “feat: dynamic tax rules”

git push origin feature/tax-rules

Developers use VS Code + ABAP Remote. Commit hooks run abaplint.


3.2 GitHub Pull-Request
  • PR template enforces link to Jira story & test evidence.
  • Code review via standard GitHub UI—first time many ABAPers see inline diff!

3.3 gCTS Webhook

/sap/bc/cts_abapvcs/repositories/<repo>/pullByRequest

Triggered by GitHub “push” hook. Imports commit into DEV without transport—the repo is transport layer.


3.4 Jenkinsfile (Simplified)

groovy

CopyEdit

pipeline {

  agent any

  stages {

    stage(‘ATC & Unit’) {

      steps {

        sh ‘abap-ci run –atc-variant S4H_READINESS_EXT –unit –piper’

      }

    }

    stage(‘Build Transport’) {

      steps {

        sh ‘abap-ci transport assemble –target QAS’

      }

    }

    stage(‘Deploy QAS’) {

      steps {

        sh ‘abap-ci transport deploy –system QAS’

      }

    }

    stage(‘Blue/Green Prod’) {

      when { branch ‘main’ }

      steps {

        sh ‘abap-ci transport deploy –system PROD –blue-green’

      }

    }

  }

  post {

    failure { slackSend channel:’#abap-ci’, message:”❌ Pipeline ${env.BUILD_NUMBER} failed” }

    success { slackSend channel:’#abap-ci’, message:”✅ Pipeline ${env.BUILD_NUMBER} green” }

  }

}

Average runtime 38 min: ATC 22 m, Unit 8 m, build+deploy 8 m.


3.5 Blue/Green Cut-Over

Transport deploys to PROD-GREEN client (100).
F5 pool weights: GREEN 10 % / BLUE 90 % for 30 min.
Grafana alert if:

  • ABAP_APP_ERR_RATE > 0.5 %, or
  • dialog_resp_95p > 800 ms.

If clear, script flips weights to 100 % GREEN. Rollback = one API call.

Quality Gates & Metrics 

GateThresholdTool
ATC Critical0S4H_READINESS_EXT
ABAP Unit≥ 90 % passabapUnit
Code Coverage≥ 70 %Coverage plugin
Extended Check (Sci-T)No open tasksabap test cockpit
Deployment SLRα Error < 0.5 %Grafana / Prometheus

Slack bot posts green/red dashboard at each stage.

Results—Manufacturing Client 

KPIPre-CI/CD (ChaRM)Git-Driven CI/CD
Commit → Prod lead time7–14 days38 min
Hot-fix rollback2–4 h< 2 min
Defects escaped / 100 changes1.20.2
ATC compliance68 %100 %
Developer NPS+4+33

Team delivered three releases per week vs. one per month—without night shifts.

Pitfalls & Pro Tips 

PitfallFix
gCTS repo chaos – multiple transport layersCreate one repo per package group; enforce naming via LDEVPACKAGE security.
ATC runtime too longSplit variant by package → parallel Jenkins stages; use –packages arg.
abapGit can’t push new DDIC objectsEnable “Serialize DDLS, CDS View” flag; add to abapGit.xml.
Object locks during gCTS pullSchedule hourly pulls or use webhook; developers re-base before push.
Basis team uneasyRun pilot in sandbox; show rollback in 2 min to earn trust.

Adoption Roadmap 

SprintMilestone
1Install abapGit 1.122; export one pilot package.
2Spin gCTS repo; hook Jenkins ATC pipeline.
3Auto-build transport → QAS; manual Prod deploy.
4Implement blue/green & Slack alerts; enable Prod auto-deploy for low-risk.
5Expand to all Z-packages; retire ChaRM for custom code.

Take-Home Checklist 

  1. Export pilot Z-package with abapGit.
  2. Wire GitHub → gCTS webhook.
  3. Jenkins: ATC + ABAP Unit gates.
  4. Transport Factory auto-deploys.
  5. Blue/green switch & rollback script—sleep at night!