{"ref":"capability:abap-source-control","page":"/capabilities/abap-source-control","json":"/capabilities/abap-source-control.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"abap-source-control","name":"Source control","domain":"developer-experience","ecosystems":["abap"],"universal":false,"description":"Keeping source code and development objects in version control, comparing their revisions, and moving them between development environments. Managed delivery of changes belongs to [transport management](capability:change-promotion).","short":"Keeping source and development objects in version control","core_coverage":{"state":"core-and-community","assessed_at":"2026-08-31","what_core_does":"SAP publishes [abap-file-formats](artifact:sap-abap-file-formats), the specification for how ABAP objects serialise to files, and ships gCTS for git-based transport.","where_it_stops":"It stops at the format and at transport. The tool most teams actually use to clone, pull and push a repository from inside a system is community-built.","community_adds":"[abapGit](artifact:abapgit-abapgit), from the [abapGit](actor:abapgit) organisation, is the git client that runs inside the system. Around it sit a git server written in ABAP ([abapGitServer](artifact:larshp-abapgitserver)), helper programs and commit-message checks for abapGit, tools that gate transport release on a pull request, and clients that pull and push objects from outside the system over ADT, such as [ABAP Remote FS](artifact:marcellourbani-vscode-abap-remote-fs) and [abap-adt-cli](artifact:vaibhavgoel-github-1986-abap-adt-cli).","sources":[{"url":"https://github.com/SAP/abap-file-formats","title":"SAP/abap-file-formats — repository","checked":"2026-08-31"}],"relationship":"community-owns-it"},"coverage_by_flavor":{"abap-cloud":{"state":"core-only","assessed_at":"2026-09-14","what_core_does":"SAP ships two git-based mechanisms in the ABAP environment: gCTS, the recommended way to move objects between DEV, TEST and PROD within one global account through the Manage Software Components app, and a cloud-preinstalled build of [abapGit](artifact:abapgit-abapgit) for moving source code across global accounts and in from on-premise systems.","where_it_stops":"gCTS stays inside a single global account, and the cloud abapGit build exports only the released ABAP object types the environment supports, skipping anything unreleased on push and routing Fiori UI artifacts through a separate git repository.","sources":[{"url":"https://github.com/SAP-docs/btp-cloud-platform/blob/main/docs/30-development/transport-mechanisms-aa7f169.md","title":"Transport Mechanisms — SAP-docs/btp-cloud-platform","checked":"2026-09-14","quote":"It is the recommended approach for transporting objects between ABAP systems in your global account."},{"url":"https://github.com/SAP-docs/btp-cloud-platform/blob/main/docs/30-development/working-with-abapgit-d62ed9d.md","title":"Working with abapGit — SAP-docs/btp-cloud-platform","checked":"2026-09-14","quote":"the ABAP environment comes with a preinstalled cloud version of abapGit"}]}},"framing_by_flavor":{"abap-cloud":{"description":"In the BTP ABAP environment and S/4HANA Cloud, this splits in two: gCTS moves objects between DEV, TEST and PROD inside one global account through the Manage Software Components app, and a cloud-preinstalled build of [abapGit](artifact:abapgit-abapgit) crosses account boundaries, migrating on-premise code in and sharing code out, restricted to the object types the cloud programming model releases."}},"history":[{"date":"2026-09-14","field":"coverage_by_flavor.abap-cloud","from":null,"to":"core-only","reason":"SAP's own docs name gCTS and a cloud-preinstalled build of abapGit as the two transport mechanisms for the BTP ABAP environment and S/4HANA Cloud; no provider in the graph states abap-cloud on its own flavors."},{"date":"2026-09-14","field":"framing_by_flavor.abap-cloud","from":null,"to":"gCTS and a cloud abapGit build, split by scope","reason":"The classic-ABAP paragraph does not hold here: ABAP Cloud splits source control into two mechanisms with different scopes, per the same SAP-docs pages."},{"date":"2026-10-17","field":"name","from":"Source control for ABAP","to":"Source control","reason":"Keep the default capability wording neutral; preserve the previous wording in framing_by_ecosystem.abap. Maintainer-requested scope audit."},{"date":"2026-10-17","field":"description","from":"Getting ABAP objects out of a system and into git, and back into another system — the closest thing ABAP has to a package manager.","to":"Keeping source code and development objects in version control, comparing their revisions, and moving them between development environments. Managed delivery of changes belongs to [transport management](capability:change-promotion).","reason":"Keep the default capability wording neutral; preserve the previous wording in framing_by_ecosystem.abap. Maintainer-requested scope audit."},{"date":"2026-10-26","field":"core_coverage.community_adds","from":null,"to":"abapGit, abapGitServer, helpers and commit checks around abapGit, transport release gating, and ADT-based clients","reason":"Reassessed against the graph (check:capabilities): providers added since 2026-08-31 change the kinds the community adds beyond the in-system git client; the state stays core-and-community."}],"drafted_with_ai":true,"framing_by_ecosystem":{"abap":{"description":"Getting ABAP objects out of a system and into git, and back into another system — the closest thing ABAP has to a package manager.","name":"Source control for ABAP"}}},"sap_delivery":{"door":"abap","all":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-abap-file-formats","name":"abap-file-formats","json":"/artifacts/sap-abap-file-formats.json"}]},"by_flavor":{"standard-abap":null,"abap-cloud":null}},"edges":{"use_cases":[],"shared_tasks":[],"related_tasks":[],"options":[{"ref":"artifact:marcellourbani-vscode-abap-remote-fs","name":"ABAP remote filesystem","json":"/artifacts/marcellourbani-vscode-abap-remote-fs.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:vaibhavgoel-github-1986-abap-adt-cli","name":"abap-adt-cli","json":"/artifacts/vaibhavgoel-github-1986-abap-adt-cli.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:sap-abap-file-formats","name":"abap-file-formats","json":"/artifacts/sap-abap-file-formats.json","ecosystem":"abap","origin_ring":"sap-official"},{"ref":"artifact:catafeidi-abap-transport-review","name":"abap-transport-review","json":"/artifacts/catafeidi-abap-transport-review.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:abapgit-abapgit","name":"abapGit","json":"/artifacts/abapgit-abapgit.json","ecosystem":"abap","origin_ring":"community-org"},{"ref":"artifact:rayatus-abapgit-commitlint","name":"abapgit-commitlint","json":"/artifacts/rayatus-abapgit-commitlint.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:larshp-abapgitserver","name":"abapGitServer","json":"/artifacts/larshp-abapgitserver.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:marc-bernard-tools-abap-tools-for-abapgit","name":"Tools for abapGit","json":"/artifacts/marc-bernard-tools-abap-tools-for-abapgit.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:regestaitalia-trm-server","name":"trm-server","json":"/artifacts/regestaitalia-trm-server.json","ecosystem":"abap","origin_ring":"independent"}],"samples":[{"ref":"artifact:sap-samples-abap-platform-yy","name":"abap-platform-yy","json":"/artifacts/sap-samples-abap-platform-yy.json"},{"ref":"artifact:sap-samples-abap-platform-jak","name":"SAP-samples/abap-platform-jak","json":"/artifacts/sap-samples-abap-platform-jak.json"},{"ref":"artifact:sap-samples-s4hana-gcts-badi","name":"SAP-samples/s4hana-gcts-badi","json":"/artifacts/sap-samples-s4hana-gcts-badi.json"}],"explained_by":[{"ref":"content:claude-ported-abap-functions-to-new-api","name":"Claude ported ABAP functions to new API","json":"/content/claude-ported-abap-functions-to-new-api.json"},{"ref":"content:patterns-for-using-llms-in-abap-development","name":"Patterns for using LLMs in ABAP development","json":"/content/patterns-for-using-llms-in-abap-development.json"}],"normative_context":[]}}