{"id":49738,"date":"2025-06-20T14:30:12","date_gmt":"2025-06-20T14:30:12","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=49738"},"modified":"2025-06-20T14:30:12","modified_gmt":"2025-06-20T14:30:12","slug":"sap-ci-cd-devops-phases-with-tools-and-activities","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/sap-ci-cd-devops-phases-with-tools-and-activities\/","title":{"rendered":"SAP CI\/CD &amp; DevOps Phases with Tools and Activities"},"content":{"rendered":"\n<p>These are traditional <strong>software development lifecycle<\/strong> stages:<br><strong>Plan \u2192 Code \u2192 Scan \u2192 Build \u2192 Unit Test \u2192 Package \u2192 Archive \u2192 Deploy \u2192 Test \u2192 Coverage<\/strong>.<\/p>\n\n\n\n<p>In <strong>SAP (especially ABAP and S\/4HANA)<\/strong> environments, we apply the same principles\u2014but with <strong>SAP-specific tools, terminology, and workflows<\/strong> tailored to ERP systems.<\/p>\n\n\n\n<p>Here\u2019s a detailed breakdown of each <strong>DevOps and CI\/CD phase in SAP<\/strong> with the <strong>tools<\/strong> and <strong>actions<\/strong> involved:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\ude80 <strong>SAP CI\/CD &amp; DevOps Phases with Tools and Activities<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Phase<\/strong><\/th><th><strong>What Happens in SAP<\/strong><\/th><th><strong>Common Tools<\/strong><\/th><\/tr><\/thead><tbody><tr><td><strong>1. Plan<\/strong><\/td><td>&#8211; Define requirements (functional specs, change requests)- Create transport requests<\/td><td>SAP Solution Manager, Jira, Azure Boards, Focused Build<\/td><\/tr><tr><td><strong>2. Code<\/strong><\/td><td>&#8211; Develop ABAP code \/ CAP apps \/ Fiori UI5- Follow naming and transport standards<\/td><td>ABAP in Eclipse (ADT), SAP BAS (for UI5, CAP), VS Code<\/td><\/tr><tr><td><strong>3. Scan<\/strong><\/td><td>&#8211; Run static code checks for security, performance, best practices<\/td><td>ATC (ABAP Test Cockpit), SonarQube, Code Inspector<\/td><\/tr><tr><td><strong>4. Build<\/strong><\/td><td>&#8211; Trigger builds (for CAP, UI5 apps, or ABAP artifacts in gCTS)<\/td><td>Jenkins, SAP BTP CI\/CD Service, gCTS<\/td><\/tr><tr><td><strong>5. Unit Test (UT)<\/strong><\/td><td>&#8211; Execute ABAP Unit Tests or JS\/Java Tests for CAP<\/td><td>ABAP Unit, Mocha\/Jest (for Node.js), JUnit (Java)<\/td><\/tr><tr><td><strong>6. Package<\/strong><\/td><td>&#8211; Generate artifacts (<code>.mtar<\/code>, <code>.jar<\/code>, <code>.abapGit<\/code>, etc.)<\/td><td>Maven, npm, MTA builder, abapGit<\/td><\/tr><tr><td><strong>7. Archive<\/strong><\/td><td>&#8211; Push artifacts to a repo for reuse or audit<\/td><td>Nexus, Artifactory, GitHub Packages<\/td><\/tr><tr><td><strong>8. Deploy to QA<\/strong><\/td><td>&#8211; Deploy transports to QA \/ Deploy cloud apps to subaccount<\/td><td>TMS\/CTS+, gCTS, SAP Transport Organizer, BTP CLI<\/td><\/tr><tr><td><strong>9. Test (E2E)<\/strong><\/td><td>&#8211; Execute manual or automated tests<\/td><td>eCATT, CBTA, SAP Solution Manager Test Suite, Postman<\/td><\/tr><tr><td><strong>10. Code Coverage<\/strong><\/td><td>&#8211; Check ABAP code coverage reports<\/td><td>ABAP Coverage Tools (via ATC or ADT Eclipse)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd04 <strong>How CI\/CD Works in SAP DevOps (End-to-End)<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">1. Developer writes code in ABAP or CAP (SAP BAS or ADT)\n2. Code is pushed to Git (for CAP) or gCTS (for ABAP)\n3. CI pipeline triggers:\n   - Runs ATC scans or SonarQube\n   - Executes unit tests\n   - Packages and archives builds\n4. CD pipeline starts:\n   - Deploys to QA\/Dev using TMS or SAP BTP CLI\n   - Triggers tests (eCATT, Postman)\n   - Notifies stakeholders of results\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83e\uddf0 SAP DevOps Toolchain Overview<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Category<\/strong><\/th><th><strong>Tool\/Service<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Version Control<\/td><td>abapGit, gCTS, GitHub\/GitLab<\/td><\/tr><tr><td>CI\/CD Automation<\/td><td>Jenkins, SAP BTP CI\/CD, GitHub Actions<\/td><\/tr><tr><td>Static Code Analysis<\/td><td>ATC, SonarQube<\/td><\/tr><tr><td>Testing<\/td><td>ABAP Unit, eCATT, CBTA, Postman<\/td><\/tr><tr><td>Package\/Artifact Repo<\/td><td>Nexus, Artifactory<\/td><\/tr><tr><td>Deployment<\/td><td>TMS, CTS+, gCTS, BTP CLI, MTA Tools<\/td><\/tr><tr><td>Monitoring<\/td><td>SAP Solution Manager, ALM, BTP Logs, ELK Stack<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcdd Summary of Key Differences (SAP vs Traditional CI\/CD)<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Aspect<\/strong><\/th><th><strong>Traditional CI\/CD<\/strong><\/th><th><strong>SAP ABAP\/CAP CI\/CD<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Code Storage<\/td><td>Git<\/td><td>abapGit \/ gCTS \/ Git<\/td><\/tr><tr><td>Build Automation<\/td><td>Maven, Gradle<\/td><td>Jenkins, BTP CI\/CD, MTA Build Tool<\/td><\/tr><tr><td>Testing<\/td><td>JUnit, Selenium<\/td><td>ABAP Unit, eCATT, CBTA<\/td><\/tr><tr><td>Deployment<\/td><td>Docker\/K8s\/Cloud<\/td><td>TMS, CTS+, gCTS, BTP Deploy CLI<\/td><\/tr><tr><td>Monitoring<\/td><td>Prometheus\/Grafana<\/td><td>SAP SolMan, ALM, BTP Observability<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 Final Thoughts<\/h3>\n\n\n\n<p>SAP DevOps and CI\/CD can absolutely mirror modern engineering practices\u2014<strong>as long as you align with the right tools<\/strong> (like <strong>gCTS<\/strong>, <strong>ATC<\/strong>, <strong>SAP BTP CI\/CD<\/strong>, and <strong>Solution Manager<\/strong>) and shift toward <strong>Git-based workflows<\/strong> where possible.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>These are traditional software development lifecycle stages:Plan \u2192 Code \u2192 Scan \u2192 Build \u2192 Unit Test \u2192 Package \u2192 Archive \u2192 Deploy \u2192 Test \u2192 Coverage. In SAP (especially ABAP&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-49738","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49738","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=49738"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49738\/revisions"}],"predecessor-version":[{"id":49741,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49738\/revisions\/49741"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=49738"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=49738"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=49738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}