Uploaded by wnash7658

Git-Enabled Change and Transport System (BC-CTS-GIT)

advertisement
11/15/2023
Change and Transport System
Generated on: 2023-11-15 14:30:31 GMT+0000
| 2023 FPS00
PUBLIC
Original content: https://help.sap.com/docs/ABAP_PLATFORM_NEW/4a368c163b08418890a406d413933ba7?locale=enUS&state=PRODUCTION&version=202310.000
Warning
This document has been generated from the SAP Help Portal and is an incomplete version of the official SAP product
documentation. The information included in custom documentation may not re ect the arrangement of topics in the SAP Help
Portal, and may be missing important aspects and/or correlations to other topics. For this reason, it is not for productive use.
For more information, please visit the https://help.sap.com/docs/disclaimer.
This is custom documentation. For more information, please visit the SAP Help Portal
1
11/15/2023
Git-Enabled Change and Transport System (BC-CTS-GIT)
Git-enabled Change and Transport System (gCTS) enables you to manage your ABAP change and transport management
processes using Git as an external version management system.
Use
You can use gCTS for the following situations:
You're accustomed to Git as a version control system, and now you also want to use it for your ABAP developments and
continuous integration processes.
You're accustomed to ABAP development, and you want to align the processes with your non-ABAP development
processes.
Using gCTS is optional. You can use it to leverage the functions of Git repositories and continuous integration processes. If you
want to test whether gCTS is suitable for your requirements, you can use gCTS for part of your projects, or just for a test
project.
Watch the following video to get an overview of the basic concepts of gCTS:
Open this video in a new window
 Note
For more information about What's New in gCTS, see the ABAP Platform - What's New Viewer and search for Git-Enabled
Change and Transport System.
For the latest information about Git-enabled Change and Transport System and for latest SAP Notes required for your SAP
S/4HANA version, see SAP Note 2821718
Central Note for Git-enabled Change and Transport System (gCTS).
Implementation Considerations
This is custom documentation. For more information, please visit the SAP Help Portal
2
11/15/2023
Git-enabled Change and Transport System consists of different components. You need to con gure the individual
components to make sure that they work together. For more information, see the following topics:
Components of Git-Enabled Change and Transport System
Prerequisites for Git-Enabled Change and Transport System
Con guring Git-Enabled Change and Transport System
Because transporting ABAP objects using gCTS always means connecting a remote repository on a Git server to an
ABAP system, you must make sure that the communication between these components is set up in a secure way. For
more information, see Security for Git-Enabled Change and Transport System in the Application Server ABAP Security
Guide .
Integration
gCTS is integrated in the Change and Transport System. You can only use gCTS in connection with the existing CTS. You
still do your development work in the classic ABAP development environment, for example ABAP Development Tools
(ADT). For an overview of CTS functions, including their meaning and usage in gCTS, refer to CTS Entities Used in gCTS.
In general, you can use gCTS with all Git servers (or Git platforms). gCTS fully supports repositories on GitHub. It's
possible that there are restrictions regarding other Git servers. For known restrictions that aren't described in the
documentation, see the central gCTS SAP Note 2821718
.
gCTS offers project "Piper" steps that let you integrate gCTS with CI/CD pipelines. For more information, see Integration
of gCTS in CI Pipelines.
Constraints
In general, gCTS no longer requires the TMS con guration steps known from the classic CTS. That is, no con guration of the
transport domain, no shared transport directory, no transport layers and transport routes are necessary. For more information
about the invididual entities, see CTS Entities Used in gCTS.
However, if you want to transport change requests created for SAP Note implementations or modi cation adjustment
transports after Support Package imports, you require a classic transport landscape. These change requests can't be pushed to
Git repositories and are not supported by gCTS. If you want to transport these requests to follow-on systems, you must
continue to use the classic CTS setup.
Related Information
Git-Enabled CTS on SAP Support Portal
Guided Answer: Troubleshooting Git-Enabled Change and Transport System
Blogs about gCTS in SAP Community
Git on https://git-scm.com
Basics of Git-Enabled Change and Transport System (gCTS)
The following sections describe the concept of gCTS, its features and its entities. They also explain the meaning that important
entities of CTS and Git have in the context of gCTS.
Git-Enabled Change and Transport System - Concept
Git-enabled Change and Transport System (gCTS) lets you store all versions of ABAP development and Customizing
objects in Git repositories.
Features of Git-Enabled Change and Transport System
gCTS features in a nutshell.
CTS Entities Used in gCTS
This is custom documentation. For more information, please visit the SAP Help Portal
3
11/15/2023
As a rule, the entities known from the classic Change and Transport System (CTS) or the enhanced CTS (CTS+) are also
used in Git-Enabled Change and Transport System (gCTS). However, either the relevance of some entities has changed,
or some entities must be used in a gCTS-speci c way.
gCTS Entities and Git Entities Explained
The following sections contain background information about speci c gCTS-entities as well as the usage of Git-speci c
entities in gCTS.
Git-Enabled Change and Transport System - Concept
Git-enabled Change and Transport System (gCTS) lets you store all versions of ABAP development and Customizing objects in
Git repositories.
gCTS makes use of Git features, such as working on local copies of a central remote Git repository. Software development is
done in the usual editors, for example in ABAP Development Tools (ADT). Changes to objects are still recorded in transport
requests. Current states of objects can be transferred to remote Git repositories - this process is called pushing objects to the
remote repository - either by releasing a transport request, or a task while you’re working.
ABAP objects are copied into a local repository on the ABAP system. In this process, they’re transformed from database table
content to le and folder structures on the operating system level. These are stored in the local le system of the application
server, the local repository, and are accessible from any command-line versioning tool, such as Git. This way, the ABAP le
objects can be pushed to a central remote Git repository. This allows you to distribute software between systems using Git. You
can retrieve the software from the central remote Git repository to use it on another ABAP system. This process is called
pulling objects from the remote repository.
As a prerequisite, you need to de ne which ABAP packages in an ABAP system are managed by which repository in gCTS, and
then assign a gCTS-speci c transport layer to the packages.
The following is an overview of the process:
ABAP objects are created or changed in development systems. In development systems, you can con gure repositories with the
Development role. The ABAP objects can be pushed to a central remote Git repository. For systems that you want to distribute
these developments to, you can con gure repositories with the Provided role. In these systems, you can pull the required ABAP
development objects. These systems can be another development system, as well as a test, or a production system. This way,
you don’t need to con gure transport routes between ABAP systems and you don’t need a shared transport directory.
Features of Git-Enabled Change and Transport System
gCTS features in a nutshell.
Capability to store your ABAP developments in Git repositories
Central version management, Git server (GitHub, for example), for cloud storage
This is custom documentation. For more information, please visit the SAP Help Portal
4
11/15/2023
Multi-repository support
You can have multiple repositories on one ABAP system. For example, you could have one repository for each project and
one for Customizing data.
SAP Fiori app for gCTS (gCTS app) providing access to common Git functions, such as cloning the remote Git repository
to the ABAP system, committing ABAP objects, pushing the commits to the remote repository, and pulling changed
objects to target systems.
Development process remains in the ABAP development system (ADT, for example).
Support and versioning for nearly all ABAP development and Customizing objects
For restrictions, see SAP Note 2888887
: gCTS: restrictions in supported object types
Provisioning of objects in the remote repository for every ABAP system that has a connection to the Git server.
No longer required: A shared transport directory and import queues to ensure the correct import sequence, and prevent
unwanted software downgrades, as required in the classic CTS.
Leverage of the deployment and logging capabilities of the transport tools by internally working with transport data les,
as known from the classic CTS.
Continuous integration capability
Performance improvements through the aggregation of changes
CTS Entities Used in gCTS
As a rule, the entities known from the classic Change and Transport System (CTS) or the enhanced CTS (CTS+) are also used in
Git-Enabled Change and Transport System (gCTS). However, either the relevance of some entities has changed, or some
entities must be used in a gCTS-speci c way.
Basics of CTS with Regards to gCTS
The following table uses the topics of the Basics of the Change and Transport System documentation as a basis to explain basic
similarities and differences between CTS and gCTS.
Topic in CTS
Important Aspects in gCTS
Documentation
Change Management in
You continue to use the existing Customizing and ABAP development tools to adapt SAP software to your
the SAP System
business processes. You use change requests and tasks to record your changes. Your changes to ABAP
Landscape
objects are still stored in the ABAP database.
In addition, in gCTS, ABAP objects are converted to les and are stored in Git repositories on Git servers.
Clients and Their Roles
You can use gCTS when you work with client-speci c Customizing data. To do this, we recommend that you
use a separate Git repository, and the gCTS registry. For more information, see About Using gCTS for
Customizing Data.
This is custom documentation. For more information, please visit the SAP Help Portal
5
11/15/2023
Topic in CTS
Important Aspects in gCTS
Documentation
System Landscape
You still have different systems with different roles, such as development, test, and production systems, as
with the classic CTS.
However, the con guration of the system landscape is done differently when you use gCTS. The
representations of the Git repositories become part of the landscape. This is re ected by separate transport
layers and transport routes to gCTS-speci c virtual non-ABAP systems, the so-called vSIDs. For more
information, see About the vSID.
There's also the option of using continuous integration pipelines. For example, as shown in the Git-Based
Continuous Integration use case.
Transport Organizer -
You still use the Transport Organizer for organizing your development projects. Only one active version of an
Concept
object exists in the system. Objects are locked, and changes are recorded in change requests and tasks.
To further integrate gCTS with Transport Organizer processes, for example to push changed objects of a
released task to a Git repository, a Business Add-In (BAdI) is available for implementation. For more
information, see Integrate the gCTS Registry with the Transport Organizer.
Transport Management
If you want to use only gCTS, you no longer need to con gure a classic system landscape with a transport
System - Concept
domain controller, transport routes between the systems, and a transport directory. By default, after
installation, a system is con gured to be a transport domain controller. We recommend that you leave this
setting unchanged. This simpli es the gCTS con guration. No further con guration is then required in TMS.
In gCTS, all ABAP systems are still visible in the Transport Management System (TMS). Therefore, you must
run the initial activation of TMS in every system, even if you plan to use gCTS only. For more information, see
Con guring the Transport Domain Controller.
 Note
If you want to transport requests created for SAP Note corrections, or modi cation adjustment transports
between systems, you must continue to con gure the classic CTS. For more information, see the
constraints mentioned in SAP Note 2821718
.
If your system is already part of a landscape where a domain controller exists, you can continue to work with
this setup. No changes are required.
Imports in target systems are performed by pulling commits. The import process remains the same.
However, it's no longer started in transaction STMS. For more information, see Import Queue.
Transport Layers and
Transport Layer: gCTS uses transport layers as a vehicle to group development projects. gCTS still
Transport Routes
uses transport layers when developing ABAP objects with gCTS, and for target systems of requests
used for Customizing objects, if the gCTS registry is not used. If the gCTS registry is used, the
registry determines the target repository of pushed objects. In this case, it is possible to use one
transport layer for all repositories, and requests used for Customizing objects no longer need a target
system.
By assigning a transport layer to a package, you can de ne whether the package uses the classic CTS
or gCTS. The transport layer in gCTS is composed of a Z followed by the vSID of the repository. For
more information, see De ne ABAP Packages as Managed by Git-Enabled Change and Transport
System and About the vSID.
Transport Route: In gCTS, transport routes are no longer needed to connect different systems of your
landscape.
They are used as a vehicle to connect the ABAP system and the non-ABAP system used as the vSID
of the Git repository, if the gCTS registry is not used. The transport layer is assigned to this route, and
the correct transport target, that is, the correct Git repository, can be determined. If the gCTS registry
is used, the correct target repository is looked up in the registry.
If transport routes already exist in your transport landscape, and you want to use gCTS only for
managing some of your developments, you can continue to use the existing transport routes.
This is custom documentation. For more information, please visit the SAP Help Portal
6
11/15/2023
Topic in CTS
Important Aspects in gCTS
Documentation
Assignment of
Packages used with gCTS must have a transport layer assigned that is different from the one used by the
Development Projects to
consolidation route that points to the follow-on system in your landscape. For more information, see De ne
Transport Layers
ABAP Packages as Managed by Git-Enabled Change and Transport System.
Additional CTS Terms and Their Meaning in gCTS
CTS Term
Meaning in gCTS
This is custom documentation. For more information, please visit the SAP Help Portal
7
11/15/2023
CTS Term
Meaning in gCTS
Change Requests
In the classic CTS, when developers change or create ABAP objects, the changed objects are recorded in
change requests. Tasks are created in change requests for developers working on objects of the same
package. Objects are locked until the task is released. Only developers who are part of the request can work
on the locked objects. After all tasks are released, the change request can be released. In the classic CTS, a
released change request is put in the import queue of the follow-on system in the landscape. It can be
automatically imported into this system (for example, by using a job) or be done manually. The import ends
with a return code that states whether the import was successful. For more information, see Change Requests.
In gCTS, change requests are also leveraged, but with a different focus.
On source systems: When gCTS is used for development, change requests still exist. They're used for
organizing development. They're released after all the tasks are released. Releasing a change request
creates a commit in the local Git repository in the branch that is currently active. The objects of the
change request are converted into les, and the commit is pushed to the remote Git repository. For
more information, see gCTS: Process Overview.
Optionally, you can implement a Business Add-In (BAdI) that enables pushing the changed objects of
a released task to a Git repository. For more information, see Integrate the gCTS Registry with the
Transport Organizer.
On target systems: In gCTS, change requests are no longer automatically forwarded to the import
queue of follow-on systems. Git is now the leading versioning tool. You can choose from existing Git
commits which one you want to pull into a target system. When a commit is pulled, a new change
request is created that contains the objects that are part of the commit to be imported and that are
different from the version of the objects of the current commit.
The request has the following characteristics:
The short description contains the repository name and information about the commits that
were involved in the request.
 Example
test-repo1: git commit from 02f269a to 025055a
The request number is a generated hash value. For more information, see Change Request
Numbers.
It has the following additional request attributes:
COMMIT: Commit that is pulled.
COMMIT_AUTHOR: Author of the commit that is pulled.
COMMIT_DATE: Date and time when the commit was created.
PREVIOUS_COMMIT: Current commit in the target system.
REPOSITORY: Name of the repository where the commit is pulled.
The import is started automatically by the pull action. You don't start it in the Transport Management
System (transaction STMS). To check details about the import, such as request attributes, and import
logs, you can use the import history.
 Note
It is important to understand that even though change requests are used to organize development and
create commits, they don't have the same role as in the classic CTS. Change requests are not persisted in
repositories. Each new commit creates a version of the software. When a commit is pulled on a target
system, the new generated change request contains the object differences between the commit to be
pulled and the current commit. The generated change request cannot be attributed to a speci c change
request created in the development system. For more information, see About Commits in gCTS.
This is custom documentation. For more information, please visit the SAP Help Portal
8
11/15/2023
CTS Term
Meaning in gCTS
Tasks
The idea of tasks hasn't changed in gCTS. Developers record their changed objects in tasks belonging to
change requests. Objects are locked for other developers while they're part of an open task. For more
information, see Changing Objects.
When the Business Add-In (BAdI) is implemented as described in Integrate the gCTS Registry with the
Transport Organizer released tasks can trigger pushes to Git repositories.
Change Request
On source systems: The number of the change requests still follows the classic format: <System ID
Numbers
(SID) of the development system>K<number>
On target systems: A new change request is generated when you pull a commit.
The number of the change request is a generated hash value, taken from the commit ID of the related
Git repository, which leads to a number with the maximum available length <vSID>K<16-
character commit hash>, for example GITK41TBD3BG5QT1EKAO.
For more information, see About the vSID.
Locked Objects
In development systems, objects are locked for development when they are assigned to a change request. For
more information, see Transport Organizer - Concept.
This is also true when using gCTS.
In gCTS, locked objects are displayed on a dialog box when objects that are currently locked in an open
request, are imported in a system, for example after resolving a con ict, by pulling a commit, or by switching
the branch of a repository. If you proceed, the object locks for these objects are ignored until the import is
complete, and the object version is overwritten by the object version that is part of the commit. If you've
made local changes to an object, for example a local repair, the local changes are lost.
Import Queue
In the classic CTS, an import queue serves the following purposes:
Before an import, it provides a list of released change requests ready for import in a system
During an import, the transport control program tp logs the processed import steps so that a broken
import can be resumed, if issues occur.
In gCTS, such a queue is no longer necessary. When a commit is pulled, a new request is generated that
contains the object differences between the commit to be pulled and the current commit. For more
information, see Change Requests. But, as in the classic CTS, the import queue serves as a place where tp
logs the performed import steps.
Import History
The import history allows you to display all requests imported into a system. It shows all transport steps of a
request with their return codes. Also, in gCTS, you can use the import history to check processed import
steps of the generated change requests. For more information, see Change Requests and Using the Import
History.
Return codes
In general, an import in a target system generates the same return codes as in the classic CTS. On the
Activities tab, an icon displays an aggregated status of the activity. Import logs can be used to analyze errors.
By default, as of SAP S/4HANA 2022 gCTS considers a return code of 8 as an error. You can in uence this
display using a repository con guration parameter. For more information, see VCS_IMPORT_ERROR_LEVEL.
Non-ABAP System
In gCTS, the idea of a virtual non-ABAP system known from the enhanced CTS (CTS+) is reused in the socalled vSID, a non-ABAP system of type version control system. A vSID is required when you create a
repository on an ABAP system. It serves different purposes, for example assigning packages to repositories,
if the gCTS registry isn't used. For more information, see About the vSID.
After Import Methods
XPRAs aren't supported by gCTS. The reason is that change requests are created based on the differences
(XPRAs)
between the commit that is currently active in your ABAP runtime and the commit that you chose to pull. All
objects with differences are included in a single change request. If any code parts require an XPRA to be run
after the import, it can't be done in gCTS. This is because, instead of importing all the change requests (and
running all after-import methods), only one change request is created and imported. It's impossible to
manually alter this change request to include the XPRA.
This is custom documentation. For more information, please visit the SAP Help Portal
9
11/15/2023
CTS Term
Meaning in gCTS
Transport Directory
In general, gCTS no longer needs a shared transport directory as required in the classic CTS.
 Note
If you want to transport requests created for SAP Note corrections, or modi cation adjustment transports
between systems, you must continue to con gure the classic CTS, including the transport directory. For
more information, see the previous section: TMS - Concept.
gCTS Entities and Git Entities Explained
The following sections contain background information about speci c gCTS-entities as well as the usage of Git-speci c entities
in gCTS.
gCTS Registry
Use the gCTS registry to assign ABAP objects contained in change requests to a speci c Git repository.
About the vSID
When you create a Git repository on your ABAP system, you must enter a so-called vSID.
About Commits in gCTS
A commit in Git represents a snapshot of a Git repository at a speci c point in time.
About Versions of Repositories in gCTS
You can use branches and tags to de ne versions of repositories in gCTS.
References to Git Documentation
The Git-Enabled Change and Transport System (gCTS) leverages Git functions with the aim of managing ABAP
development using Git repositories. The following topic provides a collection of links to documentation of Git concepts
and functions.
gCTS Registry
Use the gCTS registry to assign ABAP objects contained in change requests to a speci c Git repository.
Use
If you use gCTS without the registry, gCTS-speci c transport layers and assignments of ABAP packages to these transport
layers are used to organize the relationship between a Git repository and the objects in a transport request. The gCTS registry
aims at a closer integration between ABAP objects and Git repositories. The gCTS registry can reduce manual efforts in
situations such as the following:
For Customizing Objects
Customizing objects don't have any package assignment. Every time a transport request for Customizing objects is
created, the correct transport target of the request, which is used to determine the correct Git repository, must be
manually assigned.
 Recommendation
We recommend that you use the gCTS registry for Customizing objects.
For Distributed Development
This is custom documentation. For more information, please visit the SAP Help Portal
10
11/15/2023
In a distributed development environment, where developers work in multiple ABAP development systems, all
developers must know about the structure of the repositories that exist for their projects. To do this, they must manually
ensure that all objects that belong to the same package, but have been developed by different developers in different
systems, are assigned to the same Git repository.
If you use the gCTS registry, only one transport layer is required. You use the same virtual non-ABAP system (vSID) for all
repositories that use the registry. You can register all Customizing objects that you create in a system in the same repository.
Source code-based objects for which the gCTS registry is used can be distributed among different project-based repositories.
All systems where you want to use the gCTS registry have to be connected to a gCTS registry server with high availability, for
example the production system. Registration is possible on any ABAP system that is connected to the registry server. All
systems where objects are changed require a connection to the registry server. These are usually development systems. You
can register ABAP objects in the gCTS registry, even before the objects are created.
 Note
For more information about the gCTS registry, see SAP Note 3046346
: gCTS Registry: Central Note .
Prerequisites
Using the gCTS registry that's integrated into your ABAP development or Customizing processes is supported only if you
implement a Business Add-In (BAdI) that is run when you release a transport request or task. Make sure you implement
the BAdI in all development systems before you start using the registry.
For more information, see Integrate the gCTS Registry with the Transport Organizer.
General Process
Working with the gCTS registry includes the following work ow:
Step
Description
More Information
1
Make one of your ABAP systems the gCTS registry server.
Con gure the gCTS Registry
2
Connect your development systems to the gCTS registry server.
3
Register Git repositories in the gCTS registry.
Register Git Repositories in the gCTS Registry
4
Optional: Register repository branches in the gCTS registry.
Display and Change Repository Details in the gCTS
Registry
5
Register all objects that belong to registered repositories in the gCTS
Register ABAP Objects in the gCTS Registry
registry.
6
7
Integrate the gCTS registry with the Transport Organizer, if you haven't
Integrate the gCTS Registry with the Transport
previously done this.
Organizer
Perform your Customizing and development tasks as usual.
About Using gCTS for Customizing Data
When you use the gCTS registry for Customizing data, make sure you
use the vSID, which you've de ned for the registry, as the target system
for transport requests.
Related Information
Con gure the gCTS Registry
Use the Registry Tab of a Repository
This is custom documentation. For more information, please visit the SAP Help Portal
11
11/15/2023
About the vSID
When you create a Git repository on your ABAP system, you must enter a so-called vSID.
This is a three-character system ID of a virtual non-ABAP system, which is unique in your transport landscape. The non-ABAP
system is created automatically if the ABAP system where you create the Git repository is a domain controller. If the ABAP
system isn't a domain controller, the non-ABAP system has to be created manually. The non-ABAP system is of a special type
VCS (version control system). You can display it in the Transport Management System of your ABAP system using
Overview
Systems . In development systems, transport routes are created to the non-ABAP systems, which are assigned to gCTSspeci c transport layers.
 Example
Example of a vSID: DEV
Purpose of the vSID
The vSID is required for different purposes:
On source systems where the gCTS registry is not used: The vSID is used as the import target.
If the role of a repository is Development (used for source systems), the non-ABAP system is used as the import target
of change requests, which are created in the ABAP system and which use a gCTS-speci c transport layer.
By default, all change requests that you release in your ABAP development system, which use a gCTS-speci c transport
layer, are put in the import queue of the non-ABAP system using the transport layer that was created for it. From there,
they're automatically pushed to your remote Git repository by default.
This way, developments managed by gCTS can be separated from developments managed by the classic CTS.
 Note
If you already have an existing transport landscape that uses the classic CTS, you can continue to use the existing
transport landscape for the developments that don't use gCTS.
On source systems where the gCTS registry is used: You still need a vSID to create a repository on an ABAP system. But
the registry determines into which repository an object is pushed. You can use the same vSID for all repositories that use
the registry. For more information, see gCTS Registry.
The names of gCTS-speci c transport layers are derived from vSIDs.
The name of the non-ABAP system serves as the basis for the name of the transport layer used for gCTS-managed
developments in the ABAP system. The name of the transport layer follows this naming convention Z+<vSID>.
 Example
Example of a transport layer: ZDEV
On target systems, the vSID is the source system for generated change requests.
If the role of the repository is Provided (used for target systems), the non-ABAP system serves as the virtual source
system of change requests that are created internally on the ABAP target system, with each pull from the remote Git
repository to the ABAP system.
The number of generated change requests are derived from the vSID.
The generated change requests created for the import in an ABAP target system are derived from the non-ABAP
system. For more information, see Change Request Numbers.
This is custom documentation. For more information, please visit the SAP Help Portal
12
11/15/2023
When you pull a commit, a change request is created. You can display the change request on the Activities tab. Change
requests are used as a container to import and activate ABAP objects in the ABAP target system.
How the vSID is Created
The vSID is created in the following ways:
If the ABAP development system is a domain controller, the non-ABAP system is automatically created when you create
a Git repository on your ABAP system.
This triggers the following actions in Transport Management System:
Automatic creation of a non-ABAP system with the following details:
Parameter
Value
System
<vSID> as entered
Description
gCTS generated
Transport tool parameter:
<SID of domain controller>
COMMUNICATION_SYSTEM
Transport tool parameter: NON_ABAP_SYSTEM
VCS
Transport tool parameter: CTC (client transport
0
control)
 Note
This parameter is generated only if it's needed.
Automatic creation of a gCTS-speci c transport route of type Consolidation and a transport layer with the
following details:
Field
Description
Integration system
<SID of current ABAP system>
Transport layer
Z<SID of non-ABAP system>
Consolidation system
<vSID>
Distribution of the con guration in the transport domain.
For more information, see Create Git Repositories on an ABAP System.
If the ABAP development system isn't a domain controller, you have different options as described under Prepare ABAP
Systems for Repositories.
Recommendations
If you push content to the same repository from different development systems, you must use the same vSID in all development
systems. Otherwise, you can't work on objects that were created in another development system.
If you create a repository on a target system to pull content from the corresponding development system, it isn't mandatory
that you use the same vSID. Nevertheless, using the same vSID can be useful for traceability reasons, for example to
understand where certain changes came from.
This is custom documentation. For more information, please visit the SAP Help Portal
13
11/15/2023
Related Information
CTS Entities Used in gCTS
About Commits in gCTS
A commit in Git represents a snapshot of a Git repository at a speci c point in time.
Commits in Git
A commit is identi ed by a commit hash.
Each commit typically includes the following information:
Author: The user who triggered the commit.
Timestamp: The date and time when the commit was created.
Commit message: A description of the changes made in the commit.
When you create a commit, Git compares the changes you made to the previous commit of the repository and creates a new
commit that represents those changes. The commit is then added to the repository's history, and the repository is updated to
re ect the new state. Commits are essential for collaboration and version control in Git. They provide a way to track and
manage changes, revert to previous states, and collaborate with others by sharing and merging commits.
For more information, see Recording changes to the repository including committing changes to the repository.
Commits in gCTS
A Git repository typically contains a complete software component , that is, a set of software objects that are to be developed
and delivered together. When you start working with gCTS, you can either start with a new development project (for example a
new ABAP package), or you can transfer an existing state of a software component (for example an existing package) to a Git
repository. For more information, see How to Onboard Existing Developments to gCTS.
gCTS works with Git commits using change requests for export and import. Commits are created in the local repository in the
branch of the repository that is currently active in the system. By default, a commit is created when a change request is
released in a source (development) system. The ABAP objects contained in the change request are converted into les which
are committed to the local repository and are then pushed to the remote repository. With each new commit, a new version of
the software component is created. They aren't delta transports even though change requests are used to record object
changes.
 Note
When an ABAP object is committed to a Git repository for the rst time, the complete object must be pushed. Partial objects
(LIMU) are only allowed when the complete object was committed at least once. If commits with partial objects are pulled to
target systems where no corresponding complete object exists, the import fails.
When a commit is pulled in a target system, gCTS compares the objects of the commit to be pulled with those of the current
commit. All objects that differ between the commits are aggregated into a new generated change request that contains all
changes between the two commits. This means, not only the objects changed in this commit, but also all objects that are
different between the two commits are imported. The generated change request can be compared to a delta merge transport.
It is imported with the default logic of the Transport Management System. The number of the request is different from the
number of the request that was used when the objects were exported from the development system. For more information, see
the Change Requests section in the CTS Entities Used in gCTS topic.
This is custom documentation. For more information, please visit the SAP Help Portal
14
11/15/2023
 Caution
Using the manual deploy function on the Objects tab with the Deploy Scope = Current Commit imports the version of the
software component of the repository of the current commit. This means, all objects are important instead of only a delta.
For more information, see Manually Deploy Objects.
Creating Commits
Commits are created in the following situations:
When you release a change request with ABAP objects.
If the gCTS Business Add-In (BAdI) is implemented: When you release a task.
When you manually commit les, for example after you've resolved a con ict.
For more information, see Manually Commit Files.
When you manually push objects.
For more information, see Manually Push Objects.
When merging branches.
For more information, see Merge Branches of a Repository.
Scenarios Where No Commit is Created
When gCTS doesn't detect any changes in the objects to be committed compared to the current state of the objects in the
repository, no new commit is created. However, a new COMMIT process is displayed on the Log tab with a green (success) state
. In the log details, a tp log message can be found stating that no changed objects were found and that there's nothing to do.
This behavior can occur in the following situations:
When you release a change request that doesn't contain any changed objects, for example because all changed objects
were already committed by released tasks.
When you manually push an empty change request or task.
 Note
Nevertheless, it is possible that a commit is created when you release a task or a change request that was previously pushed
manually. This is because releasing a task or a request can result in property changes of objects that gCTS recognizes as a
change.
 Note
When you pull a commit that doesn't contain any changed objects, neither a change request is generated because no objects
need to be imported, nor an activity is displayed on the Activities tab.
About Versions of Repositories in gCTS
You can use branches and tags to de ne versions of repositories in gCTS.
In gCTS, the default version of a repository is set as 1.0.0. The version can be seen in the .gcts.properties.json le. When
a new branch is created, a separate version of the gCTS properties le is created in the new branch.
This is custom documentation. For more information, please visit the SAP Help Portal
15
11/15/2023
When a new tag is created for a current commit using the semantic versioning format, gCTS updates the version information in
the gCTS properties le of the active branch.
When creating a dependency to another repository, you can specify a version of the repository as the dependency.
Related Information
The gCTS Properties File
Create Branches in a Repository
Create Tags
Set Dependencies of a Repository
References to Git Documentation
The Git-Enabled Change and Transport System (gCTS) leverages Git functions with the aim of managing ABAP development
using Git repositories. The following topic provides a collection of links to documentation of Git concepts and functions.
Links to Git
Topic in gCTS
Required Git
Link to Git Information
GitHub-speci c information
https://git-scm.com/
https://docs.github.com/en/get-started
Function
Git-Enabled Change and
General
Transport System -
information
Concept
about Git
Prerequisites for Git-
Getting a Git
https://git-scm.com/book/en/v2/Git-
Enabled Change and
repository
Basics-Getting-a-Git-Repository
Transport System
https://docs.github.com/en/getstarted/quickstart/create-a-repo
https://docs.github.com/en/accountand-pro le/setting-up-andmanaging-your-github-useraccount/managing-access-to-yourpersonal-repositories/invitingcollaborators-to-a-personalrepository
Creating a personal access token
For gCTS, you need the repo scopes
including delete repositories, and the
user scopes.
About Commits in gCTS
Recording
https://git-scm.com/book/en/v2/Git-
changes to the
Basics-Recording-Changes-to-the-
repository
Repository
including
committing
changes to the
repository
Reset Local Repository
git-reset
https://git-scm.com/docs/git-reset
Use the Branches Tab of a
Git branching
https://git-scm.com/book/en/v2/Git-
Repository
Branching-Branches-in-a-Nutshell
This is custom documentation. For more information, please visit the SAP Help Portal
16
11/15/2023
Topic in gCTS
Required Git
Link to Git Information
GitHub-speci c information
Function
Use the Con ict
Git merging
https://git-
Resolution Editor
scm.com/book/en/v2/GitBranching-Basic-Branching-and-
Merge Branches
Merging#_basic_merge_con icts
of a Repository
Merge strategies:
https://gitscm.com/docs/merge-strategies
Merge options: https://gitscm.com/docs/merge-options
Use the Tags Tab of a
Git tagging
Repository
Create Tags
https://git-scm.com/book/en/v2/GitBasics-Tagging
.
git-check-ref-
https://git-scm.com/docs/git-check-ref-
format
format
Use Cases of Git-Enabled Change and Transport System
Git-enabled Change and Transport System supports the use cases Git-Based Software Distribution and Git-Based Continuous
Integration.
Git-Based Software Distribution
You can use Git as the technical basis of software distribution.
Git-Based Continuous Integration
gCTS allows you to set up continuous integration processes for ABAP development.
Git-Based Software Distribution
You can use Git as the technical basis of software distribution.
You can select any software version and deploy it to an ABAP system by selecting a commit in the corresponding Git repository.
The following animated graphic shows how the process works when you transfer ABAP development objects from one system to
another using Git-based distribution:
This is custom documentation. For more information, please visit the SAP Help Portal
17
11/15/2023
Any type of ABAP development and Customizing object can be stored in a Git repository. Whenever objects are changed in a
development system, the classic CTS will record them in transport requests and tasks. gCTS uses these transport requests and
tasks to transfer and commit the contained objects to a local repository. From there, the commits are pushed to a central Git
repository ‒ the remote repository.
The objects in the remote repository can then be transferred into the local repository of any target system, and imported in this
system. Internally, the well-known transport tools provide fast import, automatic object activation, and the running of afterimport methods.
gCTS enables you to perform a rollback to a previous commit directly after importing a commit.
 Caution
Use the option to roll back imports only in test and quality assurance systems where you can immediately revert errors.
Don’t use it in production systems.
Git-Based Continuous Integration
gCTS allows you to set up continuous integration processes for ABAP development.
In many development environments, continuous integration (CI) processes are used. They help manage code changes made by
multiple developers and bring the changes together in one integration system as often and early as possible. Developers can
begin by working independently on the features they’re responsible for. Whenever a feature is ready for an integration test, the
developers can promote their developments to an environment where the features and xes implemented by different
developers can be integrated and tested together.
gCTS safeguards the advantages of a central development environment and, at the same time, makes sure that ABAP
development processes can be managed in the same way as in other development environments. This includes the option to set
This is custom documentation. For more information, please visit the SAP Help Portal
18
11/15/2023
up new development or testing systems with any selectable state of the coding. This state can be taken from a repository that
keeps track of different releases and feature development.
In the classic Change and Transport System, transport requests are used to integrate changes into other systems. Transport
administrators with sufficient permissions do imports in the target systems. Imports are usually not done by developers. Over
time, this has led to a task separation between developers who release transport requests and transport administrators who
maintain import queues ( lled with transport requests) and trigger the imports. This transport process works but has its limits.
It can help in highly regulated environments. But in some cases, it isn’t exible enough and isn’t suitable for state-of-the-art
development processes and tools that are used in CI or DevOps. Especially if you work in a heterogeneous development
environment, which includes non-ABAP applications, the processes for the different platforms are different and can hardly be
harmonized.
gCTS prepares ABAP for CI processes and provides options to set up similar development processes for ABAP and non-ABAP
platforms.
You can set up CI pipelines that update your target systems automatically. CI processes involve using a pipeline that de nes a
sequence of steps to be performed and conditions that control the pipeline.
gCTS is integrated into Project "Piper". It provides gCTS steps that you can use in your pipeline. For more information, see
Integration of gCTS in CI Pipelines.
The following animated graphic illustrates what the process could look like:
In this example, there's a remote project repository on a Git server with three branches (dev, qa , prod) for three different
codelines for development, quality assurance, and production. There's a common three-system landscape with a Dev system, a
QA system, and a Prod system.
Each system is subscribed to its related branch (dev, qa , prod). This means that the repository was created and cloned to all
systems. The difference is this:
In the Dev system, the dev branch is the active branch.
This is custom documentation. For more information, please visit the SAP Help Portal
19
11/15/2023
In the QA system, the qa branch is active.
In the Prod system, the prod branch is active.
The work ow is as follows:
1. When a developer commits a change to the local repository in the Dev system, the commit is pushed to the dev branch
of the remote repository.
2. A CI server observes the remote repository for new changes (in the form of new pull requests). The pipeline in the CI
server is con gured in a way that it's triggered when a new pull request arrives for the qa branch.
When a developer merges the dev branch into the qa branch, and a pull request is created, the CI server is triggered.
3. The CI server automatically pulls the changes from the qa branch to the QA system, and imports them there.
4. In the QA system, manual and automatic tests can be performed. Automatic tests could also be triggered by the pipeline
in the CI server (not shown in the animated graphic).
5. If tests in the QA system are successful, a developer or an admin user can manually merge the qa branch into the prod
branch.
6. The CI server is triggered, and it automatically pulls the changes from the prod branch to the Prod system, and imports
them there.
More Information
Continuous Integration and Delivery by SAP
gCTS: Process Overview
The following image map gives an overview of the steps involved when using gCTS to manage your development projects.
Please note that image maps are not interactive in PDF output.
Components of Git-Enabled Change and Transport System
The following components are required for Git-enabled Change and Transport System (gCTS).
This is custom documentation. For more information, please visit the SAP Help Portal
20
11/15/2023
Please note that image maps are not interactive in PDF output.
Prerequisites for Git-Enabled Change and Transport System
To work with Git-enabled CTS (gCTS), the following prerequisites must be ful lled.
 Note
The following tasks must be performed by system adminstration.
Prerequisite SAP Notes
Before you start working with gCTS, refer to SAP Note 2821718
for known issues in your SAP S/4HANA version. Implement
all SAP Notes correcting known issues in your SAP S/4HANA version.
Prerequisites: SAP Fiori App for Git-Enabled Change and Transport System (gCTS
App)
The gCTS app is the starting point for your gCTS con guration activities, as well as for using gCTS. To use the app, you must rst
implement it.
For more information, see App Implementation: Git-Enabled Change and Transport System.
Prerequisites: ABAP System
ABAP users who work with gCTS require authorizations depending on the tasks they need to perform and the
repositories that they need to access in the ABAP system. For more information, see Authorization Concept in gCTS.
gCTS requires the scheduled job SCTS_ABAP_VCS_IMPORT_OBSERVER in transaction SM37 to run the program
SCTS_ABAP_VCS_IMPORT_OBSERVER that observes the repositories on the ABAP system. If the ABAP system is a
domain controller, the program con gures mandatory settings for the Transport Management System. If the ABAP
system isn’t a domain controller, later when you create repositories on the ABAP system, you must prepare your ABAP
systems for the repositories. For more information, see Prepare ABAP Systems for Repositories.
The scheduled job is triggered whenever a change request is added to the import queue of the non-ABAP system (vSID)
that's assigned to the repository. It imports and commits the objects (new, changed, and deleted objects) of the
transports into the corresponding local repository.
This is custom documentation. For more information, please visit the SAP Help Portal
21
11/15/2023
By default, the job is scheduled for the user who enables gCTS. We recommend that you schedule the job with a technical
user. To do this, create a technical user in the ABAP system, and assign the authorizations of the SAP_BC_GCTS_ADMIN
role to this user. Then enable gCTS using the technical user.
For more information, see Enable Git-Enabled Change and Transport System in an ABAP System.
Prerequisites for the gCTS registry: For Customizing objects, we recommend that you use the gCTS registry. The gCTS
registry that's integrated in your Customizing process is supported only when you implement a Business Add-In (BAdI)
that's run when you release a change request or task. Make sure you implement the BAdI in all development systems
before you start using the registry.
For more information, see gCTS Registry and Integrate the gCTS Registry with the Transport Organizer.
Prerequisites: Operating System
The Git client abap2vcs.jar is written in Java. In a standard ABAP system installation, it’s part of the standard SAP
Kernel. To run the Git client, a Java runtime environment is required, which you must install manually. An Open JDK
version of at least 10 is required.
Optionally, you can use SAPMachine as Java runtime. For more information, see https://sap.github.io/SapMachine/
.
The current version (Long Term Support) can be used with gCTS.
If you use multiple application server instances, the Java runtime must be on a shared directory to avoid inconsistencies
and data loss. To share directories between application server instances, you can use Network File System (NFS), or
Server Message Block (SMB). A separate share is required for every individual ABAP system in your landscape.
 Example
Example of a shared Java runtime directory on Unix: /<my-shared-directory>/<SAPSID>/<my-java-
directory>/bin/java.
 Note
Remember the path to the Java executable of the Java runtime. You’ll need to enter it when you con gure gCTS. For
more information, see Enable Git-Enabled Change and Transport System in an ABAP System.
gCTS requires a working directory called gcts on the operating system. You must create this working directory, for
example in the following location: /usr/sap/<SID>/D00/gcts.
Note that the <sid>adm user requires write access in this directory.
If you use multiple application server instances, the directory must be on a shared directory to avoid inconsistencies and
data loss. To share directories between application server instances, you can use Network File System (NFS), or Server
Message Block (SMB). A separate share is required for every individual ABAP system in your landscape.
 Example
Example of a shared directory: /usr/sap/<my-shared-directory>/<SID>/gcts.
 Note
The working directory serves as the local Git repository of your ABAP system. Remember the path to the working
directory. You’ll need to enter it when you con gure gCTS. For more information, see Enable Git-Enabled Change and
Transport System in an ABAP System.
You've opened ports 22 and 443 for outgoing communication.
Port 22 is required for SSH communication between the Git client on the operating system of the ABAP server
and the remote repository on the Git server.
Port 443 is required for the secure communication (HTTPS) between the ABAP runtime and the remote
repository on the Git server.
This is custom documentation. For more information, please visit the SAP Help Portal
22
11/15/2023
Prerequisites: Git Server
System administration users who con gure gCTS, as well as development users who work with it, should have at least
basic knowledge about using Git as a version-control system. To use speci c gCTS functions, more advanced Git
knowledge is required. For more information about relevant Git knowledge when working with gCTS, see References to
Git Documentation.
You have a user account on a Git server, for example GitHub.
You have a remote Git repository on a Git server.
The repository must not be empty. It must at least contain a README le.
All users who need write access to the repository (for example, when pushing their developments to the repository),
must be entered as collaborators in the repository, or they must belong to a team that has sufficient permissions to
access the repository.
The user who schedules the gCTS observer job must also be a collaborator in the repository. This is the user who enables
gCTS in the ABAP system. We recommend that you use a technical user in the ABAP system to schedule the observer
job. To be able to set authentication of this user to the Git server, we recommend that you create a technical user on
your Git server.
For more information, see Enable Git-Enabled Change and Transport System in an ABAP System.
All users who need write access in remote repositories, and users of private repositories, must specify authentication to
the Git server in the gCTS app. We recommend that you use user-speci c authentication. For this, all ABAP users,
including the technical user, require a user account on the Git server. For more information, see Set User-Speci c
Authentication.
Prerequisites: Communication Between the Components of gCTS
Different components are involved in gCTS. You must enable the communication between them in a secure way, using
Secure Socket Layer (SSL) certi cates in all relevant components. For more information, see Security for Git-Enabled
Change and Transport System.
If you use a communication proxy, gCTS requires the proxy settings to be con gured in the following locations:
ABAP system
For more information, see Con guring a Proxy in the Connectivity section of the ABAP platform documentation.
Operating system
If you've con gured a communication proxy on the ABAP system, you must also con gure it on the operating
system. For more information, refer to the corresponding documentation of your operating system.
Java environment
By default, the Java environment uses the proxy con gured on the operating system. If you've con gured it on the
operating system, no additional con guration is necessary for gCTS.
Related Information
Components of Git-Enabled Change and Transport System
Security for Git-Enabled Change and Transport System
References to Git Documentation
Authorization Concept in gCTS
All functions in gCTS are safeguarded by authorization checks at multiple levels.
This is custom documentation. For more information, please visit the SAP Help Portal
23
11/15/2023
Only users with the relevant authorizations can execute speci c tasks in gCTS.
Authorizations in the ABAP System
With the help of authorizations in the ABAP system, you can specify whether users are allowed to perform administrative,
repository-related, or development-related tasks in gCTS.
Depending on the gCTS roles and authorization objects assigned to them, users only see the functions for the tasks that they're
allowed to run. As a result, the gCTS app looks different for each user, depending on their authorizations .
SAP provides ABAP roles for the different gCTS user types Super Administrator, System Administrator, Repository
Administrator, and Developer. Each role has the appropriate authorizations for different tasks in gCTS. In most cases, it's
sufficient to grant user authorizations by assigning copies of roles. If the roles don't suit your needs, you can assign the gCTS
authorization objects individually according to your requirements.
The authorizations are required in each client in which you work with gCTS.
For more information, see Roles in gCTS and Authorization Objects in gCTS.
 Note
The gCTS authorizations are required for gCTS tasks, in addition to other authorizations that users may need, depending on
their tasks. For example, users may need authorizations to do ABAP development, to create Git repositories using a new
vSID, or to assign members to teams. For more information about authorizations in the CTS, see Authorization Concept in
the CTS.
The authorization trace is available to nd out which authorizations are required for speci c tasks. For more information, see
Using the System Trace to Record Authorization Checks (Transaction STAUTHTRACE).
Collaboration Permissions in the gCTS App
Depending on the role or authorizations users have in the ABAP system, it can be necessary to grant them further collaboration
permissions for individual local repositories to which they need access, for example for private repositories.
Collaboration permissions can be assigned in the gCTS app. They can be granted to individual users, or teams, when you add
users as collaborators to a repository. With collaboration permissions, users can view and run additional functions in speci c
repositories.
For more information, see: Collaboration Permissions.
Permissions on the Git Server
To work with Git repositories, every ABAP user also requires a user on a Git server as described in the Prerequisites: Git Server
section under Prerequisites for the Git-Enabled Change and Transport System.
ABAP users need to be mapped and authenticated to users on the remote Git server. To do this, gCTS supports different
authentication options. We recommend that you use token-based authentication. For more information, see Set User-Speci c
Authentication.
For access to a speci c repository, the following users must be either owners or collaborators in the remote repository, or they
must belong to a team that has access to the repository:
All users who need read and write access to a repository on the Git server (for example, when pushing their
developments to the repository).
This is custom documentation. For more information, please visit the SAP Help Portal
24
11/15/2023
The user who has scheduled the gCTS observer job. By default, this is the user who has enabled gCTS in the ABAP
system. We recommend that you use a technical user for the observer job. For more information, see Enable Git-Enabled
Change and Transport System in an ABAP System.
Roles in gCTS
Using roles you can grant authorizations based on tasks that users need to perform in gCTS.
Authorization Objects in gCTS
The gCTS authorization object S_GCTS_SYS is available to control the authorizations of gCTS users.
Collaboration Permissions
Collaboration permissions allow gCTS administrators to grant users permissions for Git repositories on ABAP systems.
Example: Distribution of Authorizations in a gCTS Project
The following is an example of how authorizations can be distributed in a team that works with gCTS:
Related Information
Security for Git-Enabled Change and Transport System
Roles in gCTS
Using roles you can grant authorizations based on tasks that users need to perform in gCTS.
gCTS provides prede ned roles that can be assigned to users depending on the tasks they need to perform.
The SAP_BC_GCTS_ADMIN role combines all authorizations required to work with gCTS, including the con guration of gCTS.
The other gCTS roles contain authorizations required for speci c tasks. Note that they build upon each other. If you want to
grant comprehensive authorizations to users using these roles, you must assign them multiple gCTS roles.
Overview of Roles
Technical Name of Role
Name of Role
Description of Functions
SAP_BC_GCTS_ADMIN
gCTS: Default
gCTS super administration role with authorizations for all gCTS tasks on
Template for
system and repository level. This role contains authorizations required for
Admin
con guring gCTS and con guring Git repositories on the ABAP system. Use
this role for super administration users, if you don't need to restrict the
authorizations for gCTS in your company. You can also use it, when testing the
usage of gCTS.
This role contains the gCTS authorization object S_GCTS_SYS with eld
ACTVT = All Activities.
In addition, it contains authorizations of the CTS authorization objects
S_CTS_ADMI, S_CTS_SADM, and S_TRANSPRT as well as authorizations to
create and release jobs (S_BTCH_ADM and S_BTCH_JOB) that are required
to schedule the gCTS observer job.
This is custom documentation. For more information, please visit the SAP Help Portal
25
11/15/2023
Technical Name of Role
Name of Role
Description of Functions
SAP_BC_GCTS_SYSTEM_ADMIN
gCTS: System
gCTS administration role with authorizations to perform gCTS tasks on
Administrator
system level, such as create, edit, and delete system con guration
parameters. This role contains authorizations for recurring system
administration tasks.
This role contains the gCTS authorization object S_GCTS_SYS with eld
ACTVT = All Activities.
 Note
In addition, to generally execute tasks on repository level, users
require the authorizations of the
SAP_BC_GCTS_REPOSITORY_ADMIN and
SAP_BC_GCTS_REPO_DEVELOPER roles.
To execute tasks in individual repositories, users require
collaboration permissions in the repositories.
SAP_BC_GCTS_REPOSITORY_ADMIN
gCTS:
gCTS repository administration role with authorizations for gCTS tasks on
Repository
repository level, such as create, edit, and delete Git repositories on the ABAP
Administrator
system, and execute write operations in repositories, such as push and pull
commits. Users with this role assigned can't assign collaborators or add or
change repository con guration parameters.
This role contains the authorizations of the authorization objects
S_CTS_ADMI, S_CTS_SADM, and S_DATASET.
This role delivers the gCTS authorization object S_GCTS_SYS in an inactive
mode. To grant all authorizations for repository administration tasks, activate
it in your copied role with ACTVT = 34 (Write), and 33 (Read). For more
information, see Authorization Objects in gCTS.
SAP_BC_GCTS_REPO_DEVELOPER
gCTS:
gCTS development role with authorizations to execute Git operations for own
Repository
Git repositories on the ABAP system, such as push and pull commits.
Developer
This role contains the authorizations of the authorization objects S_RFC,
S_SERVICE,S_CTS_ADMI, S_CTS_SADM, S_DATASET, and S_TRANSPRT.
Users who have this role assigned can create Git repositories on the ABAP
system. To collaborate in repositories of other users, they require additional
collaboration permissions.
Assign roles using Managing Roles.
 Note
Don’t assign any role directly, but instead assign a copy of the role to the users. For more information, see Changing
Standard Roles.
If you want to assign the authorizations individually, check the required role for elds and values of the individual
authorization objects, or use the authorization trace to nd out which authorizations are required for the required tasks. For
more information, see Using the System Trace to Record Authorization Checks (Transaction STAUTHTRACE).
Related Information
Authorization Objects in gCTS
Collaboration Permissions
Authorization Objects in the CTS
This is custom documentation. For more information, please visit the SAP Help Portal
26
11/15/2023
Authorization Objects in gCTS
The gCTS authorization object S_GCTS_SYS is available to control the authorizations of gCTS users.
S_GCTS_SYS
The authorization object S_GCTS_SYS is available for on-premise scenarios. It is delivered as part of the
SAP_BC_GCTS_ADMIN, and SAP_BC_GCTS_SYSTEM_ADMIN roles, and in an inactive mode as part of
SAP_BC_GCTS_REPOSITORY_ADMIN. The eld ACTVT (Activity) controls the level of access a user has to a Git repository on
an ABAP system. The other elds of this authorization object aren't used. The following values are available for the ACTVT eld:
Description of Values of Field ACTVT of S_GCTS_SYS
ACTVT
Description
33 (Read)
Users have general Read permissions on system level and on repository level.
On the Repositories tab in the System view, users can view all repositories except for private repositories.
Users can create repositories using an existing vSID, and delete own repositories.
In repositories of other users, users can view all information on all tabs.
34 (Write)
Users have general Write permissions on system level and on repository level.
Users can view all repositories on the ABAP system including private repositories.
Users can create repositories using an existing vSID, even if the SYSTEM_RESTRICTION con guration
parameter is set to restricted.
Users can delete own repositories.
Users can view the other tabs in the System view. On the Teams tab, they can create new teams.
In repositories of other users, users can pull commits, create branches, push objects and commits, create
and delete tags and jobs.
70 (Administer)
Users have general Admin permissions on system level and on repository level.
Users can create, edit, and delete con guration parameters for systems.
Users have administration authorization for all Git repositories on the ABAP system.
Users can create, edit, and delete Git repositories on the ABAP system, even if the
SYSTEM_RESTRICTION con guration parameter is set to closed. Users can create repositories using a
new vSID.
The following conditions can in uence the authorizations granted by the authorization object S_GCTS_SYS:
The value of the gCTS system con guration parameter SYSTEM_RESTRICTION can further restrict the creation and
deletion of repositories on the ABAP system. For more information, see Con guration Parameters for Systems.
Owners of repositories always have Admin permission in their repositories, regardless of the authorizations of
authorization object S_GCTS_SYS.
For individual repositories, collaboration permissions with Admin, Write , or Read authorization can be granted. For more
information, see Collaboration Permissions.
To create repositories with a new vSID, in addition to S_GCTS_SYS with ACTVT = Administer, users need additional
authorizations to create non-ABAP systems and transport routes and to read and write les in the gCTS directory.
Overview: Authorizations of Authorization Object S_GCTS_SYS with SYSTEM_RESTRICTION = open
This is custom documentation. For more information, please visit the SAP Help Portal
27
11/15/2023
The following table provides an overview of the different levels of authorization of S_GCTS_SYS and the effect on the individual
tabs on the gCTS app. For more information about the effects of the different levels of authorization, see the previous table
Description of Values of Field ACTVT of S_GCTS_SYS.
Overview: Authorizations of Authorization Object S_GCTS_SYS with SYSTEM_RESTRICTION = open
S_GCTS_SYS
ACTVT= 70
ACTVT=34 (Write)
ACTVT=33 (Read)
(Admininster)
System view
Repository view
Repository tab
Admin
Write
Write
Con gurations tab
Admin
Write
None
Registry tab
Admin
Write
None
Teams tab
Admin
Write
None
Repository view header
Admin
Read
Read
Commits tab
Admin
Write
Read
Con guration tab
Admin
Read
Read
Activities tab
Admin
Write
Read
Branches tab
Admin
Write
Read
Log tab
Admin
Write
Read
Objects tab
Admin
Write
Read
Registry tab
Admin
Read
Read
Properties tab
Admin
Read
Read
Collaboration tab
Admin
Read
Read
Tags tab
Admin
Write
Read
Jobs tab
Admin
Write
Read
Other gCTS Authorization Objects
S_GCTS_R
The authorization object S_GCTS_R is available for Cloud scenarios.
 Note
This authorization object doesn't have any effect in on-premise systems.
S_GCTS_REP (obsolete)
The authorization object S_GCTS_REP contains the eld REPOSITORY. The value is the hash value of the repository ID. It
grants administration permission for the repository ID provided.
 Note
This authorization object is obsolete. If you've assigned it in an earlier release, you can continue to use it. However, don't
assign it to new users.
This is custom documentation. For more information, please visit the SAP Help Portal
28
11/15/2023
Use authorization object S_GCTS_SYS to provide general authorization for Git repositories on ABAP systems, or
collaboration permissions to grant permissions for individual repositories on ABAP systems to individual developers or
teams.
Collaboration Permissions
Collaboration permissions allow gCTS administrators to grant users permissions for Git repositories on ABAP systems.
Collaboration permissions are required for users to do certain tasks. For example, they're required for users who have the
authorizations of the SAP_BC_GCTS_REPO_DEVELOPER role assigned and want to work in private repositories.
Depending on the tasks they need to do, users with one of the following roles also require collaboration permissions:
SAP_BC_GCTS_SYSTEM_ADMIN
SAP_BC_GCTS_REPOSITORY_ADMIN
You can add collaboration permissions to individual users or teams by assigning them as collaborators to a repository with
Admin, Write , and/or Read permissions.
 Note
Users who have the authorizations of the SAP_BC_GCTS_ADMIN role assigned to them have collaboration permissions for
all Git repositories on the ABAP system by default.
The following collaboration permissions are available:
Owner (only available for individual collaborators)
The user who creates a repository on an ABAP system has Owner permissions by default. These are equal to Admin
permissions. Only one user can have Owner permissions in a repository. If you add a collaborator with Owner
permissions, the previous owner gets back the previous permissions. If the user was not previously a collaborator, the
user is removed from the repository as a collaborator.
Admin
Grants administration permissions in a Git repository on an ABAP system. Users can perform the following tasks:
Edit and delete a repository.
Create, edit, and delete con guration parameters of a repository.
Create, edit, and delete properties of a repository.
Unregister a repository, branches, and objects from the gCTS registry.
All tasks of the Write and Read permissions.
Write
Grants write access in a Git repository on an ABAP system. Users can perform the following tasks:
Work with branches in a repository.
Commit les in a repository.
Push objects to a repository.
This is custom documentation. For more information, please visit the SAP Help Portal
29
11/15/2023
Register a repository with the gCTS registry, and register branches and objects.
Read
Grants read access in a Git repository on an ABAP system. Users can perform the following tasks:
View all information on all tabs in a repository, even if it's private.
 Note
For repositories that were created on ABAP systems with the default value Visibility set to Public, this permission
isn't required because all users have read access.
Related Information
Con guration Parameters for Systems
Use the Collaboration Tab of a Repository
Authorization Concept in gCTS
Example: Distribution of Authorizations in a gCTS Project
The following is an example of how authorizations can be distributed in a team that works with gCTS:
Example
There's a team of 12 developers working on three development projects in the areas of Financial Management, Human Capital
Management, and Platform Services. Three repositories exist for the different projects: FIN_REPO, HCM_REPO, and PS_REPO.
Five developers work in Financial Management, ve in Human Capital Management, and two developers work in Platform
Services but contribute also to both Financial Management and Human Capital Management. There are two system
administrators: Admin1, and Admin2.
In the DEV system, the setup is as follows:
Admin1 has the authorizations of the administration role SAP_BC_GCTS_ADMIN. Admin1 has full authorizations
for all gCTS tasks.
Admin1 has enabled gCTS in the system. For this, Admin1 has scheduled the gCTS observer job and must be a
collaborator in all remote repositories. Admin1 doesn't require any additional collaboration permissions in the
repositories on the ABAP system, because these are automatically granted by the role.
Admin 2 has the authorizations of the SAP_BC_GCTS_SYSTEM_ADMIN, SAP_BC_GCTS_REPOSITORY_ADMIN
and the SAP_BC_GCTS_REPO_DEVELOPER roles. Admin 2 is responsible for the con guration of the repositories
in the system. Admin 2 has created the remote repositories on the company´s enterprise GitHub server, and has
assigned Admin1 and the relevant development users as collaborators to the remote repositories on the GitHub
server. Admin 2 creates the repositories on the DEV system, clones them, and sets additional con guration
parameters as required.
Admin 2 assigns the authorizations of the SAP_BC_GCTS_REPO_DEVELOPER role to all developers.
In addition, Admin 2 creates the following teams on the Teams tab in the gCTS app:
Team FIN: 5 FIN developers
Team HCM : 5 HCM developers
Team PS: 2 PS developers
This is custom documentation. For more information, please visit the SAP Help Portal
30
11/15/2023
On the Collaboration tab in the individual repositories, Admin 2 assigns the following teams with Write
permission:
Repository Financial Management : Team FIN and Team PS
Repository Human Capital Management : Team HCM and Team PS
Repository Platform Services: Team PS
All development users can now work in the repositories to which they're assigned, and can do tasks in their
repositories, such as to commit les, push objects, work with branches, create, edit, and delete properties. Only
Admin 1 and Admin 2 can do tasks that involve creating, editing, and deleting con guration parameters, or
deleting repositories from the ABAP system.
In TST systems, the setup can be done the same way.
In the PRD system, both systems administrators exist. Admin1 enables gCTS. Admin 2 creates repositories and pulls
commits. Development users either don´t have a user, or, if they have a user with the development role, they only have
Read permission to any repositories.
Moreover, to protect the production system from unwanted changes, the gCTS system con guration parameter
SYSTEM_RESTRICTION is set to closed.
The following graphic illustrates the distribution of authorizations of the team members in DEV and TST:
This is custom documentation. For more information, please visit the SAP Help Portal
31
11/15/2023
Con guring Git-Enabled Change and Transport System
Before you can work with Git-enabled Change and Transport System (gCTS), an administration user must do the following
con guration steps:
This is custom documentation. For more information, please visit the SAP Help Portal
32
11/15/2023
Please note that image maps are not interactive in PDF output.
Enable Git-Enabled Change and Transport System in an ABAP System
You can use the Wizard to Enable gCTS in Current System to perform the con guration steps required to enable Gitenabled Change and Transport System (gCTS) in your ABAP system.
Set User-Speci c Authentication
Specify authentication of your ABAP user to the Git servers where your repositories are hosted, and, if necessary, to the
gCTS registry server.
De ne ABAP Packages as Managed by Git-Enabled Change and Transport System
By assigning the transport layer available for gCTS to an ABAP package, you de ne that all objects developed in this
package are managed by gCTS.
Con gure the gCTS Registry
To con gure the gCTS registry, you declare one of your ABAP systems as the gCTS registry server, and then connect the
relevant ABAP development systems with the gCTS registry server by setting a gCTS system parameter.
Integrate the gCTS Registry with the Transport Organizer
By integrating the gCTS registry with the Transport Organizer (transactions SE01/SE09), you enable the option to assign
objects in transport requests to speci c Git repositories.
Enable Git-Enabled Change and Transport System in an ABAP
System
You can use the Wizard to Enable gCTS in Current System to perform the con guration steps required to enable Git-enabled
Change and Transport System (gCTS) in your ABAP system.
Prerequisites
The prerequisites described under Prerequisites for Git-Enabled Change and Transport System are ful lled.
The user who uses the wizard has the authorizations of the SAP_BC_GCTS_ADMIN role assigned to them.
 Recommendation
We recommend that you use a technical user as described under Prerequisites: ABAP System.
Context
This is custom documentation. For more information, please visit the SAP Help Portal
33
11/15/2023
In the wizard, you set the paths to the gCTS working directory for repositories, the Java executable of the Java runtime, and the
Git client executable abap2vcs.jar. To do this, you must know where they’re located.
 Note
You can use transaction AL11 to check the paths in SAP directories. However, it’s possible that the Java executable was
installed in a directory that isn't displayed in AL11, for example /usr/bin/java.
In addition, the wizard schedules an observer job and sets mandatory TMS parameters.
Procedure
1. Start the gCTS app on your ABAP system as described under Start the SAP Fiori App for Git-Enabled Change and
Transport Management System.
2. In the System view of the gCTS app, choose Enable gCTS.
The Wizard to Enable gCTS in Current System opens.
3. Enter the following data:
 Note
To move to a new step, in between the steps, choose Save, and select the next step.
Steps in Wizard
Description
1. gCTS Directory
gCTS requires a working directory to store les in local repositories in the le system of the
application server as described under Prerequisites: Operating System. Note that a shared directory
is required if you work with multiple application server instances.
Enter the path to the working directory of gCTS. The path must end with gcts.
 Example
$(SYSTEM/DIR_INSTANCE)/gcts (default)
/usr/sap/<SID>/D00/gcts
The value is saved as the value of the system parameter VCS_PATH.
2. Java Runtime
gCTS requires a Java runtime on the le system of the application server to run the Git client as
described under Prerequisites: Operating System. Enter the path to the Java executable of the Java
runtime. For ABAP systems on Unix platforms, the path must end with java. For ABAP systems on
Windows platforms, the path must end with java.exe.
 Example
java (default)
(Unix platforms): /usr/sap/<SID>/SYS/exe/run/jre/bin/java
The value is saved as the value of the system parameter JAVA_RUNTIME.
This is custom documentation. For more information, please visit the SAP Help Portal
34
11/15/2023
Steps in Wizard
Description
3. Git Client
The Git client (Java executable: abap2vcs.jar) is delivered as part of the SAP Kernel and is
available in the "exe" directory on the le system of the application server. Enter the path to the Git
client. The path must exist and end with abap2vcs.jar.
 Example
$(SYSTEM/DIR_CT_RUN)/abap2vcs.jar
/usr/sap/<SID>/SYS/exe/run/abap2vcs.jar
The value is saved as the value of the system parameter A2G_RUNTIME.
4. Git-Enabled CTS
gCTS requires a scheduled job as described under Prerequisites: ABAP System.
By default, the job is scheduled for the current user who is logged on to the gCTS app. Note that for
all write operations that are triggered for any repository on this system, this user must be entered as
collaborator in the repository, or the user must belong to a team that has access to the repository. For
more information, see Prerequisites: Git Server.
By default, the job is scheduled on the default application server. If you work with multiple
application servers, you can change the default application server. To do this, select the Change the
Application Server link, and enter a speci c application server. By default, the eld is blank.
To schedule the observer job and set the TMS parameters, choose Initialize System.
5. Summary and Check
This step contains an overview of the settings that you made in the previous wizard steps. It also
contains a link to the Health Check.
4. To check that the con guration is complete, choose Health Check.
5. To close the wizard, choose Close.
Results
gCTS is now enabled in your ABAP system, and the following parameters are set:
gCTS working directory: VCS_PATH
Java runtime: JAVA_RUNTIME
Path to Git client: A2G_RUNTIME
The Health Check checks for valid values in the System Con guration Checks. You can display the values of the
parameters on the Con gurations tab of the System view. To edit these parameters, use the Con gurations tab, or the
Enable gCTS wizard.
 Note
In general, edit the value of the VCS_PATH parameter only before you start working with Git repositories. If you want
to change the value after you’ve added objects to the Git repository, make sure that the directory on the operating
system is also moved to the new location.
The observer job SCTS_ABAP_VCS_IMPORT_OBSERVER is scheduled in the system.
The Health Check veri es this in the Git-Enabled CTS Check. To display more information about the scheduled observer
job, for example to see which user has scheduled the job, use transaction SM37. For more information, see Checking the
gCTS Observer Job.
Related Information
This is custom documentation. For more information, please visit the SAP Help Portal
35
11/15/2023
Con guration Parameters for Systems
Use the Health Check
Set Con guration Parameters for Systems
In the gCTS app, you can set con guration parameters for the ABAP system.
Context
By default, the required system parameters are set when you enable gCTS in the ABAP system. For more information, see
Enable Git-Enabled Change and Transport System in an ABAP System. If necessary, you can add additional system parameters.
You can also add repository parameters as system parameters to make them valid for all repositories of the ABAP system. If a
repository parameter is speci ed in a repository, the value of the repository takes precedence. For more information on
repository parameters, see Con guration Parameters for Repositories.
 Caution
It is not allowed to specify the following security-related repository parameters as system parameters:
CLIENT_VCS_AUTH_USER
CLIENT_VCS_AUTH_PWD
CLIENT_VCS_AUTH_TOKEN
CLIENT_VCS_SSH_KEY
Procedure
1. In the System view of the gCTS app, go to the Con gurations tab.
2. Choose Create.
3. Enter any character string of the parameter name in the input eld to activate the autocomplete function, or select the
parameter from the dropdown list.
For a list of parameters, see Con guration Parameters for Systems.
4. Enter the correct value in the Value eld, or select it from the dropdown menu.
If there's a checkbox, select or deselect it as required.
5. Choose Save.
Results
The parameter is added as a system parameter. It's used where applicable for all subsequent actions in all repositories in the
system, if no repository parameter exists that takes precedence.
Con guration Parameters for Systems
You can set the system parameters for gCTS on the Con gurations tab in the System view.
 Note
The A2G_RUNTIME, JAVA_RUNTIME, and VCS_PATH parameters are mandatory. When you use the Enable gCTS wizard to
con gure gCTS on your system, they're set in the process.
This is custom documentation. For more information, please visit the SAP Help Portal
36
11/15/2023
Con guration Parameter
Default Value
Description
Example/More information
A2G_RUNTIME
$(SYSTEM/DIR_CT_RUN)/abap2vcs.jar
Path to the Git client
/usr/sap/<SID>/SYS/exe
(Java executable:
abap2vcs.jar) in
the "exe" directory
on the le system of
the application
server
 Note
DIR_CT_RUN
corresponds to
the SAP system
pro le
parameter
DIR_CT_RUN.
JAVA_RUNTIME
java
Path to the Java
/usr/sap/<SID>/SYS/exe
executable of the
Java runtime on the
le system of the
application server
VCS_PATH
$(SYSTEM/DIR_INSTANCE)/gcts
Working directory of
/usr/sap/<SID>/D00/gct
gCTS on the le
system of the
application server
 Note
DIR_INSTANCE
corresponds to
the SAP system
pro le
parameter
DIR_INSTANCE.
SYSTEM_RESTRICTION
Open
Parameter to
Possible values:
restrict the creation
Open (default): Users
of repositories on
depending on their aut
the ABAP system
Restricted
Only users with a gCTS
repositories.
Closed
Local repositories can'
protect the system. Th
supported by pipelines
For more information, see Auth
This is custom documentation. For more information, please visit the SAP Help Portal
37
11/15/2023
Con guration Parameter
Default Value
VCS_REGISTRY_DESTINATION
Description
Name of the HTTP
connection to the
gCTS registry server
as speci ed in
transaction SM59 of
the current ABAP
system, or by direct
URL of the gCTS
Example/More information
Example of a connectio
Example of a direct UR
https://example.
If you use the gCTS registry, th
For more information, see Con
registry server.
Related Information
Set Con guration Parameters for Systems
Use the Health Check
gCTS administration users can use the Health Check function to check whether the con guration of Git-enabled Change and
Transport System (gCTS) is complete and correct in the ABAP system.
Prerequisites
To do a Health Check run, you must have the authorization object S_GCTS_SYS with ACTVT = 70 (Administer)
assigned.
To display the results of the previous health check run, no special authorizations are required.
 Note
The results of the User Permissions checks are valid for your user, not the previous user.
Context
Different checks are run as part of the Health Check. If there are con guration tasks still open, or if the con guration contains
errors, the Health Check displays warnings or errors for the respective checks. The Health Check is offered as the last step of
the Wizard to Enable gCTS in Current System.
By default, when you open the Health Check, cached results are displayed for the user who last ran a Health Check run except
for the User Permissions check, which is run for your user. If you choose Refresh Check, the checks are run for the user account
that you used to log on to the gCTS app.
Procedure
1. In the gCTS app in the System view, choose Health Check.
The check results are displayed in a new dialog box. The top section indicates how many checks resulted in Error,
Warning, or Success. If all checks have the same status, this distinction is not made. By default, all checks are displayed.
2. Optional: To rerun the checks for your logon user, choose Refresh Check.
Use this function if you've changed the gCTS con guration in the ABAP system, and you expect that the results of the
check have changed. If you just close the Health Check and open it again, only the cached results are displayed.
3. Optional: To display only checks that have resulted in a speci c status, select a status.
This is custom documentation. For more information, please visit the SAP Help Portal
38
11/15/2023
Select All to display all checks.
4. Check the results of the checks that have the statuses Warning or Error.
To display more information about a speci c check, click anywhere in the line of the check. The details of the check help
you nd out whether the check result is relevant for your work.
For more information about the individual checks, see Health Check - Details About the Checks.
5. To close the Health Check dialog box, choose Close.
Related Information
Authorization Objects in gCTS
Health Check - Details About the Checks
The Health Check allows you to check the status of con guration settings and permissions required for Git-Enabled Change and
Transport System.
Only users with gCTS administration authorization can do a Health Check run. Other users can only display the results of a
previous Health Check run.
 Note
The User Permissions checks are run for the current logon user and display user-speci c results.
User Permissions (User-Speci c) Checks
Because users who work with gCTS require authorizations depending on the tasks they need to perform, use the Health Check
function to see which permissions have been assigned to your user.
Category
Description
Transport Management
Authorizations in the Transport Management System (TMS) are required for the following tasks:
System
To create repositories on the ABAP system using new virtual non-ABAP systems (vSIDs).
If the ABAP system is a development system and a domain controller, vSIDs can be automatically
created when users create repositories on the ABAP system. If this authorization is missing, users can
use only existing vSIDs when creating repositories on this system.
To import objects from the remote Git repository to the ABAP system.
Imports take place, for example when a repository is cloned to the ABAP system, or when commits
are pulled to the ABAP system.
For this, the following authorization objects are required:
S_CTS_ADMI with eld CTS_ADMFCT = TABL or S_CTS_SADM with eld CTS_ADMFCT = TABL, eld
DESTSYS = <SID of ABAP system>, and eld DOMAIN = <transport domain>.
S_TRANSPRT with eld TTYPE = * and eld ACTVT = Add or Create, Change, Display
S_RFC with RFC_TYPE = All values, eld RFC_NAME = STPA, and eld ACTVT = All
activities
The authorization objects are part of the delivered role SAP_BC_GCTS_ADMIN.
This is custom documentation. For more information, please visit the SAP Help Portal
39
11/15/2023
Category
Description
File Access
File access authorizations are required to read and write les in the gCTS directory. For this, the authorization
object S_DATASET with eld PROGRAM = SAPLEPSF, eld ACTVT = Read and Write and eld FILENAME
= * is required. The authorization object is part of the delivered role SAP_BC_GCTS_ADMIN.
Change and Transport
Authorizations in the Change and Transport System are required to create transport routes. For this, the
System
authorization object S_CTS_ADMI is required. The authorization object is part of the delivered role
SAP_BC_GCTS_ADMIN.
Related Information
Authorization Concept in gCTS
About the vSID
System Con guration Checks
To con gure gCTS in your ABAP system, you use the Wizard to Enable gCTS in Current System to set the paths to the Java
runtime, the gCTS Git client, and the gCTS working directory. Use the Health Check function to check whether this con guration
was done correctly.
Category
Description
Java Runtime
This check determines whether the path to the Java executable of the Java runtime is set. The path is saved
as the value of the system parameter JAVA_RUNTIME. If this check displays the status Error, use the
Con gurations tab to set the correct path.
gCTS Git Client
This check determines whether the path to the gCTS Git client is set. The Git client (abap2vcs.jar) is a
command line tool that is delivered as part of the SAP Kernel. The path is saved as the value of the system
parameter A2G_RUNTIME. If this check displays the status Error, use the Con gurations tab to set the
correct path.
gCTS Working Directory
This check determines whether the path to the gCTS working directory is set. The path is saved as the value
of the system parameter VCS_PATH. If this check displays the status Error, use the Con gurations tab to
set the correct path.
Related Information
Enable Git-Enabled Change and Transport System in an ABAP System
Con guration Parameters for Systems
Status of Repositories Check
Use the Health Check function to check the statuses of all repositories that have been created on the ABAP system.
Category
Description
Status of Repositories
If one repository has the status ERROR, the result of this check is Error.
Related Information
Repository View in gCTS App
This is custom documentation. For more information, please visit the SAP Help Portal
40
11/15/2023
TMS Con guration Check
To create repositories on your ABAP systems, gCTS needs to know whether the ABAP system is con gured as a domain
controller in Transport Management System (TMS). Use the Health Check function to check this.
Category
Description
Domain Controller
This check determines whether the system is a domain controller. If the system is a domain controller, the
result of the check is Success. If the system is no domain controller, the result of the check is Warning. In this
case, validate that a vSID exists for each local repository on the ABAP system. If the system is a domain
controller, gCTS automatically creates the vSID, if necessary, when the repository is created on the ABAP
system.
Related Information
Con guring the Transport Domain Controller
About the vSID
SAP Kernel Checks
gCTS requires minimum versions of SAP Kernel components. Use the Health Check function to check whether the required
versions are available for the ABAP system.
Category
Description
Git Client Available
This check determines whether the Git client is available. The Git client (abap2vcs.jar) is a command line
tool that is delivered as part of the SAP Kernel. If this check displays the status Error, it's possible that the
path to the Git client isn't set correctly. See also the result of the gCTS Git Client check under System
Con guration.
For more information, see System Con guration Checks.
Git Client Executable
This check determines whether the Git client can be run. The Git client (abap2vcs.jar) is run on the
operating system and it needs a working Java environment. If this check displays the status Error, the Java
call doesn't work correctly. Possible reasons are:
Insufficient permissions of the <sid>adm user in the Java runtime or in the Git client.
Incorrect con guration of the Java runtime.
See also the result of the Java Runtime check under System Con guration.
For more information, see System Con guration Checks.
Git Client File Access
This check determines whether the Git client has read and write access to les in the gCTS working directory.
The gCTS directory is saved as the value of the system parameter VCS_PATH. If this check displays the
status Error, this indicates insufficient permissions of the <sid>adm user in the gCTS working directory or
insufficient permissions of the logon user. See also the result of the File Access check under User
Permissions.
For more information, see User Permissions (User-Speci c) Checks.
Java Environment
This check determines whether the Java environment is available. To run the Git client, a minimum version of
Available
a Java runtime is required, which isn’t automatically installed with the standard SAP Kernel. You must install it
manually. If the result of this check is Error, install a supported Java version.
For more information, see Prerequisites for Git-Enabled Change and Transport System.
This is custom documentation. For more information, please visit the SAP Help Portal
41
11/15/2023
Git-Enabled CTS Check
To con gure gCTS in your ABAP system, you use theWizard to Enable gCTS in Current System to schedule an observer job for
the observer program that is required for gCTS. Use the Health Check function to check whether this job was scheduled.
Category
Description
gCTS Observer Job
The gCTS observer program SCTS_ABAP_VCS_IMPORT_OBSERVER requires the job
SCTS_ABAP_VCS_IMPORT_OBSERVER to be scheduled for the program to run. The scheduled job regularly
checks for objects that need to be transferred to the Git server, and then transfers new and changed objects.
If the result of this check is Error, use the Enable gCTS wizard to schedule the job. It's done when you choose
Initialize System.
Related Information
Enable Git-Enabled Change and Transport System in an ABAP System
Connectivity Checks
Based on the repositories created on the ABAP system, gCTS runs a basic connection check of the ABAP server and the Git
client (Java) to the corresponding Git servers.
The result of the check is either Success or Warning. If the result is Warning, ask your system administration to check the
connection to the Git server.
Category
Description
ABAP Client
This check determines whether the ABAP server can connect to the server <Git server>.
Connection <Git
server>
Git Client <Git server>
This check determines whether the Git client can connect to the server <Git server>.
Web Services Checks
Use the Health Check function to check if the gCTS Web services are active in the ABAP system.
Category
Description
gCTS REST Service
The gCTS REST service cts_abapvcs must be active in the ABAP system. If the result of this check is
Error, activate the REST service in SAP GUI in transaction SICF.
gCTS OData Service
The gCTS OData service SCTS_GCTS_SRV must be active in the ABAP system. If the result of this check is
Error, activate the OData service in SAP GUI in transaction /IWFND/MAINT_SERVICE.
gCTS SAP Fiori Service
The SAP Fiori service bc_cts_git must be active in the ABAP system. If the result of this check is Error,
activate the SAP Fiori service in SAP GUI in transaction SICF.
Set User-Speci c Authentication
This is custom documentation. For more information, please visit the SAP Help Portal
42
11/15/2023
Specify authentication of your ABAP user to the Git servers where your repositories are hosted, and, if necessary, to the gCTS
registry server.
Prerequisites
For token authentication to Git servers: You have a valid personal access token for your Git server user with sufficient
authorizations.
For more information about how to do this in GitHub and the scopes required for gCTS, see Creating personal access
tokens in GitHub.
For authentication of your ABAP user to the gCTS registry server: You have a user in the central gCTS registry server, if
the current ABAP system isn't the registry server.
Context
Authentication to Remote Repositories
Authentication is required to the following remote repositories:
Remote repositories of development systems
Required for write operations in remote repositories, such as push commits to remote repositories.
Private remote repositories of all ABAP systems
You’re logged on to the gCTS app with your ABAP user. In the gCTS app, you set authentication details of your Git server user to
the Git server where the repositories are hosted in which you work. The authentication details are stored in the gCTS credential
store.
To do this, in the gCTS app, you specify the API endpoint of the Git server where the remote repository is hosted, and you select
an endpoint type. For authentication, you either provide a personal access token, or user and password authentication to the
Git server. If you work in multiple repositories hosted on the same Git server, only provide the details once on the ABAP system.
 Note
If you set user-speci c authentication, you don’t need to set authentication for individual repositories. If both user-speci c
and repository-speci c authentication are de ned, gCTS uses the user-speci c authentication.
Authentication to the gCTS Registry Server
In the following situations, authentication of your ABAP user is required for communication with the gCTS registry server:
As a system administrator, you con gure the gCTS registry in your ABAP system using a direct URL.
The gCTS registry has been con gured in your ABAP system using a direct URL, and you want to use it for your
repositories.
In this case, specify the endpoint of the gCTS Rest API of the central gCTS registry server as the API endpoint, and select the
Registry endpoint type.
For more information, see Con gure the gCTS Registry.
Procedure
1. In the gCTS app, in the System view, choose
(Manage settings of current user).
This is custom documentation. For more information, please visit the SAP Help Portal
43
11/15/2023
The Credential Store of ABAP User dialog opens.
2. To add an entry, choose Create Credentials.
3. Enter the URL to the API endpoint of the Git server where your remote repository is hosted.
For example, the API endpoint of Bitbucket is https://api.bitbucket.org/2.0/.
For repositories hosted on GitHub, or GitLab, it's sufficient to enter the URL to the Git server as the API endpoint, for
example, https://github.com. Make sure you select the relevant Endpoint Type in the next step.
For more information about supported API endpoints, see 2821718
in the Constraints Depending on Your Git Server
section.
For authentication of your ABAP user to the gCTS registry server, copy the URL that was de ned as the value of the
VCS_REGISTRY_DESTINATION system parameter in the System view on the Con gurations tab.
4. Select an Endpoint Type.
You have the following options:
Endpoint Type
Description
GitHub
To set the credentials of your GitHub user to the GitHub server, both public GitHub and any enterprise
instance of GitHub, select this option.
GitLab
To set the credentials of your GitLab user to the GitLab server, both public GitLab and any enterprise
instance of GitLab, select this option.
Registry
To set the credentials of your ABAP user to the gCTS registry server, select this option.
 Note
Use Basic authentication with this endpoint type.
Unknown
Select this option to set credentials to other Git servers, if necessary.
5. Select an authentication type.
You have the following options:
Authentication Type
Description
Token
Enter the personal access token of your Git server user.
Basic
Enter the user name and password that you use to log on to the speci ed API endpoint.
For authentication to Git servers, these are the user name and password of your Git server user.
For authentication to the gCTS registry server, these are your ABAP user name and password in
the gCTS registry server.
 Note
It depends on the Git server whether both options Token and Basic work correctly. For example, Basic authentication
has been deprecated by public GitHub.
6. Choose Save.
The authentication details are stored for this API endpoint. They’re added to the credential store of your ABAP user. You
see the new entry in the list.
7. Optional: Click anywhere in the row to display the details, or edit the entry.
This is custom documentation. For more information, please visit the SAP Help Portal
44
11/15/2023
For the endpoint types GitHub, GitLab, and Registry, the detail view also displays, if the credentials are valid.
For other Git servers, gCTS can't validate the credentials. However, if you've entered the correct API endpoint and
the correct credentials, authentication can still work. For known information about individual Git servers, see the
central gCTS SAP Note 2821718
, under Constraints Depending on Your Git Server.
a. Optional: To save a changed entry, choose Save.
b. Optional: To close the dialog without saving, choose Close.
8. Optional: To delete an entry, select the radio button of the relevant entry, and choose Delete.
Results
The credentials of your user are stored on the ABAP system for all speci ed API endpoints. They're used to authenticate your
user to all remote repositories that you work with and that are hosted on the Git servers for which you speci ed API endpoints.
If you've speci ed credentials to the gCTS registry server, they're used for the communication with the registry server.
Related Information
Repository-Speci c Authentication Options
De ne ABAP Packages as Managed by Git-Enabled Change and
Transport System
By assigning the transport layer available for gCTS to an ABAP package, you de ne that all objects developed in this package
are managed by gCTS.
At the start of a development project, packages are created for the ABAP development objects that will be created as part of
the project. When you create the package, you assign it to a transport layer. All ABAP development objects that you later create
in this package belong to the transport layer of this package and are transported along the transport routes that are set up for
this layer.
Before you use gCTS, you de ne which objects or packages you want to manage using gCTS. Decide whether you want to use
gCTS only for new development projects, or whether you also want to switch existing developments to gCTS. It’s important that
you assign the ABAP packages that you use with gCTS to transport layers that are different from the transport layers used for
classic CTS.
Use gCTS for New Development Projects
When you create new ABAP packages in your ABAP development system that you want to manage using gCTS, assign these
packages to the transport layer that was created in the following situations:
If the ABAP system is the transport domain controller: The transport layer is created when the repository is created on
the ABAP system. It’s generated from the value that was entered as vSID of the repository (Z+<vSID>).
If the ABAP system isn’t the domain controller: The transport layer is created as part of the Prepare ABAP Systems for
Repositories step.
Use gCTS for Existing Development Projects
To use gCTS for an existing ABAP package, proceed as described under How to Onboard Existing Developments to gCTS.
Con gure the gCTS Registry
This is custom documentation. For more information, please visit the SAP Help Portal
45
11/15/2023
To con gure the gCTS registry, you declare one of your ABAP systems as the gCTS registry server, and then connect the
relevant ABAP development systems with the gCTS registry server by setting a gCTS system parameter.
Prerequisites
In the ABAP system where you want to register objects with the gCTS registry, the required Business Add-In (BAdI) is
implemented as described under Integrate the gCTS Registry with the Transport Organizer. This is usually the
development system.
You've decided which ABAP system you want to use as the gCTS registry server.
You can use any SAP S/4HANA 2020 FPS 01 system or higher with the following characteristics:
The system has a high availability and high security precautions. For example, use a production system.
You've implemented all SAP Notes required for the version of the ABAP system that you want to use as the gCTS
registry server. For more information, see the gCTS registry SAP Note 3046346
.
If gCTS is not con gured in this system, the ICF service /sap/bc/cts_abapvcs is active in the system, and the
HTTPS port is open.
 Note
We recommend that you use HTTPS. However, it's possible to use HTTP.
The system doesn't need to be periodically reset.
You've decided whether you want to use a direct URL or an SM59 connection for the communication of the ABAP
development systems with the gCTS registry server.
You have the following options to specify the value of the gCTS system parameter VCS_REGISTRY_DESTINATION that
is used for communication with the gCTS registry server:
URL to the gCTS registry server
The URL must have the following format: <host of gCTS registry server>:
<port>/sap/bc/cts_abapvcs/registry/server.
If you use this option, the user who runs an action related to the gCTS registry is used for the communication with
the gCTS registry server. For example, the actions can be registering or unregistering a repository, a branch, or an
object. This way, every action related to the gCTS registry is logged for the user who ran it.
This option requires that all users who use the gCTS registry maintain their credentials to the endpoint of the
gCTS registry server. For this, they also need to have a user in the ABAP system that serves as the gCTS registry
server. For more information, see Set User-Speci c Authentication.
Name of an HTTP connection created in transaction SM59
The HTTP connection must have been created in transaction SM59 speci cally for communication with the gCTS
registry server.
For the user that is to be used for the HTTP connection, we recommend that you create a technical user in User
Maintenance (transaction SU01) of User Type : Service. The technical user must exist on the ABAP system that
serves as the gCTS registry server. However, the user doesn't have to exist on the other systems where you want
to use the gCTS registry.
If you use this option, the user speci ed in the SM59 connection is used for communication with the gCTS registry
server. This way, every action related to the gCTS registry is logged for the user speci ed in the SM59 connection.
The user that's used for the gCTS registry communication has the following authorizations assigned:
This is custom documentation. For more information, please visit the SAP Help Portal
46
11/15/2023
Authorization object S_CTS_ADMI with eld CTS_ADMFCT = EPS1.
Authorization object S_DATASET with eld ACTVT = 33 and 34, and eld PROGRAM = SAPLEPSF
For more information about assigning authorizations, see Managing Roles.
Context
To con gure the gCTS registry, connect the ABAP development systems that use the gCTS registry by setting the gCTS system
parameter VCS_REGISTRY_DESTINATION.
Do the con guration steps in all ABAP development systems in which you want to register objects.
Con gure the gCTS Registry Using a Direct URL
Procedure
1. In the gCTS app, in the System view, go to the Con gurations tab.
2. Add the con guration parameter VCS_REGISTRY_DESTINATION.
3. For the value of the con guration parameter, enter the URL in the following format:
<host of gCTS registry server>:<port>/sap/bc/cts_abapvcs/registry/server
4. Create credentials for your ABAP user to the gCTS registry server.
a. In the gCTS app, in the System view, choose
(Manage settings of current user).
b. Choose Create Credentials.
c. Enter the following information:
Field
More Information
API Endpoint
Enter the endpoint of the registry server in the following format:
<host of gCTS registry server>:
<port>/sap/bc/cts_abapvcs/registry/server
Endpoint Type
Select Registry.
Type
Select Basic.
User
Enter your ABAP user name on the gCTS registry server.
Password
Enter the password of your ABAP user on the gCTS registry server.
 Note
Inform all users who will work with the gCTS registry in this system that they must store their credentials to
the gCTS registry server as described in this step.
Con gure the gCTS Registry Using an SM59 Connection
Procedure
1. Create an HTTP connection to the gCTS registry server.
This is custom documentation. For more information, please visit the SAP Help Portal
47
11/15/2023
a. In transaction SM59, create an RFC connection of type HTTP connection to External Server. You can enter any
name for the connection, for example REGISTRY.
b. Enter the following values:
On the Technical Settings tab:
Field
Value
Host
Host of the application server of the ABAP system that serves as the gCTS registry server.
Port
Port of the gCTS REST service (cts_abapvcs) that was activated in the ABAP system
when gCTS was implemented. For more information, see App Implementation: Git-Enabled
Change and Transport System. To nd out the correct port, start transaction SICF, enter
cts_abapvcs as the Service Name, and choose Execute. On the next screen, from the
menu choose
Path Pre x
Goto
Port Information
.
Path to the gCTS REST service (cts_abapvcs):
/sap/bc/cts_abapvcs/registry/server
On the Logon & Security tab:
Field
Value
In the Logon with User
Choose Basic Authentication.
section:
Enter the name and the password of the user that you want to use for the registry
communication. For example, use the technical user mentioned in the Prerequisites
section.
If you've used the HTTPS
Choose Active for SSL to activate the SSL protocol for the connection.
port of the gCTS Rest
service, in the Security
Options section:
c. Save the HTTP connection, and run a connection test to make sure that the Status HTTP Response is 200.
 Note
Create the HTTP connection on all ABAP systems where the gCTS registry is used. These are usually all
development systems. If you use a development system as the gCTS registry server, perform the con guration
steps there too. Create an HTTP connection that points to the server itself.
2. In the gCTS app, in the System view, go to the Con gurations tab. Add the con guration parameter
VCS_REGISTRY_DESTINATION, and enter the name of the HTTP connection that you created in the previous step as
the value of this parameter, for example REGISTRY.
For more information, see Set Con guration Parameters for Systems.
Results
After you've done the con guration steps, the following tabs are visible in the gCTS app:
Registry tab in the System view
For more information, see Use the Registry Tab.
Registry tab in the Repository view
For more information, see Use the Registry Tab of a Repository.
This is custom documentation. For more information, please visit the SAP Help Portal
48
11/15/2023
If the HTTP connection isn't available, or if it doesn't work correctly, the Registry tab displays an error message No RFC
connection to registry found. This error is usually caused by communication issues, such as incorrect or missing credentials, an
incorrect URL, and so on.
Related Information
gCTS Registry
Integrate the gCTS Registry with the Transport Organizer
By integrating the gCTS registry with the Transport Organizer (transactions SE01/SE09), you enable the option to assign
objects in transport requests to speci c Git repositories.
To integrate the gCTS registry with the Transport Organizer, you must implement the Business Add-In (BAdI)
CTS_REQUEST_CHECK in all systems where you want to use the registry.
A sample implementation of this BAdI is provided on the SAP-samples space on GitHub at https://github.com/SAPsamples/s4hana-gcts-badi
. To do this, you clone the sample repository to your ABAP system, set the required parameters,
and then activate the BAdI implementation as described in the blog post Integrating gCTS with Transport Organizer processes
that is linked in SAP Note 3046346
.
 Caution
The coding of the sample implementation is provided without any warranty and isn't part of SAP standard support.
If you don´t use the sample implementation, implement the BAdI using the gCTS facade methods mentioned in the following
sample process. All facade methods are assigned to the package SCTS_ABAP_AND_VCS_API_FACADE.
A sample process of integrating the gCTS registry with Transport Organizer could look like this:
1. A transport request is created by a user, or by another external tool, such as Change Request Management of SAP
Solution Manager.
2. Objects are assigned to the transport request, for example using the Customizing transaction (SPRO).
3. A task of the transport request is released by a user.
4. The BAdI CTS_REQUEST_CHECK is triggered with the method CHECK_BEFORE_RELEASE.
5. The object list is analyzed and is checked with the gCTS registry.
(For this, the facade method SEARCH_OBJECTS of the class CL_CTS_ABAP_VCS_REGISTRY_FAC has been
implemented).
6. New, changed, or deleted objects are found and are committed to the relevant local repository.
(For this, the facade method COMMIT_REPOSITORY of the class CL_CTS_ABAP_VCS_REPO_FACADE has been
implemented.)
7. After a successful commit, the changes are pushed to the remote repository.
(For this, the facade method PUSH_REPOSITORY of the class CL_CTS_ABAP_VCS_REPO_FACADE has been
implemented.)
8. The BAdI run is completed.
This is custom documentation. For more information, please visit the SAP Help Portal
49
11/15/2023
Con guring Git Repositories
By con guring a Git repository on your ABAP system, you create a connection between your ABAP system and the remote Git
repository on the Git server.
This allows you to perform tasks, such as the following:
Store your development objects in your remote repository on the Git server and read them from there.
Push your developments to remote repositories and see the push action as a commit.
Work with branches.
Resolve con icts.
Con guration steps are necessary for every new Git repository that you work with. The following image map gives an overview
of the steps involved:
Please note that image maps are not interactive in PDF output.
Prepare ABAP Systems for Repositories
Do this step only if you want to start using Git-enabled Change and Transport System (gCTS) on a system that isn’t a
transport domain controller, and if the domain controller system isn't part of the gCTS landscape.
Create Git Repositories on an ABAP System
By creating a Git repository on an ABAP system, you make the repository known in the ABAP system and create
metadata for it.
Repository-Speci c Authentication Options
For the communication between ABAP development systems and remote Git repositories on the Git server, you must
provide authentication details. Private repositories on your Git server also require authentication.
Clone the Remote Git Repository to the ABAP System
By cloning the remote Git repository to the ABAP system, you import the content of the remote repository to your ABAP
system.
This is custom documentation. For more information, please visit the SAP Help Portal
50
11/15/2023
Prepare ABAP Systems for Repositories
Do this step only if you want to start using Git-enabled Change and Transport System (gCTS) on a system that isn’t a transport
domain controller, and if the domain controller system isn't part of the gCTS landscape.
Prerequisites
You want to start using gCTS on a system that isn’t your domain controller.
The domain controller of the system where you want to use gCTS isn't part of your gCTS landscape. That means, you don
´t want to use gCTS (create repositories) on the domain controller.
Context
gCTS requires at least one virtual non-ABAP system (vSID) on each ABAP system where you use gCTS. If the ABAP system isn’t
a domain controller, you have the following options to get this vSID:
If the domain controller is part of your gCTS landscape, the vSID is created automatically when a repository is created on
the domain controller system. To get the vSID also on systems that aren´t domain controllers, create a repository on the
domain controller system. As a result, the vSID is also available on the other systems of the transport domain.
For more information, see Con guring Git Repositories.
 Recommendation
We recommend that you use this option, if possible, for your scenario.
If your domain controller isn't part of your gCTS landscape, prepare your ABAP systems for usage with gCTS by manually
creating the non-ABAP system, a transport layer, and a transport route to the non-ABAP system.
The procedure is described in the following steps.
 Note
This procedure is required, for example, if you use gCTS integrated with Change Request Management of SAP
Solution Manager.
Procedure
1. Go to the transport domain controller of the system in which you want to use gCTS, and start transaction STMS.
2. Choose System Overview, and create a non-ABAP system.
To do this, choose
SAP System
Create
Non-ABAP System . Enter the following details:
Field
Description
System
Enter a three-character system ID (SID) for the non-ABAP system, which doesn’t yet exist in the TMS
con guration.
 Note
You’ll need to enter this SID as the value for vSID (virtual SID) when you register a repository on the
ABAP system.
For more information, see Create Git Repositories on an ABAP System.
Description
Enter a description.
This is custom documentation. For more information, please visit the SAP Help Portal
51
11/15/2023
Field
Description
Communication
System
Name
This value isn't relevant for gCTS.
By default, you can leave this entry unchanged. However, if your transport domain controller is lower
than ABAP Platform 1809 (SAP_BASIS 7.53), select a communication system that is at least on that
version. Otherwise, objects can’t be pushed to the Git server.
3. In the TMS Con guration for this non-ABAP system that you created, on the Transport Tool tab, set the parameter
NON_ABAP_SYSTEM to the value VCS.
By setting this parameter, you classify the system as a non-ABAP system of type VCS (version control system).
4. Create a transport layer.
 Note
If you use gCTS only for Customizing projects using the gCTS registry, you can skip this step because the request
types used for Customizing data don’t require a transport layer.
To create a transport layer, proceed as follows:
a. In transaction STMS, choose Transport Routes.
b. In the Transport Routes Editor, go to change mode and choose
Edit
Transport Layer
Create .
c. Enter a four-character transport layer ID, and a short description.
For the transport layer, you can use any four-character ID starting with Z. We recommend that you use the
following naming convention:
Z<SID of the non-ABAP system>.
All packages that you want to manage using Git must later be assigned to gCTS-speci c transport layers. We
recommend that you use a separate transport layer for each development repository.
For more information, see De ne ABAP Packages as Managed by Git-Enabled Change and Transport System.
5. Create a transport route using the transport layer whose target system is the non-ABAP system of type VCS.
 Note
If you use gCTS only for Customizing projects that use the gCTS registry, you can skip this step.
To do this, proceed as follows:
a. In change mode in the Transport Routes Editor, choose
Edit
Transport Route
Create .
b. Create a consolidation route, and select the following data from the input help:
Field
Description
Integration system
ABAP system that you want to use with gCTS.
Transport layer
Transport layer that you created before.
Consolidation system
Non-ABAP system that you created before (non-ABAP system of type
VCS).
6. Distribute the changes to the transport domain con guration so that you can use the virtual non-ABAP system as a vSID
on ABAP systems that aren´t domain controllers.
For more information, see Distributing the Transport Domain Con guration.
This is custom documentation. For more information, please visit the SAP Help Portal
52
11/15/2023
Related Information
Transport Layers and Transport Routes
Create Git Repositories on an ABAP System
By creating a Git repository on an ABAP system, you make the repository known in the ABAP system and create metadata for it.
Prerequisites
You have a remote Git repository on a Git server that you want to create on your ABAP system. For more information,
see Prerequisites: Git Server.
If your ABAP system isn't the transport domain controller: You've created a non-ABAP system. For more information, see
Prepare ABAP Systems for Repositories.
Procedure
1. In the System view of the gCTS app, choose the Repositories tab.
2. Choose Create.
3. In the Create Repository dialog box, enter the following details:
Field
Description
URL
URL to the remote Git repository on a Git server
For more information about the prerequisites for Git repositories, see Prerequisites: Git Server.
 Note
If you use a repository on GitHub, and you use the Copy function on the Clone dialog, make
sure that you remove the .git from the URL.
Don't use special or escape characters in the URL, for example %20.
Description
Description of the repository
By default, the description is derived from the URL that you entered previously. You can change it.
vSID
Three-character system ID of a virtual non-ABAP system required for gCTS
Example of vSID: DEV
If the ABAP system is the transport domain controller: Enter a three-character SID for the nonABAP system that is unique in your transport landscape.
The system automatically creates the non-ABAP system and a transport layer.
If the ABAP system isn't the transport domain controller, as value of vSID, enter the SID of the
non-ABAP system that you created as part of the Prepare ABAP Systems for Repositories step.
For more information, see About the vSID.
This is custom documentation. For more information, please visit the SAP Help Portal
53
11/15/2023
Field
Description
Role
Role of the repository
Possible values: Development | Provided
Development is the default value.
For repositories on source (development) systems, use Development. These are repositories into which
you want to transfer ABAP development objects (push commits). You can also pull commits to
repositories of type Development.
For repositories on target systems, use Provided. These are repositories where you want to retrieve
ABAP objects from (pull commits). You can't push commits to repositories of type Provided.
Type
Type of the repository
Possible values: Git | GitHub | GitLab.
GitHub is the default value.
For repositories of type GitHub, gCTS uses the GitHub API, which allows access to advanced functions.
Use this type if you use GitHub as the Git server. This is also valid if your company uses its own GitHub
Enterprise server.
For repositories of type GitLab or Git, some functions aren't available. For more information about any
restrictions, see the central gCTS SAP Note 2821718
Visibility
.
Speci es the visibility of the repository on the ABAP system
Possible values: Public | Private
Public is the default value and makes the repository visible to everyone.
You can restrict the visibility of the repository to your user only. To do this, set the repository to Private.
 Note
Users with one of the following authorizations nevertheless see Private repositories:
SAP_ALL authorizations
Authorizations of S_GCTS_SYS with eld ACTVT = Administer.
Any collaboration permission for the repository.
4. Choose Save.
Results
You've created the Git repository on your ABAP system. The repository has the status CREATED. The metadata of the
repository is created in the database of the ABAP system.
The system opens the Repository view of the new repository.
On the Con guration tab, the parameters CLIENT_VCS_URI and CLIENT_VCS_CONNTYPE are provided from the URL
that you entered in the Create Repository dialog box.
 Note
If you edit the value of the CLIENT_VCS_CONNTYPE parameter, check whether you must also edit the value of the
CLIENT_VCS_URI in the repository con guration. In addition, if you edit the CLIENT_VCS_URI parameter, the URL
of the repository isn't automatically changed. If necessary , also edit the repository URL.
The user who has created the repository is displayed as the owner of the repository and the creation date and time are
displayed in the header.
This is custom documentation. For more information, please visit the SAP Help Portal
54
11/15/2023
If necessary, you can edit the header data of the repository by choosing Edit in the header section. For more information,
see Edit Header Data of Local Repositories.
To clone the repository to the ABAP system, it's important that the basic values are correctly set.
Next Steps
1. If you haven't set authentication of your user, do this. For more information, see Set User-Speci c Authentication.
2. Clone the repository. For more information, see Clone the Remote Git Repository to the ABAP System.
Repository-Speci c Authentication Options
For the communication between ABAP development systems and remote Git repositories on the Git server, you must provide
authentication details. Private repositories on your Git server also require authentication.
The following authentication options are available in gCTS:
User-Speci c Authentication
The authentication details of a user executing an action are used for the communication between the ABAP system and remote
Git repositories. The gCTS credentials store is available in the System view of the gCTS app. It allows you to store the
authentication details of your ABAP user to all Git servers where repositories are hosted in which you work.
 Recommendation
We recommend that you use this option.
If you choose this option, you don’t have to set any repository-speci c authentication. For more information, see Set UserSpeci c Authentication.
Repository-Speci c Authentication
The authentication details of one user are used for the communication between the ABAP system and a Git repository on the
ABAP system. gCTS uses the authentication details of this user for all other users that execute actions in the repository.
If you choose this option, you must set the authentication details using a gCTS repository parameter separately in each
repository created on the ABAP system.
For more information, see Set Repository-Speci c Authentication.
Set Repository-Speci c Authentication
To set repository-speci c authentication, you set the authentication details of a speci c user using a repository con guration
parameter.
 Note
Use repository-speci c authentication in exceptional cases only, for example, if you encounter issues with User-Speci c
Authentication.
We recommend that you use a technical user on your Git server for repository-speci c authentication. The user must ful ll the
following prerequisites:
This is custom documentation. For more information, please visit the SAP Help Portal
55
11/15/2023
The user exists on the Git server that hosts the remote Git repository for which you want to set authentication.
The user has access to the Git repository. For example, the user is a collaborator in the Git repository.
For more information about how to do this in GitHub and the scopes required for gCTS, see Creating personal access
tokens in GitHub.
Only the technical user is used for authenticating to the Git server. Other users that work in the same repository don´t need
access to the remote repository.
To do this, proceed as follows:
1. In the gCTS app, in the Repository view, go to the Con guration tab.
2. You have the following options for authentication of the technical user:
For HTTPS connections (using the SSL protocol):
Token-based communication using a personal access tokenIf you use token-based communication
(required by most Git servers): The user has a valid personal access token with sufficient scopes
assigned.
Enter the personal access token of the technical user as the value of the con guration parameter
CLIENT_VCS_AUTH_TOKEN. For more information, see Con guration Parameters for Repositories.
User/password authentication
Enter the user name of the technical user as the value of the con guration parameter
CLIENT_VCS_AUTH_USER, and the password as the value of the con guration parameter
CLIENT_VCS_AUTH_PWD.
 Note
These authentication options are also available for HTTP connections. However, we recommend that you use
HTTPS.
For SSH connections:
By default, all connections in gCTS are created using the SSL protocol. If you want to use the SSH protocol, you
change the CLIENT_VCS_CONNTYPE parameter to the value ssh. To authenticate to the remote repository
using SSH, you use an SSH private key.
Enter an SSH private key as value of the con guration parameter CLIENT_VCS_SSH_KEY. For more information,
see Con guration Parameters for Repositories.
Results
The authentication details of the technical user are stored for the repository. They´re used for authentication to the remote
repository for all actions of all users that contribute to the repository.
If a user releases a change request, the following is logged:
On the Commits tab in the gCTS app:
If you use token-based communication (required by most Git servers): The user has a valid personal access token
with sufficient scopesThe ABAP user that released the change request is the Author of the commit.
For repositories on GitHub: If an email address is maintained for this user in the ABAP system, the email address
is the Author´s Email Address.
This is custom documentation. For more information, please visit the SAP Help Portal
56
11/15/2023
In the repository on the Git server: The ABAP user is displayed as the user that issued the commit. If an email address is
maintained, and the ABAP user has a user on the Git server that uses the same email address, the matching Git server
user is displayed as the user of the commit.
On the Log tab in the gCTS app: The user that has scheduled the gCTS observer job is logged as the user of the PUSH
action.
 Note
If you've set multiple con guration parameters for authentication, the following rules apply:
If the CLIENT_VCS_CONNTYPE parameter is set to ssh, the SSH key entered in the CLIENT_VCS_SSH_KEY
parameter is used for authentication.
If the CLIENT_VCS_CONNTYPE parameter is set to ssl, one of the following entities is used for authentication: the
token speci ed in the CLIENT_VCS_AUTH_TOKEN parameter, or the user speci ed in the CLIENT_VCS_AUTH_USER
parameter with the password speci ed in the CLIENT_VCS_AUTH_PWD parameter. If you’ve con gured all
con guration parameters by accident, the token is used.
If a repository-speci c authentication option is speci ed, and you've entered credentials for your user, the userspeci c credentials are used.
 Caution
It isn't allowed to set any authentication-related repository parameters as system parameters.
Examples of Repository-Speci c Authentication Settings
 Example
Authentication Settings with Personal Access Token
Con guration Parameter
Value
CLIENT_VCS_URI
https://github.com/gcts/repo_name
CLIENT_VCS_CONNTYPE
ssl
CLIENT_VCS_AUTH_TOKEN
b36902c0904fa13aad1a3b7dabc697661dd87xyz
 Example
Authentication Settings with User/Password
Con guration Parameter
Value
CLIENT_VCS_URI
https://github.com/gcts/repo_name
CLIENT_VCS_CONNTYPE
ssl
CLIENT_VCS_AUTH_USER
communication.user@example.com
CLIENT_VCS_AUTH_PWD
<Password of communication.user@example.com>
This is custom documentation. For more information, please visit the SAP Help Portal
57
11/15/2023
 Example
Authentication Settings with SSH Key
Con guration Parameter
Value
CLIENT_VCS_URI
git@github.com:user/repo_name.git
CLIENT_VCS_CONNTYPE
ssh
CLIENT_VCS_SSH_KEY
----BEGIN RSA PRIVATE KEY–---\nM..kjk\n----END RSA PRIVATE KEY
Related Information
Set User-Speci c Authentication
Clone the Remote Git Repository to the ABAP System
By cloning the remote Git repository to the ABAP system, you import the content of the remote repository to your ABAP
system.
Prerequisites
You’ve created a remote Git repository on your ABAP system and set up authentication as required.
Procedure
1. In the Repository view in the gCTS app, choose Clone Repository.
You can choose to run this function as a background job. To do this, select the dropdown arrow ( ) next to Clone
Repository and choose Clone in Background. For more information, see Schedule Background Jobs for gCTS Activities.
2. Con rm the subsequent dialog box.
The repository is cloned from the remote repository using the URL that you speci ed when you created the repository on
the ABAP system.
The cloning process does the following :
a. It copies the le structure of the remote repository to the le system on the application server of the ABAP
system (local repository).
b. By default, it exports the objects of the current commit from the local repository and imports them into the ABAP
database.
 Note
You can suppress the import by setting the VCS_NO_IMPORT repository parameter.
Note that, depending on the size of the repository, this process can take some time.
3. If the cloning is successful, the system displays a success message.
Results
The status of the repository changes from CREATED to READY.
This is custom documentation. For more information, please visit the SAP Help Portal
58
11/15/2023
On the Commits tab, the commits of the default branch in the remote repository are displayed. The current commit of
the local repository is updated to the latest commit of the default branch in the remote repository. This is indicated by
displaying it in bold characters.
A new directory with the repository name is created in the gcts working directory on the le system of the application
server. You can use transaction AL11 to check this. For the path to the gCTS working directory, check the value of the
VCS_PATH system con guration parameter.
You can check the result of a cloning process in the following places:
On the Log tab:
See the logs for the CLONE process.
On the Activities tab:
If objects were imported by the Clone activity, you can nd a log of the transport request that was created for the
import.
 Note
If the import generates a return code that is equal to or greater than 8, by default, gCTS returns an error message.
Nevertheless, the local repository is set to the latest commit of the cloned repository. This is required, because gCTS can't
determine the last successful commit during a cloning action. Carefully analyze the import errors.
To suppress the error message, you can set the VCS_IMPORT_ERROR_LEVEL con guration parameter to 9.
Related Information
Con guration Parameters for Repositories
Repository View in gCTS App
How to Onboard Existing Developments to gCTS
You can move your existing development projects from the classical CTS to gCTS.
Context
In general, you can move your existing development projects based on ABAP packages step by step to gCTS. The following is a
high-level overview of the steps that you must perform to onboard existing ABAP packages to gCTS.
Procedure
1. In your development system, complete your work on the ABAP packages that you want to use with gCTS. Make sure that
all developers who are contributing to the package also pause their work on the packages, until onboarding to gCTS is
completed.
2. Release all existing transport requests with objects of the packages, and transport them through your system landscape
using the classic CTS.
3. If not yet done, con gure gCTS on the development system:
a. Enable gCTS.
For more information, see Enable Git-Enabled Change and Transport System in an ABAP System.
b. Set authentication of your user to the Git server that will host the Git repository with the content of the ABAP
packages.
This is custom documentation. For more information, please visit the SAP Help Portal
59
11/15/2023
For more information, see Set User-Speci c Authentication.
c. If you want to use the gCTS registry for assigning objects that are part of the ABAP packages, con gure it.
For more information, see Con gure the gCTS Registry.
4. Decide which Git repository you want to use for the ABAP packages. You can use an existing Git repository, or create a
new one. You can combine multiple ABAP packages in one repository, or use separate repositories.
For more information, see Con guring Git Repositories.
5. If you want to use the gCTS registry, register the packages in the gCTS registry.
For more information, see gCTS Registry.
6. If you use gCTS without the gCTS registry, switch the transport layer of the package to the transport layer of the vSID.
For more information about vSIDs, see About the vSID.
For more information about transport layers in the classic CTS, see Assignment of Development Projects to Transport
Layers.
7. Before you can start using gCTS, manually push the entire package.
For more information, see Manually Push Objects.
 Note
This step is important, because it ensures that your Git repository contains complete objects before changes to these
objects (partial objects) are committed. gCTS supports partial objects. However, as a prerequisite, the complete
object must have been committed at least once.
Keep in mind that commits contain versions of objects. They aren't delta transports, even though transport requests
are used to record object changes. Importing a commit in a target system is a pull operation, which imports the delta
between the commit that is currently active in the target system and the commit that is being pulled.
For more information, see Pull Commits.
8. Continue your development in the ABAP packages. Inform other developers working on the package that they can
resume their work in the packages.
Result
You've onboarded existing packages to gCTS. As of now, your changed objects of released transports will be committed and
pushed to the respective Git repository.
For more information, see gCTS: Process Overview.
About Using gCTS for Customizing Data
You can use gCTS to manage your Customizing data using Git repositories.
Con guration
In general, to use gCTS for Customizing data, no speci c con guration steps are required.
However, we recommend that you use the gCTS registry for Customizing data. Con guration steps are required to use the gCTS
registry, including implementing a Business Add-In (BAdI). For more information, see gCTS Registry.
This is custom documentation. For more information, please visit the SAP Help Portal
60
11/15/2023
The repository on the ABAP system that you want to use for Customizing data must have Layout Version 3 at least. For more
information, see Set the Repository Layout.
 Recommendation
Use a separate repository for your Customizing data.
Context
If you use gCTS for Customizing data without using the gCTS registry: When creating Customizing requests, you must
enter the virtual non-ABAP system (vSID) as the target system in the Target eld of the request. This ensures the
transport along a gCTS-speci c transport layer and a push into a remote Git repository.
If you use gCTS for Customizing data using the gCTS registry: No transport layers are required. You must still enter a
vSID when creating the repository on the ABAP system. But you can use the same vSID for all repositories that use the
registry. You can use the same repository for all Customizing objects that you create in the system. When creating
Customizing requests, you don't need to enter a Target. You register the Customizing object in the gCTS registry. When
the transport request is released, gCTS assigns the object to the correct repository.
Important Notes
When you create commits with client-speci c Customizing data, make sure that you always create your commits in the
same client in the development system. To separate client-speci c Customizing within one repository, you can, for
example, create different branches for the Customizing objects of the individual clients.
 Example
Create branch 100 for Customizing objects of client 100.
Create branch 200 for Customizing objects of client 200.
When you pull a commit with Customizing data in a target system, the Customizing data is imported in the client that
you’re logged on to in the ABAP system. If you need to have the Customizing data in multiple clients, you have the
following options:
Log on to the ABAP system in the client in which you need the Customizing data. In the Transport Management
System (transaction STMS), you manually add the transport request that was created for the pull to the import
queue, and import it there.
For more information, see Adding a Change Request to the Import Queue.
Log on to the ABAP system in the client in which you need the Customizing data, and open the gCTS app in this
client. In the Customizing repository, on the Objects tab, use the Deploy function to import the Customizing data
in the current client.
 Note
Users who push or pull commits in multiple clients need to have permissions in all clients in which they work. For more
information, see Authorization Concept in gCTS.
Push the Current State of Customizing to a Git Repository
If you want to start using gCTS for your Customizing data at another time, or if you want to push the current state of the
Customizing in an ABAP system to a Git repository so that you can use it for other systems, you must make sure that the
Customizing objects are pushed to the Git repository. To do this, you have the following options:
This is custom documentation. For more information, please visit the SAP Help Portal
61
11/15/2023
Create a transport request of type Transport of Copies, and enter the virtual non-ABAP system (vSID) as target system
in the Target eld of the request.
Use the manual push function in the gCTS app to push Customizing objects to the Git repository. You can push both
individual Customizing objects and individual table entries, and the content of entire transport requests. For more
information, see Manually Push Objects.
Related Information
About the vSID
Using Git-Enabled Change and Transport System
The SAP Fiori app for Git-enabled Change and Transport System (gCTS app) provides access to the common tasks in gCTS.
Prerequisites
gCTS is con gured in your ABAP system.
For more information, see Con guring Git-Enabled Change and Transport System.
Context
The subsequent sections contain information about the tasks involved in using gCTS.
Start the SAP Fiori App for Git-Enabled Change and Transport Management System
The SAP Fiori-based application for Git-enabled Change and Transport Management System (gCTS app) supports you in
performing many gCTS-related tasks.
Using the System View
In the System view, you perform system-related tasks.
Working in a Repository
In the Repository view, you perform repository-related tasks.
Update ABAP Target Systems
To update an ABAP target system with the current state of development of the ABAP development system, you have
different options.
Integration of gCTS in CI Pipelines
To leverage the functions of Git-enabled Change and Transport Management (gCTS), we recommend that you integrate
gCTS into CI pipelines.
Start the SAP Fiori App for Git-Enabled Change and Transport
Management System
The SAP Fiori-based application for Git-enabled Change and Transport Management System (gCTS app) supports you in
performing many gCTS-related tasks.
Prerequisites
Your system administration has followed the implementation steps for the gCTS app described under App
Implementation: Git-Enabled Change and Transport System.
This is custom documentation. For more information, please visit the SAP Help Portal
62
11/15/2023
You have sufficient authorization to work with the gCTS app, including the authorizations to start SAP Fiori Launchpad.
For more information, see Authorization Concept in gCTS.
Procedure
The gCTS app enables you to perform tasks required to con gure and run gCTS. You can start it in the SAP Fiori Launchpad.
You can launch the SAP Fiori Launchpad in one of the following ways:
Using transaction code /ui2/flp in your ABAP system.
Using https://<host>:<port>/sap/bc/ui2/flp/.
You can add the application called Git-enabled CTS to your SAP Fiori Launchpad by using the app nder. The application is
available in the SAP: Application Services catalog.
System View in gCTS App
When the gCTS app starts, it opens in the System view where you can nd system-speci c information required to use gCTS and
a list of the Git repositories created on the ABAP system.
Header in System View
In the header of the System view, the following information is displayed:
Field
Description
Domain
Domain of the ABAP system
Status
Status of the ABAP system
Possible values: Available | Unavailable
If the status is Unavailable, check that your system con guration is correct, and that the system is up and
running.
Repository
Number of repositories created for this system
URL
URL to the OData service of gCTS
Client
Client in which the ABAP user is logged on to the ABAP system
Service
Path to the OData service of gCTS
Bottom Area in System View
In the bottom area of the System view, different tabs are available. For more information about the tasks that you can do on the
individual tabs, see Using the System View.
 Note
It is possible that tabs are hidden because of missing authorizations.
Repository View in gCTS App
This is custom documentation. For more information, please visit the SAP Help Portal
63
11/15/2023
When you select a repository in the System view, the Repository view opens.
Header in Repository View
In the header of the Repository view, the following information is displayed:
Field
Description
URL
Link to the URL of the remote repository on the Git server that was entered when the repository was created
on the ABAP system.
Type
Type of repository that was selected when the repository was created on the ABAP system.
vSID
System ID (SID) of the virtual non-ABAP system that was entered when the repository was created on the
ABAP system.
Branch
Active branch of the local repository
Current Commit
Link to the current commit in the local repository
 Note
The link only works when the current commit in the local repository already exists in the remote repository.
For example, if the commit hasn´t yet been pushed to the remote repository, the link doesn't work. You can
manually push local commits on the Objects tab. For more information, see Manually Push Local Commits.
Objects
Total number of objects in the local repository
Owner
Status
Status of the repository
Possible values: CREATED | READY | By default, this is the ABAP user who created the repository on the
ABAP system. You can change the owner of a repository.CHECKOUT| ERROR | MERGE
After a repository was created on the ABAP system, the initial value is CREATED.
After the remote repository has been cloned to the repository on the ABAP system or after you´ve
used the Update to Latest Commit function, the status is READY.
By default, this is the ABAP user who created the
repository on the ABAP system. You can change the owner of a (Pull selected commit to system’s
local repository (object difference is imported depending on the con guration)), the status is
CHECKOUT. If the repository is in this state, no commits to the local repository can take place. To
return to the current commit and status READY, use Update to Latest Commit.
If you’ve pulled any commit to the system using
If the repository is corrupt on the le system, the status is ERROR.
If the Git client detected con icts, the status is MERGE.
Role
Role of the repository that was selected when the repository was created.
Visibility
Visibility of the repository that was selected when the repository was created.
Bottom Area in Repository View
In the bottom area of the Repository view, different tabs are available. For more information about the tasks that you can do on
the individual tabs, see Working in a Repository.
 Note
It is possible that tabs are hidden because of missing authorizations.
This is custom documentation. For more information, please visit the SAP Help Portal
64
11/15/2023
Using the System View
In the System view, you perform system-related tasks.
Procedure
1. In the header of the System view, you can perform the following tasks:
Task
Function in the gCTS App
Description
Con gure gCTS in the ABAP
Enable gCTS
Opens the Enable gCTS wizard that guides you
system.
through the initial system con guration. For more
information, see Enable Git-Enabled Change and
Transport System in an ABAP System.
Check the con guration status of
Health Check
gCTS in the ABAP system.
Allows you to check whether the gCTS con guration in
your ABAP system is complete and correct. For more
information, see Use the Health Check.
Refresh the screen.
Set authentication of logon user to
Git server.
(Refresh data)
(Manage settings of current
user)
Performs a refresh of the screen.
Allows you to set authentication details for the remote
repositories in which you work. For more information,
see Set User-Speci c Authentication.
2. On the individual tabs, you can do other system-related tasks, including creating repositories.
Use the Repositories Tab
When you start the gCTS app, in the System view, the Repositories tab is opened by default. It contains a list of Git
repositories that have been created on the ABAP system.
Use the Con gurations Tab
The Con gurations tab in the System view contains a list of con guration parameters for systems.
Use the Registry Tab
The Registry tab contains a list of repositories in your system landscape that were registered in the gCTS registry.
Use the Teams Tab
On the Teams tab, you can get an overview of all teams that exist in the current ABAP system, create new teams, and
edit or delete existing teams.
Use the Repositories Tab
When you start the gCTS app, in the System view, the Repositories tab is opened by default. It contains a list of Git repositories
that have been created on the ABAP system.
Context
Get more information about all Git repositories that were created on the system.
Procedure
1. In the gCTS app, in the System view, choose the Repositories tab.
For each repository, the following information is displayed:
This is custom documentation. For more information, please visit the SAP Help Portal
65
11/15/2023
Column
Description
More Information
Repository ID
Unique ID generated from the repository Description when the
Create Git Repositories on an ABAP
repository was created.
System
 Note
The repository ID cannot be changed.
Name
Repository name derived from the repository Description when
Create Git Repositories on an ABAP
the repository was created.
System
Branches
Active branch of the local repository
Use the Branches Tab of a Repository
Commit
Current commit of the repository displayed as a link.
If you select the commit link, the commit
is opened in the connected Git server of
the remote repository.
Role
Type
vSID
Role of the repository that was selected when the repository
Create Git Repositories on an ABAP
was created.
System
Type of the repository that was selected when the repository
Create Git Repositories on an ABAP
was created.
System
vSID of the repository that was selected when the repository
Create Git Repositories on an
was created.
ABAP System
About the vSID
Visibility
Visibility of the repository that was selected when the
Create Git Repositories on an ABAP
repository was created.
System
2. On the Repositories tab, you can do the following tasks:
Task
Function in the
Description
gCTS App
Create a new repository.
Create
For more information, see Create Git Repositories on an ABAP
System.
Navigate to the Repository view of an
Open the Repository view of a repository using
existing repository.
anywhere in the repository row.
(Search)
Search
or by clicking
Filter the list of repositories by entering any character string in
the Search eld and choosing
(Search).
Use the Con gurations Tab
The Con gurations tab in the System view contains a list of con guration parameters for systems.
Procedure
1. In the gCTS app, in the System view, choose the Con gurations tab.
For each parameter, the following information is displayed:
Column
Description
This is custom documentation. For more information, please visit the SAP Help Portal
More Information
66
11/15/2023
Column
Description
More Information
Con guration Parameter
Name of the con guration parameter.
Con guration Parameters for
Value
Value of the con guration parameter.
Systems
 Note
If you've selected or deselected a checkbox to indicate the
value, the corresponding value is displayed. This can be
true | false, or X | <space>
Category
Category can be REPOSITORY or SYSTEM.
2. You can perform the following tasks:
Task
Function in the
Description
gCTS App
Set a con guration parameter.
Create
Set Con guration Parameters for Systems
Change the value of an existing
(Edit
Con guration
Parameter)
Choose
(Edit Con guration Parameter) in the parameter row.
(Delete
Con guration
Parameter)
Choose
(Delete Con guration Parameter) in the parameter
con guration parameter
Delete an existing parameter.
row.
Use the Registry Tab
The Registry tab contains a list of repositories in your system landscape that were registered in the gCTS registry.
Prerequisites
You have con gured the gCTS registry.
The tab is only displayed, if the registry is con gured. For more information, see Con gure the gCTS Registry.
Procedure
1. In the gCTS app, in the System view, choose the Registry tab.
For each registered repository, the following information is displayed:
Column
Description
Local Repository
Unique repository ID generated from the repository Description
The local repository is only displayed, if the repository exists on the ABAP
system.
URL
URL link to the remote repository.
Registered By
ABAP user name who registered the repository in the gCTS registry.
Date
Date and time of the registration of the repository in the gCTS registry.
This is custom documentation. For more information, please visit the SAP Help Portal
67
11/15/2023
2. For repositories that have been registered in the gCTS registry and cloned to the current ABAP system: Navigate to the
when the repository was created on the ABAP system.Registry tab in the Repository when the repository view of the
selected repository by clicking anywhere in the repository row.
Related Information
Create Git Repositories on an ABAP System
Register Git Repositories in the gCTS Registry
Use the Teams Tab
On the Teams tab, you can get an overview of all teams that exist in the current ABAP system, create new teams, and edit or
delete existing teams.
Prerequisites
You have the authorizations required to create a team.
To create teams, you need the authorization object S_GCTS_SYS with ACTVT = 70 (Administer) or 34 (Write) assigned.
To add members to teams, you need the authorization object S_USER_GRP with eld CLASS = SUPER and eld ACTVT =
03.
The authorizations are part of the SAP_BC_GCTS_ADMIN role.
Context
gCTS allows you to create teams, and assign the teams as collaborators to repositories. When adding a team to a repository,
you select the level of permissions that the team has in this repository. You can also add individual collaborators to a repository
and grant permissions to individual users.
To create a team, proceed as follows:
Procedure
1. In the gCTS app, in the System view, choose the Teams tab.
2. Choose Create Team.
3. Enter a name for your new team, and a description, and choose Save.
4. To add members to the team, select
(Edit Team) in the row of the team.
5. In the Edit Team dialog box, enter a name of an existing ABAP user in the Members eld, and choose Enter .
6. Repeat the previous step for all users that you want to add to the team.
 Note
Make sure that you enter names of ABAP users that exist in the ABAP system. gCTS only checks that the user exists,
when you save this dialog.
7. To save the changes to the team, choose Save.
Results
This is custom documentation. For more information, please visit the SAP Help Portal
68
11/15/2023
You've created a team.
Next Steps
To assign the team to a repository, go to the Collaboration tab of a repository.
Related Information
Use the Collaboration Tab of a Repository
Authorization Concept in gCTS
Working in a Repository
In the Repository view, you perform repository-related tasks.
Procedure
1. In the header of the Repository view, you can perform the following tasks:
Task
Function in the
Description
gCTS App
Clone the content of the remote
Clone Repository
repository to the ABAP system.
Edit the metadata of the repository.
For more information, see Clone the Remote Git Repository to
the ABAP System.
Edit
Opens a dialog box to edit the metadata of a repository. For
more information, see Edit Header Data of Local Repositories.
Delete the repository.
Delete
Deletes the repository on the le system and the metadata in
the ABAP database.
 Note
This function doesn’t delete the remote repository from the
Git server.
 Note
When deleting a remote repository, make sure you also
delete it on all systems where it's been cloned and used.
Issues will arise, if you create a new repository with the
same name, and you clone it to a system where the previous
repository still exists with different content.
Refresh the display.
(Refresh data)
Performs a refresh of the display.
2. On the individual tabs, you can do other repository-related tasks.
Edit Header Data of Local Repositories
In the gCTS app, you can edit the header data of existing local repositories, such as the description, the visibility in the
gCTS app, or the owner.
Use the Commits Tab of a Repository
The Commits tab contains a list of all commits of a Git repository in reverse chronological order.
Use the Con guration Tab of a Repository
This is custom documentation. For more information, please visit the SAP Help Portal
69
11/15/2023
The Con guration tab contains a list of con guration parameters for repositories that were de ned for the current
repository.
Use the Activities Tab of a Repository
The Activities tab contains a history of all activities that were performed in the local repository in reverse chronological
order.
Use the Objects Tab of a Repository
The Objects tab contains an overview of the ABAP objects in the active branch of your local repository.
Use the Branches Tab of a Repository
The Branches tab provides an overview of the branches of a repository. You can create new branches, compare the
object differences between a selected branch and the active branch, switch to selected branches, merge branches, and
delete existing branches.
Use the Log Tab of a Repository
gCTS logs all actions that are performed for a speci c repository.
Use the Registry Tab of a Repository
The Registry tab provides an overview of the objects of the current repository that have been registered in the gCTS
registry. You can also use it to register new objects in the gCTS registry.
Use the Properties Tab of a Repository
On the Properties tab of a repository, you can set dependencies and prerequisites of the repository, and change its
default layout properties.
Use the Collaboration Tab of a Repository
On the Collaboration tab, you can add teams or individual users as collaborators to the repository.
Use the Tags Tab of a Repository
The Tags tab provides an overview of the tags of a repository. You can create new tags, compare the object differences
of selected tags, activate tags, and delete existing tags.
Use the Jobs Tab of a Repository
The Jobs tab provides an overview of scheduled background jobs of a repository. It allows you to create new jobs, delete
existing ones, and navigate to the detailed log of a job.
Edit Header Data of Local Repositories
In the gCTS app, you can edit the header data of existing local repositories, such as the description, the visibility in the gCTS app,
or the owner.
Procedure
1. In the gCTS app in the Repository view, choose Edit.
The Edit Repository dialog box displays the metadata of the repository that was selected when the repository was
created on the ABAP system. It also displays the user who created the repository and the creation date and time.
2. Edit the values where necessary.
You can edit the values of all elds except for the vSID eld.
 Caution
Only edit the URL in exceptional situations, because this can lead to inconsistencies. If you have entered an incorrect
URL , in general, we recommend that you delete the repository from the ABAP system, and create a new one using
the correct URL.
3. Save your changes.
Results
You´ve edited the header data of the local repository. The date and time of the edit is logged on the dialog box, along with your
user.
This is custom documentation. For more information, please visit the SAP Help Portal
70
11/15/2023
Use the Commits Tab of a Repository
The Commits tab contains a list of all commits of a Git repository in reverse chronological order.
Context
The Commits tab is opened when you go to a repository in the gCTS app. It contains a list of commits.
By default, the commits that exist in the remote repository of the branch that is active in the local repository are displayed in
the list. A commit that is currently active in this branch in your local repository is displayed in bold.
For each commit, the following information is displayed:
Column
Description
Commit ID
Link to the commit on the remote repository
Author
Depending on where the commit was created, either the user on the Git server or the user in the ABAP system
is displayed as the author of a commit.
Author´s Email
Address
If no email address is maintained in the system for the ABAP user, a default email address is displayed.
 Tip
In some ABAP systems, the <sid>adm is displayed as the author of a commit, and a generated email
address of this user is displayed as the author’s email address. To ensure the correct ABAP user, gets
displayed the user´s email address must be entered in the User Maintenance (transaction SU01).
Date
Date and time when the commit was created
Message
The commit message allows you to identify a speci c commit. Note the following points:
If the commit was triggered by a released transport request or a task in the ABAP system, by default
the commit message contains the number of the transport and a short description. You can in uence
the message text using con guration parameters. For more information, see Con guration Parameters
for Repositories.
Commits that are generated by gCTS have a generated commit message.
For commits that you´ve created by committing les manually, your commit message is displayed.
Procedure
1. In the gCTS app, in the Repository view, choose the Commits tab.
2. You can perform the following tasks:
Task
Function in the
Description
gCTS App
Select a local or remote branch
Dropdown list
By default, the remote commits of the branch that is currently active in
whose commits you want to
with all
the local repository are displayed. From the dropdown list, you can select
display.
branches of the
the local branch, or any other existing remote or local branch.
repository
Search for all commits that match
(Search)
Enter any character string in the Search eld and choose
(Search).
a speci c character string.
This is custom documentation. For more information, please visit the SAP Help Portal
71
11/15/2023
Task
Function in the
Description
gCTS App
Pull the current commit from the
Update to
Pull the latest commit from the remote repository to the local repository
remote repository to the local
Latest Commit
on the le system, and import the object delta in the ABAP system.
repository on the ABAP system.
Sort the list of commits.
For more information, see Pull Commits.
(Sort)
By default, the commits are sorted by commit date, in descending order.
You can change the sort order.
Filter the list of commits.
(Set Filters)
You can lter the list of commits according to different criteria.
If a lter is set, the lter icon is highlighted, and a Filtered By row
indicates which lters are set. The lter settings are kept throughout the
current session, even when you switch to a different branch or repository.
To reset the lters to the default settings, in the Filter dialog box choose
Reset.
 Note
In the put elds, you can enter any character string that you want to
lter with.
Reset local repository
(Reset all
changes of the
local repository
to the selected
commit.)
Reset Local Repository
Compare a selected commit with
(Compare
differences
between the
objects of the
selected
commits.)
Compare Commits
the active commit.
Navigate to the commit in the
Select the link
remote repository on the Git
of the commit.
server.
 Note
The link works, only if the commit also exists in the remote repository
and not in the local repository. It's possible for a commit to exist only
in the local repository if, for example, gCTS’s automatic pull and push
behavior was disabled in this repository. For more information, see
Disable Automatic Pull and Push.
Pull a selected commit from the
remote repository to the local
repository on the ABAP system.
(Pull selected
commit to
system’s local
repository
(object
differences are
imported
depending on
the
con guration))
Pull Commits
Pull Commits
On the Commits tab in the gCTS app, you can manually pull commits to the current ABAP system.
Compare Commits
To nd out the object differences between two selected commits, you can use this function.
This is custom documentation. For more information, please visit the SAP Help Portal
72
11/15/2023
Reset Local Repository
You can use this function to discard all changes made in the local repository, and reset the local repository to a selected
commit.
Pull Commits
On the Commits tab in the gCTS app, you can manually pull commits to the current ABAP system.
Prerequisites
You have the authorization required to pull commits in a repository on the ABAP system.
Context
During a pull operation, the delta between From Commit and To Commit of the commit that you want to pull is imported and
activated in the ABAP system.
 Caution
The delta consists of the object differences between the commit that you want to pull and the commit that is currently
active in the system. If the currently active commit isn't the previous commit, the delta does not only contain the changed
objects of the commit that you want to pull, but also the objects of all commits in between. For more information, see About
Commits in gCTS.
By default, an import is run when you pull a commit. To make sure that your pull doesn't interfere with the work of other users,
you can in uence the import behavior using con guration parameters for repositories:
VCS_BUFFER_ONLY
VCS_NO_IMPORT
For more information, see Con guration Parameters for Repositories.
The following steps describe the manual pull of a commit in the gCTS app:
Procedure
1. In the gCTS app, in the Repository view, go to the Commits tab.
2. If your repository has multiple branches, make sure that the branch where you want to pull a commit is the active branch
in the current system.
3. Use one of the following functions:
Update to Latest
(Pull selected commit to system’s local repository (object difference is imported depending on the
con guration)) in the line of the current commit in the remote repository
 Note
You can choose to run the tasks as background jobs. To do this, select the dropdown arrow ( ) next to the respective
button.
Update to Latest: Choose
Pull commit: Choose
Update to Latest in Background.
Pull Commit in Background
This is custom documentation. For more information, please visit the SAP Help Portal
73
11/15/2023
For more information, see Schedule Background Jobs for gCTS Activities.
When gCTS detects updated les, it proceeds as follows:
a. It pulls the les to the local repository.
b. It converts the les to ABAP objects.
c. It imports the ABAP objects into the ABAP runtime.
 Note
Client-dependent data, such as Customizing data, is imported in the client in which you’re logged on to the
ABAP system where you started the gCTS app.
Before importing objects, gCTS checks whether any of the les that are to be imported during the action refers to
objects that are locked in an open change request. If objects to be imported are currently locked, they're displayed on a
dialog box. With the help of the list of locked objects, you can evaluate the impact of the import. An import will overwrite
locked versions in the ABAP system. It's a sensitive action that can result in data loss if objects are overwritten that
other users are currently working on.
4. If the Compare Object Differences dialog box is displayed and you want to proceed, con rm the dialog box.
Results
The system is set to the selected or the latest commit.
The Current Commit in the header displays a link to the commit that was pulled.
The commit that was pulled is displayed in bold characters because it's now the active commit of the local repository.
If you've used Update to Latest, the status of the repository is READY.
If you've pulled a selected commit, the status of the repository is CHECKOUT, even if you've pulled the latest commit of
the repository.
You can check the result in the following places:
On the Log tab:
See the logs for the PULL_BY_COMMIT process.
On the Activities tab:
See the status of the Pull activity and the log of the change request that was created for the import.
 Note
If the import generates a return code that is equal to or greater than 8, by default gCTS returns an error message, and the
local repository remains on the old commit, even though the import has run. In such an error situation, carefully analyze the
log of the request. To suppress the error message and classify the return code as tolerable, you can adjust the
VCS_IMPORT_ERROR_LEVEL con guration parameter. For more information, see VCS_IMPORT_ERROR_LEVEL.
Compare Commits
To nd out the object differences between two selected commits, you can use this function.
Prerequisites
This is custom documentation. For more information, please visit the SAP Help Portal
74
11/15/2023
You're in the gCTS app, on the Commits tab of a repository.
Context
 Recommendation
Use this function before you pull a commit.
Procedure
1. Select two commits that you want to compare with each other.
 Note
The sequence in which you select the commits determines the type of change.
2. Choose
(Compare differences between the objects of the selected commits.) .
Results
The system compares the objects of the selected commits. As a result, the system displays the objects that differ between the
commits and the type of the change (object is created, deleted, or modi ed). This function doesn't show detailed changes in
objects. For in-depth comparison, use the speci c commit comparison function offered by your Git provider.
Reset Local Repository
You can use this function to discard all changes made in the local repository, and reset the local repository to a selected commit.
Context
Use this function with caution in error situations in your local repository. All local changes that haven't been committed are
deleted in the process, and there's no option to recover them. For example, use the reset function, if you've started to resolve a
con ict, but you can't complete the con ict resolution.
This function includes the following actions:
1. It discards all changes made in the local repository that haven't been committed.
2. It sets the selected commit as the current commit of the local repository, but without importing objects to the ABAP
system.
This function corresponds to the Git function git reset --hard.
 Note
Resetting the local repository doesn't affect the ABAP system:
Changes in the ABAP system are kept and not discarded.
No imports take place in the ABAP system.
Changes to the repository con guration that are part of the selected commit aren't reset.
Procedure
This is custom documentation. For more information, please visit the SAP Help Portal
75
11/15/2023
1. In the gCTS app, in your repository, choose the Commits tab.
2. If you want to reset the repository to a commit that isn´t the latest, pull this commit to the ABAP system.
 Note
Because the reset function doesn´t run an import, a pull is required before the reset so that the objects of the
commit are imported in the local ABAP system.
3. Select the commit to which you want to reset the repository.
4. Choose
(Reset all changes of the local repository to the selected commit.).
5. On the subsequent message, choose Reset.
Results
The local changes of the repository are discarded. The selected commit is set as the current commit of the repository.
The action is logged in the gCTS logs. For more information, see Use the Log Tab of a Repository.
 Example
For example, you've started to resolve a con ict, but you've made an error. You've added the con icting le to the index of
the local repository. This means that you can't return to the con ict resolution editor to continue with a con ict resolution.
You haven't yet committed the result of the con ict resolution to the local repository. In this case, you can reset the
repository to the current commit, and repeat the con ict resolution. If it's impossible to resolve the con ict, you can pull an
earlier commit of the repository and reset the repository to this commit in order to reset the repository to a state without
any con icts.
Use the Con guration Tab of a Repository
The Con guration tab contains a list of con guration parameters for repositories that were de ned for the current repository.
Procedure
1. In the gCTS app, in the Repository view, choose the Con guration tab.
For each parameter, the following information is displayed:
Column
Description
More Information
Con guration Parameter
Name of the con guration parameter.
Con guration Parameters for
Value
Value of the con guration parameter.
Repositories
 Note
If you've selected or deselected a checkbox to indicate the
value, the corresponding value is displayed. This can be
true | false, or X | <space>
Category
Category can be REPOSITORY or SYSTEM.
2. You can perform the following tasks:
This is custom documentation. For more information, please visit the SAP Help Portal
76
11/15/2023
Task
Function in the gCTS
App
Description
Set a con guration parameter.
Create
Set Additional Con guration Parameters for
Repositories
Change the value of an existing con guration
parameter
Delete an existing parameter.
(Edit Con guration
Parameter)
Choose
(Delete Con guration
Parameter)
Choose
(Edit Con guration Parameter) in the
parameter row.
(Delete Con guration Parameter) in the
parameter row.
Set Additional Con guration Parameters for Repositories
When a repository is created on an ABAP system, the con guration parameters CLIENT_VCS_URI and
CLIENT_VCS_CONNTYPE are automatically set. You can add additional parameters, depending on your requirements.
Edit Con guration Parameters for Repositories
You can change the value of con guration parameters for repositories, and set them as global parameters.
Con guration Parameters for Repositories
You can set the following con guration parameters for repositories on the Con guration tab in the Repository view.
More Information About Con guration Parameters for Repositories
This topic contains additional information about speci c con guration parameters for repositories.
Disable Automatic Pull and Push
By default, when you release a transport request or a task that uses a gCTS-speci c transport layer, or when you use the
manual push function in the gCTS app, gCTS automatically pulls the latest changes from the remote Git repository from
the branch that is currently active in the system (without importing them in the ABAP system), creates a new local
commit, and pushes the commit to the remote repository.
Set Additional Con guration Parameters for Repositories
When a repository is created on an ABAP system, the con guration parameters CLIENT_VCS_URI and
CLIENT_VCS_CONNTYPE are automatically set. You can add additional parameters, depending on your requirements.
Prerequisites
You’ve created a Git repository on your ABAP system.
Context
To set additional con guration parameters for repositories, you use the Con guration tab of your repository.
 Note
The parameters that you de ne here are valid only for the current repository. If you want to de ne parameters that are valid
for all repositories of the current ABAP system, you can de ne them as system parameters. Note that the parameters that
are con gured as system parameters aren’t visible in the list of repository parameters of the individual repository. To check
them, go to the Con gurations tab in the System view. For more information, see Set Con guration Parameters for
Systems. If you’ve con gured the same parameters as repository parameters and also as system parameters, gCTS uses
the repository parameters.
Procedure
This is custom documentation. For more information, please visit the SAP Help Portal
77
11/15/2023
1. In the gCTS app, select the repository that you want to set parameters for.
2. In your repository, choose the Con guration tab.
3. Choose Create.
4. Enter any character string of the parameter name in the input eld to activate the autocomplete function, or select the
parameter from the dropdown list.
For a list of parameters, see Con guration Parameters for Repositories.
5. Enter the correct value in the Value eld, or select the checkbox, to set the value to true or X.
6. Choose Save.
Edit Con guration Parameters for Repositories
You can change the value of con guration parameters for repositories, and set them as global parameters.
Prerequisites
You have the permissions required to edit con guration parameters in the local repository.
To set a con guration parameter as global, you need write permission in the remote repository. This is required, since this
action creates a commit and pushes it to the remote repository. Otherwise, the push will fail.
For more information, see Authorization Concept in gCTS.
Context
On the Con guration tab of your repository, you can edit existing con guration parameters for the repository.
By default, when you set a parameter on an ABAP system, it's set as a local parameter. This means it's valid only on the local
system.
If you want to make the parameter available for all systems that the repository is cloned to, you can edit the parameter and set
the Scope to Global. This action creates a new commit, and the parameter is stored in the repository. When you clone the
repository to a target system, or when you pull the latest commit in a target system, the con guration parameter is pulled to
the target system. It's displayed on the Con guration tab in the Repository view.
 Note
If a global repository parameter is pulled to a target system where the same parameter already exists with a different value,
the local value remains unchanged.
To edit a con guration parameter for a repository, proceed as follows:
Procedure
1. In your repository, go to the Con guration tab.
2. In the row of the parameter that you want to edit, choose
(Edit Con guration Parameter).
3. For the Value eld, depending on the parameter, you have the following options:
If there's an input eld, enter the correct value.
If there's a checkbox, proceed as follows:
This is custom documentation. For more information, please visit the SAP Help Portal
78
11/15/2023
If you want to set the value to true, select the checkbox.
If you want to set the value to false, deselect the checkbox.
4. Optional: For the Scope eld, select the value Global.
5. Choose Save.
Results
A toast message tells you that the parameter was saved.
If you've set the Scope value to Global, the following actions are triggered:
A commit is created with the generated text:
add con guration <con guration parameter> <value>
If you've sufficient permissions in the remote repository, and you haven't disabled the automatic pull and push in the
ABAP system, the commit is pushed to the remote repository.
An entry is added in the .gcts.properties.json le of the repository with the following data:
"con gurations":[{"key":"<con guration parameter>", "value":"<value>"}]
Con guration Parameters for Repositories
You can set the following con guration parameters for repositories on the Con guration tab in the Repository view.
 Note
You can con gure repository parameters for individual repositories. For more information, see Set Additional Con guration
Parameters for Repositories.
If you want to con gure the same parameters for all repositories in your ABAP system, you can con gure them as system
parameters. For more information, see Set Con guration Parameters for Systems. Note that, if you've set a con guration
parameter as a system parameter, and you also specify it as con guration parameter for a speci c repository, this system
parameter value gets overwritten in the speci c repository.
 Caution
It is not allowed to specify the following security-related repository parameters as system parameters:
CLIENT_VCS_AUTH_USER
CLIENT_VCS_AUTH_PWD
CLIENT_VCS_AUTH_TOKEN
CLIENT_VCS_SSH_KEY
Con guration Parameter
Default Value
Description
Read-
Examples
Only
CLIENT_OS
tp
Speci es tp as the client that is
yes
used to communicate with the
operating system layer on this
system
This is custom documentation. For more information, please visit the SAP Help Portal
79
11/15/2023
Con guration Parameter
Default Value
Description
Read-
Examples
Only
CLIENT_PROXY_HOST
Proxy host used by the Git client
(Java) for outgoing network
communication
CLIENT_PROXY_PORT
Proxy port used by the Git client
(Java) for outgoing network
communication
CLIENT_TP_UMODE
1
tp option umode that is used
For more i
during an import
 Caution
Only change this value with an
explicit recommendation by
SAP support.
CLIENT_VCS
GIT
Speci es GIT as the version
yes
control system that is used to
communicate with a remote
repository
 Note
This parameter is obsolete.
CLIENT_VCS_AUTH_PWD
Password that is used by the
For more i
CLIENT_VCS_AUTH_USER to
Options.
communicate with a remote
repository when the repositoryspeci c authentication method
user/password is used for the
connection type ssl
CLIENT_VCS_AUTH_TOKEN (not
Personal access token created in
This param
recommended)
the Git server, for example GitHub,
However, w
which is used to communicate with
For more i
a remote repository. The token
Options.
must be created for a technical
user with access to the remote
repository.
CLIENT_VCS_AUTH_USER
User on the Git server that is used
to communicate with a remote
repository when the repositoryspeci c authentication method
communi
For more i
Options.
user/password is used for the
connection type ssl
CLIENT_VCS_COMMIT_DESCRIPTION
$(TRANSPORT/DOCUMENTATION)
Commit description syntax that is
For more i
used for a push into the remote
repository.
See:
CLIENT_VCS_COMMIT_MESSAGE
for values.
This is custom documentation. For more information, please visit the SAP Help Portal
80
11/15/2023
Con guration Parameter
Default Value
Description
Read-
Examples
Only
CLIENT_VCS_COMMIT_MESSAGE
[$(TRANSPORT/TRKORR)]
$(TRANSPORT/DESCRIPTION)
Commit message syntax that is
used for a push into the remote
repository
RepoID:
type: $
$(TRANS
timesta
documen
path: $
By default
request d
Transport
TR
DE
DO
TY
US
DA
TI
Al
Repository
ID
NA
System: (
Al
CLIENT_VCS_COMMIT_USER_MAIL
SAP_SCTS_AVCS_AUTHOR_MAIL
Name of a transport request
For more i
attribute that contains a user email
address that is used for a push
into the remote repository
CLIENT_VCS_COMMIT_USER_NAME
SAP_SCTS_AVCS_AUTHOR
Name of a transport request
For more i
attribute that contains a user name
that is used for a push into the
remote repository
CLIENT_VCS_CONNTYPE
ssl
Connection protocol that is used to
When you
communicate with a remote
automatic
repository.
Possible values:
For more i
System.
ssh
ssl
CLIENT_VCS_LOGLVL
warning
Granularity that is used for log
error, w
entries
This is custom documentation. For more information, please visit the SAP Help Portal
81
11/15/2023
Con guration Parameter
Default Value
Description
Read-
Examples
Only
CLIENT_VCS_SSH_KEY
----BEG
RSA PRI
SSH private key that is used to
communicate with a remote
repository for the connection type
When cop
ssh
must man
that the S
Repository
CLIENT_VCS_SSL_VERIFICATION
true
false
SSL veri cation for HTTPS
communication between Git client
and Git server
CLIENT_VCS_URI
https:/
URI that is used to clone a remote
repository.
For more i
This parameter is set when the
System.
repository is created.
CURRENT_COMMIT
Current commit ID of the
yes
b4af1bb
yes
Z<vSID>
repository
TRANSPORT_LAYER
Transport layer that de nes the
related objects or transport
requests for a particular
For more i
repository. When a repository is
created on a TMS domain
controller, the transport layer is
automatically created. In this case,
the value is displayed here as a
con guration parameter.
VCS_API_ENDPOINT
<space>
Technical API endpoint of a
Example:
repository.
VCS_AUTOMATIC_PULL
true
Latest commit is pulled
For more i
automatically from remote
repository before a commit is
executed
VCS_AUTOMATIC_PUSH
true
Commit is pushed automatically to
For more i
remote repository after a commit
is executed.
VCS_BUFFER_ONLY
<space>
No objects are imported into the
X
system, but a transport request is
generated and added to the buffer.
You can manually import the
transport request at a later point in
time.
VCS_ERROR_ROLLBACK
true
Local repository is rolled back to
the latest commit, if errors occur
for pull or switch branch actions.
VCS_IMPORT_ERROR_LEVEL
8
Minimum return code of an import
that gCTS displays as an error.
 Caution
false
For more i
Other mea
For more i
Use this parameter with caution
and in error situations only.
This is custom documentation. For more information, please visit the SAP Help Portal
82
11/15/2023
Con guration Parameter
Default Value
Description
Read-
Examples
Only
VCS_IMPORT_EXECUTION
Actions are triggered sequentially
after each import into the related
[{"acti
{"actio
system during a clone or a pull
operation. This operation raises an
exception if the execution of the
action has failed. (For example, if a
class is missing.)
VCS_IMPORT_TYPE
T
Type of generated transport
request that is used for a pull to
the target system.
VCS_LOG_STORAGE
<space>
De nition of a storage location for
K
For more i
db
the detailed process log of gCTS.
By default, the process log is
stored in the le system of the
application server. If the parameter
is set to the value db, the log is
stored on the database.
VCS_NO_CLONE
<space>
The remote repository isn’t cloned
X
to the ABAP system. No objects
are imported from the remote
repository to the ABAP system.
VCS_NO_IMPORT
<space>
No objects are imported or added
to the buffer during an update or
clone action.
X
Use this p
sure that y
ABAP sys
VCS_OBJECT_CALCULATION
full
De nes the scope of objects that
gCTS calculates for each commit.
full, wo
By default
repository
ABAP dat
improve p
object cal
calculatio
paramete
For more i
VCS_OBJECT_INDEX
full
De nes whether the result of the
object calculation (object index) is
written to the ABAP database for
each commit.
full, wo
By default
database.
restrict th
object ind
For more i
VCS_RESTRICTED_PUSH
<space>
Push into repository is allowed
X
only for particular transports (only
transport requests with the
transport request attribute
SAP_SCTS_AVCS_TARGET with
value [<REPO_ID>], or transport
request description pre x
[<REPO_ID>]).
This is custom documentation. For more information, please visit the SAP Help Portal
83
11/15/2023
Con guration Parameter
Default Value
Description
Read-
Examples
Only
VCS_TARGET_DIR (obsolete)
Target directory for object
yes
deployment within an existing
remote repository.
 Note
This parameter is obsolete.
Example:
If you use
applicatio
directory
directory
value you
This param
repository
see Set th
VCS_VALID_SYSTEM
Valid system IDs (SID) for target
S4D, S4
transport requests. Transport
requests that don’t match the SID
pattern are ignored for the push
into the remote repository.
More Information About Con guration Parameters for
Repositories
This topic contains additional information about speci c con guration parameters for repositories.
For an overview of all parameters that are available for gCTS, see Con guration Parameters for Repositories.
CLIENT_VCS_COMMIT_DESCRIPTION
Commit description syntax that is used for a push into the remote repository.
CLIENT_VCS_COMMIT_USER_MAIL
Name of a change request attribute that contains a user email address that's used for a push into the remote
repository.
CLIENT_VCS_COMMIT_USER_NAME
Name of a change request attribute that contains a user name that's used for a push into the remote repository.
VCS_ERROR_ROLLBACK
Local repository is rolled back to the latest commit, if errors occur for pull or switch branch actions.
VCS_IMPORT_ERROR_LEVEL
Minimum return code of an import that gCTS displays as an error.
VCS_IMPORT_TYPE
Type of generated change request that is used for a pull to the target system.
VCS_OBJECT_CALCULATION
De nes the scope of objects that gCTS calculates for each commit.
VCS_OBJECT_INDEX
De nes whether the result of the object calculation (object index) is written to the ABAP database for each commit.
Parameters and Values of VCS_OBJECT_CALCULATION and VCS_OBJECT_INDEX
To get the desired result, combine the values of the VCS_OBJECT_CALCULATION and VCS_OBJECT_INDEX
parameters.
CLIENT_VCS_COMMIT_DESCRIPTION
This is custom documentation. For more information, please visit the SAP Help Portal
84
11/15/2023
Commit description syntax that is used for a push into the remote repository.
By default, the change request number and the short description of the request are taken as the commit message, and the long
descriptions of the request and the tasks are concatenated in the commit description. And by default, Transport Management
System is set up in a way that users are free to decide whether to add long descriptions to requests and tasks.
You can ensure that users who release a task enter a long description to the task. To do this, proceed as follows:
1. In transaction SE03, under Administration, choose Global Customizing (Transport Organizer).
2. Change the value of check existence of task documentation at task release to Activate globally.
In this case, a task can only be released if a long description exists for it.
CLIENT_VCS_COMMIT_USER_MAIL
Name of a change request attribute that contains a user email address that's used for a push into the remote repository.
You can use the default SAP_SCTS_AVCS_AUTHOR_MAIL attribute, or de ne this attribute yourself.
By default, if a commit is created for a push action, gCTS takes the user name of the commit user from the ABAP user who
released the request. If you want to map the commit user to the user email on your Git server, you can use a request attribute.
De ne that the user who releases the request enters their email address as the attribute value. When the push into the remote
repository is triggered, the email address entered in the request attribute is written in the corresponding commit description.
For more information about request attributes, see Editing Attributes.
 Example
Entity
De ned Where
Value
CLIENT_VCS_COMMIT_USER_MAIL
In the gCTS app on the Con guration tab of a
SAP_SCTS_AVCS_AUTHOR_MAIL
con guration parameter
repository
SAP_SCTS_AVCS_AUTHOR_MAIL
Before releasing a request in transaction SE09, in
request attribute
the change mode of the request, assign the
john.doe@example.com
SAP_SCTS_AVCS_AUTHOR_MAIL attribute.
CLIENT_VCS_COMMIT_USER_NAME
Name of a change request attribute that contains a user name that's used for a push into the remote repository.
You can use the default SAP_SCTS_AVCS_AUTHOR attribute or de ne this attribute yourself.
By default, if a commit is created for a push action, gCTS takes the user name of the commit user from the ABAP user who
released the request. If you want to map the commit user to the user name on your Git server, you can use a request attribute
and de ne that the user who releases the request enters their user name as the attribute value. When the push into the
remote repository is triggered, the user name entered in the request attribute is written in the corresponding commit
description.
 Example
Entity
De ned Where
This is custom documentation. For more information, please visit the SAP Help Portal
Value
85
11/15/2023
Entity
De ned Where
Value
CLIENT_VCS_COMMIT_USER_NAME
In the gCTS app on the Con guration tab of a repository.
SAP_SCTS_AVCS_AUTHOR
SAP_SCTS_AVCS_AUTHOR request
Before releasing a request in transaction SE09, in change
John Doe
attribute
mode of the request, assign the
con guration parameter
SAP_SCTS_AVCS_AUTHOR request attribute.
VCS_ERROR_ROLLBACK
Local repository is rolled back to the latest commit, if errors occur for pull or switch branch actions.
By default, in gCTS, the VCS_ERROR_ROLLBACK parameter is true. This means that if there's an import error during a pull or a
switch branch action, gCTS automatically rolls back the commit that was activated for the action and reactivates the latest
commit of the previously active branch.
To change this behavior, you can set the VCS_ERROR_ROLLBACK parameter to false. As a result, even if import errors occur, the
local repository is set to the commit that was pulled (pull action), or to the latest commit of the branch that the repository was
switched to (switch branch action).
 Caution
The parameter settings only affect the state of the local repository. Even if import errors occur, the source code of the
commit that caused the error is always imported in the local ABAP system. It isn't rolled back.
If gCTS displays an import error, check the source code to nd out more about the cause of the error. Depending on your
situation, take the necessary steps to restore a correct state of the source code in your system. These can include:
Correcting the error in the development system and creating a new commit (by releasing the change request or task).
Then pulling the commit to the target system.
Using the Deploy function on the Objects tab with the Deploy Scope set to Current Commit to reimport all objects of
the repository. For more information, see Manually Deploy Objects.
If you're sure that the repository wasn't changed by other users after the import error occurred: Using the Deploy
function on the Objects tab with the Deploy Scope set to Last Repository Action to reimport the objects of the last
commit. For more information, see Manually Deploy Objects.
VCS_IMPORT_ERROR_LEVEL
Minimum return code of an import that gCTS displays as an error.
In gCTS, imports are triggered by a pull, clone or switch branch action. By default, gCTS displays imports with a return code 8 or
higher as an error.
 Note
This information also applies to activating tags of a repository.
If the con guration parameter VCS_ERROR_ROLLBACK remains on its default value true, gCTS behaves as follows:
Pull
This is custom documentation. For more information, please visit the SAP Help Portal
86
11/15/2023
gCTS imports the source code, and returns an error message. The local repository remains on the old commit.
Clone
gCTS imports the source code, and returns an error message. The local repository is set to the latest commit of the
cloned repository.
Switch Branch
gCTS imports the source code, and returns an error message. The selected branch is displayed as the active branch, but
the local repository stays on the old commit of the previous branch.
You can use this parameter to in uence the exception handling of gCTS when import errors occur. If you set the value of this
parameter to 9, gCTS will treat an import with a return code 8 as a success.
 Example
The following example is based on the assumption that VCS_ERROR_ROLLBACK remains unchanged.
You pull commit 1234567 to your test system. The import generates the return code 8 due to a syntax error in object ABCD.
gCTS doesn´t update the local repository to commit 1234567. In the transport log for the PULL activity on the Activities tab,
you nd out that you don´t need to x this object for your current testing. In this case, you can set the value to 9, and repeat
the pull of 1234567. The pull operation will return a success message, and the local repository will be set to commit 1234567.
 Note
To in uence the behavior of gCTS when import errors occur, you can use the VCS_ERROR_ROLLBACK parameter.
For more information, see:
Return Codes in the Transport Log
Pull Commits
Clone the Remote Git Repository to the ABAP System
VCS_IMPORT_TYPE
Type of generated change request that is used for a pull to the target system.
By default, a change request of type T (Transport of Copies) is used for the import into the target system. Transports of copies
can contain any object type. However, no delivery to another SAP system takes place.
You can change the type of the request to the value K (Workbench request). If you do this, a consolidation transport is created.
If transport routes are con gured to the follow-on ABAP system, as known from the classic CTS, requests that are pulled to the
system are forwarded to the follow-on system of your transport landscape.
Setting the VCS_IMPORT_TYPE parameter to K is useful, if you have a transport landscape in which you want to use both gCTS
and the classic CTS, and you want to make sure that requests are forwarded to the systems that use the classic CTS. You can
use gCTS for the rst systems in the transport landscape, for example development and test systems, and the classic CTS for
the follow-on systems, for example for the quality and production systems. In such a setup, you set the parameter to K in the
last system that still uses gCTS.
 Example
This is custom documentation. For more information, please visit the SAP Help Portal
87
11/15/2023
If you set the VCS_IMPORT_TYPE parameter to the value K in the gCTS con guration on the TEST system, requests of type K
are created, which can then be forwarded to the QA and the PROD systems.
VCS_OBJECT_CALCULATION
De nes the scope of objects that gCTS calculates for each commit.
When a remote repository is cloned to the ABAP system, the le and folder structure of the remote repository are copied to the
le system on the application server of the ABAP system (the local repository). By default, the objects are also imported in the
ABAP database.
Information about the objects of the local repository are displayed in the following places in the gCTS app:
The object count (number of objects) is displayed in the header of the repository.
The objects, including the object count, are displayed on the Objects tab.
To display the objects, gCTS accesses the local repository and reads the objects from there. This is necessary for each commit
to enable follow-up actions, such as displaying object differences between commits or branches. For large repositories, the
process of calculating and retrieving objects can be time-consuming, especially in repositories that contain Customizing objects.
Customizing can consist of multiple table contents, which further increases the runtime, as gCTS needs to compare differences
between the Git Repository and the database.
To accelerate the access to calculation results, gCTS creates an object index in the ABAP database by default. For each commit,
the results of the object calculation are stored in a database table. This allows gCTS to directly access the database table for
object information instead of accessing the local repository and reading the objects again.
Using the object index can signi cantly improve performance in stable repositories of normal size. Once the object index is
written to the database for a commit, gCTS no longer needs to recalculate the objects. This can enhance the performance of
gCTS. However, in repositories with a high number of daily commits, the advantage of the object index diminishes as it needs to
be regenerated for each new commit.
To adapt the object calculation according to your needs, you can modify the value of the repository parameter
VCS_OBJECT_CALCULATION.
 Note
When necessary, also change the value of the VCS_OBJECT_INDEX parameter. For more information, see Parameters and
Values of VCS_OBJECT_CALCULATION and VCS_OBJECT_INDEX.
The following values exist for VCS_OBJECT_CALCULATION:
This is custom documentation. For more information, please visit the SAP Help Portal
88
11/15/2023
Value
More Information
Full (default
gCTS calculates all objects of the repository. This includes both Customizing and ABAP workbench objects. Workbench
value)
objects are source code-based objects that are stored in the object directory (TADIR table).
Workbench
gCTS calculates the ABAP workbench objects of the repository.
Disabled
gCTS doesn't calculate any objects of the repository. In the repository header, the object count is displayed as N/A. No
objects are displayed on the Objects tab.
 Note
Changing the default value only affects read operations on objects of the repository.
For the following operations, a changed value is ignored because the default value is required:
Pull operations (clone, pull, switch branch)
Other gCTS operations that require object comparison functions, such as the comparison of objects or branches.
For these operations, object calculation takes place, regardless of the parameter value.
 Note
Changing the value impacts all subsequent commits in the repository.
Related Information
VCS_OBJECT_INDEX
VCS_OBJECT_INDEX
De nes whether the result of the object calculation (object index) is written to the ABAP database for each commit.
See also: VCS_OBJECT_CALCULATION
The following values exist for VCS_OBJECT_INDEX:
Value
More Information
Full (default
gCTS writes ABAP workbench and Customizing objects to the object index.
value)
Workbench
gCTS writes only ABAP workbench objects to the object index.
Only
Disabled
No object index is generated. gCTS recalculates the objects every time a repository is accessed.
 Note
Changing the default value only affects read operations on objects of the repository.
For the following operations, a changed value is ignored because the default value is required:
Pull operations (clone, pull, switch branch)
This is custom documentation. For more information, please visit the SAP Help Portal
89
11/15/2023
Other gCTS operations that require object comparison functions, such as the comparison of objects or branches.
For these operations, object calculation and index creation take place, even if the parameters have different values.
 Note
Changing the value impacts all subsequent commits in the repository.
Parameters and Values of VCS_OBJECT_CALCULATION and
VCS_OBJECT_INDEX
To get the desired result, combine the values of the VCS_OBJECT_CALCULATION and VCS_OBJECT_INDEX parameters.
Note the following points:
In general, we recommend that you keep the default values unchanged. If you encounter performance issues for read
operations in large repositories, administrators can change the settings.
In the following situations, we recommend that you keep the default values:
You have a stable repository, for example where one commit per day arrives in the repository.
You have an average-sized repository with less than 1000 objects.
In the following situations, if you experience performance issues, administrators can change the default values:
If you have a large team and multiple commits arrive in the repository per day, for example one commit every 10
minutes, or every hour. In this case, gCTS would need to create a new index for each commit, which takes time.
If you have a large repository, and gCTS takes a long time to calculate the index and write it to the database.
In general, if you've set the VCS_OBJECT_CALCULATION parameter to Disabled, setting the VCS_OBJECT_INDEX
parameter is unnecessary, because no objects are calculated and the index value doesn't impact the outcome.
Parameters and Values of VCS_OBJECT_CALCULATION and VCS_OBJECT_INDEX
VCS_OBJECT_CALCULATION
VCS_OBJECT_INDEX
Full
Workbench Only
Disabled
gCTS calculates ABAP
gCTS calculates ABAP
gCTS doesn't calculate any
workbench and Customizing
workbench objects only and
objects and doesn't generate
objects and generates an
generates an index of all
an index. The object header
index of all objects. The object
objects. The object header
displays N/A as the object
header displays the number of
displays the number of
count, and no objects are
all objects in the local
workbench objects only, and
displayed on the Objects tab.
repository, and all objects are
only workbench objects are
displayed on the Objects tab.
displayed on the Objects tab.
Workbench
gCTS calculates ABAP
gCTS calculates ABAP
gCTS doesn't calculate any
Only
workbench and Customizing
workbench objects only and
objects and doesn't generate
objects and generates an
generates an index of only the
an index. The object header
index of only the workbench
workbench objects. The object
displays N/A as the object
objects. The object header
header displays the number of
count, and no objects are
displays the number of all
workbench objects, and only
displayed on the Objects tab.
objects, and all objects are
workbench objects are
displayed on the Objects tab.
displayed on the Objects tab.
Full
This is custom documentation. For more information, please visit the SAP Help Portal
90
11/15/2023
To display Customizing
objects, gCTS recalculates the
object information for each
commit.
Disabled
gCTS calculates ABAP
gCTS calculates ABAP
gCTS doesn't calculate any
workbench and Customizing
workbench objects only, and
objects and doesn't generate
objects, and doesn't generate
doesn't generate an index.
an index. The object header
an index. The object header
displays the number of all
objects, and all objects are
displayed on the Objects tab.
To display any objects, gCTS
recalculates the object
information when the
repository is accessed.
The object header displays
the number of workbench
objects, and only workbench
displays N/A as the object
count, and no objects are
displayed on the Objects tab.
objects are displayed on the
Objects tab.
To display the workbench
objects, gCTS recalculates the
object information when the
repository is accessed.
Disable Automatic Pull and Push
By default, when you release a transport request or a task that uses a gCTS-speci c transport layer, or when you use the
manual push function in the gCTS app, gCTS automatically pulls the latest changes from the remote Git repository from the
branch that is currently active in the system (without importing them in the ABAP system), creates a new local commit, and
pushes the commit to the remote repository.
Context
The default pull is required so that gCTS always has the current state of the remote repository in the local repository. The
changes of the new commit can then be pushed to the remote repository. This default behavior works well in a scenario where
one or more developers work in the same branch in the same ABAP system and don’t make changes in the remote repository.
However, if you work in a setup where it’s possible that changes are made to the same les in the same lines, con icts can occur.
To make sure that you get the chance to resolve the con icts, you must disable this automatic pull and push behavior by setting
speci c repository con guration parameters.
Procedure
1. In the gCTS app, select the repository for which you want to disable the automatic pull and push actions.
2. In this repository, go to the Con guration tab.
3. Choose Create.
4. Select the VCS_AUTOMATIC_PULL parameter from the dropdown list.
5. To disable an automatic pull from the remote repository when a new commit is created in the local repository, deselect
the checkbox.
6. Choose Save.
The parameter is added to the list with the value false .
7. Select the VCS_AUTOMATIC_PUSH parameter from the dropdown list.
8. To disable an automatic push to the remote repository when a new commit is created in the local repository, deselect the
checkbox.
9. Choose Save.
This is custom documentation. For more information, please visit the SAP Help Portal
91
11/15/2023
The parameter is added to the list with the value false .
Results
If both parameters have the value false , gCTS doesn’t automatically perform a pull before the commit is created and
automatically do a push to the remote repository after the commit is created. After releasing a transport request or task, the
objects that are part of the transport request are committed to the local repository and are displayed on the Objects tab. For
more information, see Use the Objects Tab of a Repository.
Related Information
Resolve Con icts
Con guration Parameters for Repositories
Use the Activities Tab of a Repository
The Activities tab contains a history of all activities that were performed in the local repository in reverse chronological order.
Context
All activities that have an impact on the local repository are tracked.
 Example
If, for example, a commit was pulled, it’s important to know that the repository moved from commit a21fa1 to commit
ef2a901 and that change request GITK... was used to import the object differences.
Procedure
1. In the gCTS app, in the Repository view, choose the Activities tab.
For each activity, the following information is displayed:
Column
More Information
From Commit and To
Information about the commits that were involved in the activity.
Commit
From Commit: Commit that was active before the activity was run.
To Commit: Commit that was active after the activity was run.
Type
The following activity types exist:
Switch Branch: Switch to a different repository branch with import to the local ABAP system
Clone: Initial clone of the repository
Commit: Commit to the local repository
Dependency: Con guration of a dependent repository
Deploy: Manual deployment (import) of objects to the local ABAP system
Merge: Merge activity
Prerequisite: Con guration of a prerequisite software component
Pull: Pull of a commit to the local repository with import to the local ABAP system
Branch
Branch in which the activity took place.
This is custom documentation. For more information, please visit the SAP Help Portal
92
11/15/2023
Column
More Information
Request
Change request or task that was used for the activity, displayed as a link.
This can be one of the following:
Change request or task released in the ABAP system
Change request generated by gCTS. It consists of the repository´s vSID and a generated hash
value.
If errors have occurred for the activity, the log of the request can contain more information about the
cause of the error. To open the log, select the link of the request.
Status
Aggregated export or import status of the request derived from the transport log.
Possible status values:
(Request was imported/exported)
(Warnings occurred during the import/export of request)
(Errors occurred during the import/export of request)
 Note
This status does not take into account the value of the VCS_IMPORT_ERROR_LEVEL parameter
that you can set to de ne the error level. For more information, see VCS_IMPORT_ERROR_LEVEL.
Called By
Name of the ABAP user who triggered the activity
Date
Date and the time when the activity was run
2. You can perform the following tasks:
Filter the list of activities by entering any character string in the Search eld and choosing
(Search).
Go to the commits in the remote repository on the Git server.
Open the log of the request by selecting the link of the request.
For activities that are displayed here and that are logged on the Log tab, an arrow ( ) is displayed at the end of
the row. To open the corresponding process on the Log tab, click anywhere in the row.
Related Information
Use the Log Tab of a Repository
Monitoring Transports
Use the Objects Tab of a Repository
The Objects tab contains an overview of the ABAP objects in the active branch of your local repository.
Prerequisites
If you want to display con icting les, you need to have disabled the default automatic pull and push behavior of gCTS.
For more information, see Disable Automatic Pull and Push.
Context
This is custom documentation. For more information, please visit the SAP Help Portal
93
11/15/2023
If you haven't set the parameters to disable the automatic pull and push behavior of gCTS, and you haven't manually pushed
objects yet, the objects in your local repository correspond to the objects of the current commit of the active branch in your
remote repository.
You can use the Objects tab to view the objects in the local repository, and run additional tasks.
 Note
Only ABAP objects are displayed on the Objects tab. Non-ABAP objects, such as the initial README le, or the gCTS
properties le aren't displayed.
Procedure
1. In the gCTS app, in the Repository view, choose the Objects tab.
2. This tab consists of the following sections where you can run tasks:
Section
Description
Available Actions
Current Objects
Displays the objects in your
Expand the object types to display the objects of this type. Expand
local repository, organized
any object to display the les that belong to the object.
by object type. An object
can consist of more than one
le.
Deploy
Use this function to deploy (import) either a speci c commit or the
last repository action to the local ABAP system.
For more information, see Manually Deploy Objects.
Push Objects
Use this function to manually add ABAP objects to a Git repository
that aren't part of the standard development work ow.
For more information, see Manually Push Objects.
Con icting Files
If you've disabled automatic
Click on the le name link to navigate to the con ict resolution editor.
pull and push, the les of
For more information, see Use the Con ict Resolution Editor.
the objects are displayed for
each con ict found.
All con icting les are also
displayed in the Tracked
Files section.
Local Files
(More) and Add to Index in the line of the le.
Use this function after you've resolved the con icts of this le to
indicate that the le is in a status that you want to commit and push.
As a result, the le is available for a commit to the local repository
and disappears from the list of con icting les.
Displays new or changed les in the ABAP system that aren't yet pushed to the remote repository.
Tracked
Displays the les that have
Files
already existed in the
remote repository and in the
local repository and were
now changed in the ABAP
system, but aren't yet
committed to the local
repository.
All les of the Con icting
Commit
Use this function to bundle all les that are displayed in the Tracked
Files section in a commit to the local repository. To do this, choose
Commit.
For more information, see Manually Commit Files.
Push (<number of commits that are available for a push to the
remote repository>)
Files section are also
Use this function to push the commits that are available for a push to
displayed here.
the remote repository on the Git server.
For more information, see Manually Push Local Commits.
This is custom documentation. For more information, please visit the SAP Help Portal
94
11/15/2023
Section
Description
Untracked
Displays the les that are
Files
new in the ABAP system and
that aren't committed to the
local repository.
Available Actions
(More) and Add to Index in the line of the le.
You can use this function to indicate that the le is now in a state that
you want to commit and push.
After using this function, the le is added to the list of Tracked Files.
Manually Deploy Objects
By manually deploying objects, you can import a speci c scope of objects in the local ABAP system.
Manually Push Objects
You can use this function to quickly transfer objects to the remote repository without interrupting the development
process.
Resolve Con icts
Con icts occur when two or more developers make different changes to the same line of the same le, or one developer
deletes a le, which another developer changed.
Use the Con ict Resolution Editor
gCTS offers a con ict resolution editor that allows you to view differences in various versions of the same le, and then
resolve those con icts.
Manually Commit Files
You can use this function to commit to the local repository all les that are displayed in the Tracked Files section of the
Objects tab.
Manually Push Local Commits
You can use this function to push all local commits to the remote repository.
Manually Deploy Objects
By manually deploying objects, you can import a speci c scope of objects in the local ABAP system.
Prerequisites
You have sufficient authorizations to import objects in the ABAP system.
Context
You can choose to import all objects that existed in the local repository at the point in time when the current commit was
created, or import the objects that were changed by the last action that was run in the repository.
This function can be useful in the following situations:
To import client-speci c Customizing objects in more than one client:
By default, gCTS can't import Customizing objects in multiple clients at once. You can use this function to import
Customizing data into more than one client.
For more information, see About Using gCTS for Customizing Data.
You want to reimport the result of a con ict resolution, and you haven´t used the option to reimport committed les
after con ict resolution:
For example, you've resolved a con ict and you don't want to import the result of the con ict resolution in the local ABAP
system immediately after committing the resolved les. However, an object was already locked in a change request at
This is custom documentation. For more information, please visit the SAP Help Portal
95
11/15/2023
the time of the import, so that the reimport would overwrite the locked version. Therefore, you want to import the result
of the con ict resolution later.
In error situations:
For example, you've pulled a commit from the remote repository, but the import failed. You can use this function to
repeat the import.
For object types that require a redeployment:
Some object types must be imported twice.
Procedure
1. In the gCTS app, in your repository, choose the Objects tab.
2. In the Current Objects section, choose Deploy.
3. In the Deploy Objects dialog box, select the deploy scope.
You have the following options:
Current Commit
Imports the complete list of objects that existed in the local repository at the point in time when the commit was
created. Note that this deploy scope doesn't only comprise the changed objects of the commit itself. Therefore,
the import can take some time.
You can check the current commit on the Commits tab.
Last Repository Action
Use this scope, for example, to import merged les after you've resolved a con ict and you've committed the les
without reimporting the objects.
The deploy scope only deploys the object difference between the From Commit and the To Commit of the action.
On the Activities tab, you can check which repository action was last executed.
4. Choose Deploy.
Before importing objects, gCTS checks whether any of the les that are to be imported during the action refers to
objects that are locked in an open change request. If objects to be imported are currently locked, they're displayed on a
dialog box. With the help of the list of locked objects, you can evaluate the impact of the import. An import will overwrite
locked versions in the ABAP system. It's a sensitive action that can result in data loss if objects are overwritten that
other users are currently working on.
5. If the Compare Object Differences dialog box is displayed and you want to proceed, con rm the dialog box.
Results
The objects of the current commit or the last repository action are imported in the local ABAP system.
A new Deploy action is displayed on the Activities tab. You can check the log of the generated request that's related to
this activity.
Manually Push Objects
You can use this function to quickly transfer objects to the remote repository without interrupting the development process.
This is custom documentation. For more information, please visit the SAP Help Portal
96
11/15/2023
Prerequisites
You have set credentials for your user. For more information, see Set User-Speci c Authentication.
Context
Sometimes manually pushing objects to the remote repository has advantages over using the default process, for example to
onboard an ABAP package to gCTS, or to push only parts of your developments without releasing a change request or a task.
The default process for pushing objects is to change objects in the ABAP system, record the changes in a request, and release
the request or task, when the changes are completed. Afterwards, the changed objects of the request or task are pushed to the
remote repository.
You can use the manual push function to manually transfer speci c objects to the remote repository, without interrupting the
development process. You can manually push both ABAP Repository objects and Customizing objects. For objects of the type
TABL (table de nition), you can select individual table entries (TABU) or all table entries for the push.
 Note
To enable a commit and push when a task is released, you must implement the CHECK_BEFORE_RELEASE method of the
CTS_REQUEST_CHECK Business Add-In (BAdI). For more information, see the blog in SAP Community: Create a commit in
Git when an ABAP task is released
.
You can use this function for the following scenarios:
To quickly test speci c changes in a test system.
To provide a new version of some objects to a development branch for your colleagues.
To onboard an existing ABAP project (for example, a package) with gCTS.
To push the initial state of the Customizing data that you want to have in your system.
To do this, you can manually push the content of all change requests with Customizing data to the remote repository.
Note that the manual push function only works for released change requests and tasks. In addition, if you don't use the
gCTS registry for Customizing requests, the request must have the vSID of the repository assigned as a target system.
Procedure
1. In the gCTS app, in your repository, choose the Objects tab.
2. In the Current Objects section, choose Push Objects.
3. In the Push Objects dialog box, in the input eld, enter any object name, package name, released change request, or task
of a released change request that contains objects that you want to push.
a. Start typing the name of the object, and then select the objects from the list.
 Note
To push all objects of a package, enter the package name and select the entry with the gCTS-speci c object
type FULL_PACKAGE. This is useful, for example, if you want to transfer an existing ABAP project to gCTS.
To push all objects of a released change request or a task, the gCTS-speci c object type is TRANSPORT.
4. Optional: For objects of type TABL, you can choose to push only individual table entries by choosing the
primary keys of table) icon.
(Display
The primary keys of the table are displayed. You have the following options:
This is custom documentation. For more information, please visit the SAP Help Portal
97
11/15/2023
You can enter single values in the primary keys elds to push only the table entries that you entered.
You can enter an asterisk (*) to push all table entries.
To return to the Push Objects dialog box, choose the back arrow ( ). You see that the object type has changed to TABU
(table entries).
5. Enter all the objects that you want to push, one after another. They’re put on the list in the dialog box.
6. Optional: To delete an object, select it and choose
(Delete).
7. Once you’ve entered all the objects that you want to push, enter a commit message in the corresponding eld.
If you don´t enter a commit message, the default commit message Direct push of x objects is generated.
8. By default, the Synchronous Push checkbox is selected.
 Recommendation
Leave this option selected.
Use the asynchronous push only to push a large set of objects. In this case, the gCTS observer job is used in the ABAP
system to run an asynchronous push process. This requires the user who scheduled the observer job to be a
collaborator in the remote repository.
9. Choose Push.
 Note
You don’t need to select the objects that you want to push. All objects displayed in the list are pushed.
10. Con rm that you want to push the objects.
Results
The push process is as follows:
1. By default, gCTS creates a change request of type Transport of copies, adds the objects that you want to push to the
object list, and automatically releases this request.
gCTS-speci c request attributes are assigned to the request. If you don't use the gCTS registry, one of the
attributes is SAP_SCTS_AVCS_TARGET. The value of this attribute is the repository ID of the repository to which
the objects were pushed.
Because the request is of type Transport of copies, no versions are created in the version database for these
objects.
2. After the request is released, the objects are rst committed to the local repository.
If you’ve selected a request, a task, or an object that comprises more than one object (for example, an ABAP
package), all objects that are part of the request, task, or package are committed to the local repository.
If the Synchronous Push checkbox is selected, and the automatic pull and push behavior isn't disabled in your
system, the objects are also directly pushed to the remote repository.
In this case, you can check the result of the push in the following places:
On the Objects tab:
The pushed objects are displayed in the Current Objects section.
On the Commits tab:
Because the push is shown as a separate activity, you nd the commit on the Commits tab.
This is custom documentation. For more information, please visit the SAP Help Portal
98
11/15/2023
The commit message contains the ID of the generated transport of copies and the commit message that
you entered. If you haven't entered a commit message, the generated text: Direct push of x objects is
displayed.
On the Activities tab:
The manual push is displayed as a separate activity. The request number that was created as a Transport
of Copies to perform the push is displayed in the Request column. To display the log of the request, select
the link.
In the remote repository:
On the Commits tab of your repository, choose the link to the commit in the remote repository. Check that
the objects are available in the repository.
If the default automatic pull and push process is disabled in your repository and if you've left the Synchronous
Push checkbox selected, the objects are only committed to the local repository without being pushed to the
remote repository. In this case, a Push button appears on the Objects tab that allows you to manually push the
local commits. For more information, see Disable Automatic Pull and Push and Manually Push Local Commits.
Resolve Con icts
Con icts occur when two or more developers make different changes to the same line of the same le, or one developer deletes
a le, which another developer changed.
Prerequisites
You have enabled con ict resolution. To do this, you've disabled gCTS’s automatic pull and push behavior. For more
information, see Disable Automatic Pull and Push.
A con ict le is displayed on the Objects tab under Con icting Files.
Context
Con icts can arise in many situations in Git. For example:
One branch is merged into another, and in both branches, changes were made to the same lines in the same les.
Changes are made to the same lines in the same les, both locally and in your remote Git repository.
For example, there are changes in the remote version of an object that you don’t want to overwrite by your new commit.
If gCTS’s automatic pull and push behavior is disabled, gCTS detects con icts in the affected les and displays them on the
Objects tab. You use the con ict resolution editor to resolve the con icts. Afterwards, you manually commit the changed les to
the local repository, and push them to the remote repository.
Procedure
1. On the Objects tab, under Con icting Files, select the link to the le where you want to resolve con icts.
The con ict resolution editor opens.
2. In the Merged Version panel, perform your con ict resolution.
To do this, you have the following options as described in the Use the Con ict Resolution Editor topic in the Con ict
Resolution Options table.
This is custom documentation. For more information, please visit the SAP Help Portal
99
11/15/2023
3. Once you’ve resolved all the con icts and you have a version of the le that you want to keep, you have the following
options as described in the Use the Con ict Resolution Editor topic in the Finish Con ict Resolution table.
4. To close the con ict resolution editor, choose Cancel.
5. Repeat the previous steps for all les that are displayed in the Con icting Files section.
If you've marked the con icts as resolved, the le disappears from the list of con icting les. It’s now displayed in the
Local Files section under Tracked Files.
If you've saved the con ict resolution, the le is still available under Con icting Files. If you still need to work on the
con ict resolution, return to the con ict resolution editor, and continue with step 3.
6. If you've completed the con ict resolution and you now want to commit and push the le, add it to the index of the local
repository.
Choose
(More) and Add to Index in the line of the le.
 Caution
Make sure that you’ve successfully removed the con icts. After you’ve added the le to the index of the local
repository, you can’t modify the con ict resolution for this le. The con ict resolution editor is no longer available. To
discard the local changes introduced with the con ict resolution, you can reset the local repository. For more
information, see Reset Local Repository.
 Note
gCTS doesn’t perform checks on the source code. However, we recommend that you have a CI process in place that
triggers a pipeline to test your changes whenever objects are pushed. For more information, see Integration of gCTS
in CI Pipelines.
7. To commit the les to the local repository, in the Local Files section, choose Commit.
Enter a commit message, and decide whether you want to reimport the committed les to the local ABAP system.
For more information, see Manually Commit Files.
 Caution
The system allows you to commit con icting les without resolving the con icts beforehand. Make sure that you
resolve all con icts before committing les that have con icts.
A Push button appears.
 Note
If the Push button isn’t active, this means that a new commit exists in the remote repository that wasn’t yet pulled to
the local repository. First pull this commit to your local repository. To do this, choose Update to Latest Commit on the
Commits tab.
8. To push all local commits to the remote repository, choose Push, and then con rm this in the subsequent dialog box.
For more information, see Manually Push Local Commits.
Results
You've resolved a con ict and pushed the result of the con ict resolution to the remote repository. If you've selected the option
to reimport the committed les, the result of the con ict resolution is reimported in the local ABAP system.
Related Information
Blog post: Con ict Resolution with gCTS
This is custom documentation. For more information, please visit the SAP Help Portal
100
11/15/2023
Use the Con ict Resolution Editor
gCTS offers a con ict resolution editor that allows you to view differences in various versions of the same le, and then resolve
those con icts.
Prerequisites
You've disabled gCTS’s automatic pull and push behavior. For more information, see Disable Automatic Pull and Push.
Con icting les are displayed on the Objects tab.
You have experience with merging in Git.
Context
The con ict resolution editor is opened when you select the link of a con icting le.
It displays three versions of a con icting le in three panels:
Local Version
This panel displays the version of the object as it's available in the database of the ABAP system. This version of the le
can contain changes to the object that were introduced after the object was committed to the local repository. This
means that an open change request can still exist in your ABAP system and contain this object in the displayed version.
The content of the le in the Local Version can be different from the version that was committed to the local repository.
Make sure you’re aware that there can be a difference between the Local Version and the version that was committed
to the local repository.
Check the content in the Local Version panel, to verify whether it's necessary to integrate these changes into the con ict
resolution too.
You can’t edit the content in this panel.
Merged Version
This panel displays a merged version of the version of the le that was committed to the local repository and the remote
version of it. That is, the panel displays the merged version between the local commit and the remote commit. The
merged version contains con ict markers indicating the location of the con ict in this le. In the con ict markers, the
content of the local and the remote le is displayed.
The format is as follows: <<<<<<<HEAD <content of local file ========= content of remote file>
>>>>>>> branch <branch name> of <URL of repository>.
In the Merged Version panel, you perform your con ict resolution.
You can edit the content in this panel.
 Note
If you've changed the object after the object was committed to the local repository, the content in the Merged
Version panel doesn’t show the merged version between the Local Version and the Remote Version panel. Instead, it
shows the merged version between the version that was committed to the local repository and the remote version.
Remote Version
This panel displays the remote version of the le. This is the version that currently exists in the remote repository on the
Git server for the current commit of the local repository in the active branch.
This is custom documentation. For more information, please visit the SAP Help Portal
101
11/15/2023
You can’t manually edit the content in this panel, but you can select to display the version of a speci c branch and
commit.
 Note
For le types that aren’t directly related to the object, for example, for nametab, or properties les, the three-version
comparison isn’t available. These are displayed in the Merged Version panel only.
For repositories on Git servers other than GitHub, it's possible that gCTS can’t retrieve the local or the remote versions of a
le. In this case, a message is displayed. For an overview of known restrictions for Git servers other than GitHub, see SAP
Note 2821718
.
Procedure
1. In the Objects tab, under Con icting Files, select the link to the le for which you want to open the con ict resolution
editor.
2. In the con ict resolution editor, you can see how many con icts there are in your le. You have the following options:
Conflict Resolution Options
Function
Description
Con ict Files
If multiple con icting les exist, use this function to open another le.
Accept Local
The version of the le that is displayed in the Local Version panel is copied to the Merged
Version panel.
Accept Remote
The version of the le that is displayed in the Remote Version panel is copied to the Merged
Version panel.
(Scroll individually) /
(Scroll synchronously)
(Settings)
Enables/disables individual or synchronous scrolling in the three panels.
By default, three panels are displayed. You can choose to hide the panel of either the local or
remote version, or both.
(Show version in fullscreen mode)
Opens the le version in full-screen mode. Only the merged version can be edited.
Available in the Merged
Goes to the next/previous con ict.
Version panel: (navigation-
down-arrow) /
up-arrow)
(navigation-
Double-click on a con ict
Opens a dialog box with the following con ict resolution options:
header line (<<<<<<< HEAD)
Accept Current Changes: The version of the le that was committed to the local
repository is retained in the Merged Version panel.
Accept Incoming Changes: The version of the le that is displayed in the Remote
Version panel is retained in the Merged Version panel.
Accept Both Changes: Both the version that was committed to the local repository and
the Remote Version are retained in the Merged Version panel.
Cancel: Closes the dialog box without any changes.
Available in the Remote
If the repository has multiple branches, this option allows you to select another branch from the
Version panel: Branch
list.
dropdown box
This is custom documentation. For more information, please visit the SAP Help Portal
102
11/15/2023
Function
Description
Available in the Remote
If you've selected a branch, this option allows you to select a remote commit.
Version panel: Commit
dropdown box
(Show con icts)
Opens a dialog box that indicates in which lines the con icts occur.
3. After you’ve worked on resolving the con icts, you have the following options:
Finish Conflict Resolution
Function
Description
Save
Saves the le in the current state of con ict resolution.
This is useful, if you’ve started resolving a con ict, and you want to return to the con ict resolution at
later.
Mark As Resolved
If you’ve resolved all con icts, use this function to add the le to the index of the local repository.
 Note
You can only use this function after you’ve resolved all con icts.
As a result, you’re asked to con rm that you want to save the le and add it to the index of the local
repository. As such, you indicate that the le is now in a state that you want to commit.
 Caution
Make sure that you’ve successfully removed the con icts. After you’ve added the le to the index of
the local repository, you can’t modify the con ict resolution for this le. The con ict resolution editor
is no longer available. If you need to redo the con ict resolution, you can reset the repository. For
more information, see Reset Local Repository.
 Note
gCTS doesn’t perform checks on the source code. However, we recommend that you have a CI
process in place that triggers a pipeline to test your changes whenever objects are pushed. For more
information, see Integration of gCTS in CI Pipelines.
Cancel
Closes the con ict resolution editor and returns to the Objects tab.
Manually Commit Files
You can use this function to commit to the local repository all les that are displayed in the Tracked Files section of the Objects
tab.
Prerequisites
There are les available for a commit to the local repository. The Commit button is displayed only when there are les to
commit. This can occur in the following situations:
You've disabled the automatic pull and push behavior of gCTS.
You've encountered a con ict, resolved it, and added the le to the index of the local repository.
Context
This is custom documentation. For more information, please visit the SAP Help Portal
103
11/15/2023
Note that this function commits all les available in the Tracked Files section of the Objects tab to the local repository on the
ABAP system. You can’t select individual les and commit only the selected les. Filtering the list using the Search function
doesn’t limit the number of les that are committed either.
On the next dialog box, you can select whether you want to reimport the les to the local ABAP system after committing them.
This function is useful, for example, if you've resolved con icts, and the version of the resolved les differ from the versions in
the local ABAP system. Committing and pushing the les to the remote repository doesn't automatically change the versions in
the local development system. If you want to have the resolved versions also in the development system, select the
corresponding checkbox.
Before importing objects, gCTS checks whether any of the les that are to be imported during the action refers to objects that
are locked in an open change request. If objects to be imported are currently locked, they're displayed on a dialog box. With the
help of the list of locked objects, you can evaluate the impact of the import. An import will overwrite locked versions in the ABAP
system. It's a sensitive action that can result in data loss if objects are overwritten that other users are currently working on.
If you choose not to import a le immediately after committing it, you can do it later using the Deploy function. For more
information, see Manually Deploy Objects.
 Caution
If you commit les after you’ve resolved a con ict, make sure that all con icts in the les listed under Con icting Files are
resolved.
Procedure
1. In the gCTS app, in your repository, choose the Objects tab.
2. In the Tracked Files section, choose Commit.
3. In the subsequent dialog, enter a commit message, and choose Commit.
A dialog box opens that allows you to select whether you want to import the les to the local ABAP system. By default,
the Reimport committed les checkbox isn't selected.
4. Analyze for your situation for whether you want to reimport the committed les.
If the les to be committed relate to objects that are currently locked in the system, the objects are also displayed on
the dialog box together with the owner of the transport.
5. If you want to reimport the committed les, select the checkbox.
6. Choose Commit.
Results
All les that were displayed under Tracked Files are committed to the local repository (on the le system). A toast
message con rms this.
All committed les are combined in a commit. They disappear from the list of Tracked Files because they’re now
committed to the local repository.
To display the new local commit, go to the Commits tab, and choose the local branch from the dropdown box. Note,
however, that the link to the commit doesn't work as long as the commit wasn't pushed to the remote repository.
Check on the Log tab that a COMMIT action has been logged with a green status.
If you've selected the Reimport committed les checkbox, the commit was used to redeploy the objects on the ABAP
system. A toast message con rms the import. You can check on the Log tab that a DEPLOY process has been logged
with a green status. In addition, on the Activities tab, the log of the generated change request for the Deploy activity
also contains information about the import.
This is custom documentation. For more information, please visit the SAP Help Portal
104
11/15/2023
The Commit button disappears, and a Push button appears.
Next Steps
Manually Push Local Commits
Manually Push Local Commits
You can use this function to push all local commits to the remote repository.
Prerequisites
There are local commits available for a push to the remote repository. The Push button is displayed only when there are
commits that can be pushed. This can occur in the following situations:
You've disabled the automatic pull and push behavior of gCTS.
You've manually committed les to the local repository. See Manually Commit Files.
You've released a transport in the development system, which resulted in a local commit. The automatic push to the
remote repository failed, for example because of insufficient authorization.
Context
After you’ve committed les to the local repository, they’re available for the push to the remote repository. The Push button
contains the number of commits that will be pushed - in brackets (), for example, (2). This is the number of commits by which
the local repository is ahead of the remote repository.
 Note
To check which local commits are currently available for a push to the remote repository, on the Commits tab, select the
active local branch from the dropdown box.
Procedure
1. In the gCTS app, in your repository, go to the Objects tab.
2. In the Tracked Files section, choose Push.
3. Con rm that you want to push the objects.
Results
All local commits are pushed to the remote repository. A toast message indicates this.
To check this, you have the following options:
On the Commits tab, verify that a new commit has been created. From there, you can go to the remote
repository.
On the Log tab, check that the PUSH action has been logged with a green status.
The Push button is no longer available under Tracked Files.
This is custom documentation. For more information, please visit the SAP Help Portal
105
11/15/2023
Related Information
Use the Log Tab of a Repository
Use the Branches Tab of a Repository
The Branches tab provides an overview of the branches of a repository. You can create new branches, compare the object
differences between a selected branch and the active branch, switch to selected branches, merge branches, and delete existing
branches.
Prerequisites
You have a good knowledge about branching in Git. Knowing how to merge branches is especially important. The gCTS
app doesn’t issue any warnings, for example, if a branch that you want to merge, isn’t on the latest commit.
For more information, refer to the relevant sections in References to Git Documentation.
Context
To support different release versions of the software of one repository, you can create additional branches in the repository. This
allows you to perform maintenance for older release versions, and to reorganize the repository, such as split it or move a
package from one repository to another. Branching also lets you change the repository during its lifecycle. In the development
phase, you work in one repository branch, for example, the feature branch. After the initial release of the software, you can
create a release branch for the delivered state, and use the feature branch for ongoing development.
The branch that is active in the local repository is displayed in the Branch eld in the header of the Repository view. The
commits of the active branch are displayed in the commits list on the Commits tab. From the branches dropdown list, you can
select any local or remote branch that exists in this repository and display the respective commits of the selected branch
version.
The Branches tab of a repository contains a list of branches that exist in this repository. For each branch, information is
displayed about whether the branch is available in the remote repository, or in the local repository, or both. The branch that
you’re currently working on is set to active .
After the repository is created on the ABAP system, it contains a default branch. After the repository is cloned to the ABAP
system, the default branch of the remote repository is set to active .
Procedure
1. In the gCTS app, in the Repository view, choose the Branches tab.
2. On the Branches tab, you can do various tasks.
Create Branches in a Repository
To support different release versions of the software of one repository, you can create additional branches in the
repository.
Compare Branches of a Repository
To nd out the object differences between a selected branch and the active branch, you can use this function.
Switch the Branch of a Repository
By switching the branch of a repository on the ABAP system, the source code differences between the latest commit of
the selected branch and the branch that was previously active are imported in the system.
Merge Branches of a Repository
This is custom documentation. For more information, please visit the SAP Help Portal
106
11/15/2023
By merging a branch into another branch, the developments of the two branches are combined into one.
Delete Branches of a Repository
If you no longer need a branch, for example after merging a correction branch into a release branch, you can delete it.
Create Branches in a Repository
To support different release versions of the software of one repository, you can create additional branches in the repository.
Prerequisites
You're in the gCTS app, on the Branches tab of a repository.
Procedure
1. To create a new branch based on the currently active branch in the system, choose Create.
2. In the dialog box, enter the Name of the new branch.
3. Select the Type of the new branch:
Remote: Creates the branch on the ABAP system and transfers it immediately to the remote Git repository.
This is the default option.
Local: Creates the branch only on the ABAP system.
4. Choose Create.
Results
A new branch is created and automatically set as the active branch. If you've created a remote branch, it's also available in the
remote repository.
Creating a branch is logged as a CREATE_BRANCH process. You can nd details on the Log tab.
Compare Branches of a Repository
To nd out the object differences between a selected branch and the active branch, you can use this function.
Prerequisites
You're in the gCTS app, on the Branches tab of a repository.
Context
 Recommendation
Use this function before you merge a branch into another one.
Procedure
In the line of the branch that you want to compare with the active branch, choose
(Compare selected branch with active
branch.).
This is custom documentation. For more information, please visit the SAP Help Portal
107
11/15/2023
Results
If the branches exist in both the remote and the local repository, the system compares the objects in the remote repository. If a
branch exists in the local repository only, the objects in the local repository are used for the comparison.
As a result, the system displays the objects that differ between the two branches and the type of the change (object is created,
deleted, or modi ed).
 Restriction
This function does not show detailed changes in objects. For in-depth comparison, use the speci c branch comparison
function offered by your Git provider.
Switch the Branch of a Repository
By switching the branch of a repository on the ABAP system, the source code differences between the latest commit of the
selected branch and the branch that was previously active are imported in the system.
Prerequisites
You're in the gCTS app, on the Branches tab of a repository.
Procedure
1. Optional: To nd out which objects are affected when switching the branch, use the
active branch.) function.
(Compare selected branch with
2. To switch the branch, choose (Branch of local repository will be switched to selected branch (object difference will be
imported depending on con guration).) in the row of the branch that you want to switch to.
The following con guration parameters can in uence this action:
VCS_NO_IMPORT
VCS_BUFFER_ONLY
For more information, see Con guration Parameters for Repositories.
 Note
You can choose to run the task as a background job. To do this, select the dropdown arrow ( ) next to the
(Branch
of local repository will be switched to selected branch (object difference will be imported depending on
con guration).) icon and choose
Run in Background. For more information, see Schedule Background Jobs for gCTS
Activities.
Before importing objects, gCTS checks whether any of the les that are to be imported during the action refers to
objects that are locked in an open change request. If objects to be imported are currently locked, they're displayed on a
dialog box. With the help of the list of locked objects, you can evaluate the impact of the import. An import will overwrite
locked versions in the ABAP system. It's a sensitive action that can result in data loss if objects are overwritten that
other users are currently working on.
3. If the Compare Object Differences dialog box is displayed and you want to proceed, con rm the dialog box.
4. Con rm that you want to switch to the selected branch.
Results
This is custom documentation. For more information, please visit the SAP Help Portal
108
11/15/2023
When the branch was switched, this has the following results:
The switched branch is set as the Active branch.
The latest commit of the branch is now the current commit.
If not prevented by parameters or locked objects, the changed objects were imported in the ABAP system.
Switching the branch is logged in the following places:
As a Switch Branch activity on the Activities tab.
If objects were imported by the Switch Branch activity, you can nd a log of the change request that was created
for the import.
As a SWITCH_BRANCH process on the Log tab.
Merge Branches of a Repository
By merging a branch into another branch, the developments of the two branches are combined into one.
Prerequisites
You're in the gCTS app, on the Branches tab of a repository.
Procedure
1. Optional: If you want to see whether there will be any con icts as a result of the merge action before actually running it,
use the (Compare selected branch with active branch.) function before running the merge.
Con icts occur if the same objects were changed both in the local repository of the selected branch and in the active
branch of the repository into which you want to merge the selected branch.
2. To merge a branch into the active branch, choose (Selected branch will be merged into active branch of local
repository) in the row of the branch that you want to merge into the active one.
3. If necessary, select a Merge Strategy and a Fast Forward Option.
These options allow you to customize the merge process.
The following merge strategies are available:
Recursive (Default)
Resolve
Ours
Theirs
The following fast forward options are available:
Fast Forward (Default)
Fast Forward Only
No Fast Forward
For more information about merge strategies and merge options in Git, refer to Git merging.
 Recommendation
In general, we recommend that you leave the default options selected.
This is custom documentation. For more information, please visit the SAP Help Portal
109
11/15/2023
4. Choose Merge Branch.
5. Con rm the dialog box.
If no con icts occur, the selected branch is immediately merged into the active branch. The affected commits are
not pushed to the remote repository.
If con icts occur, and gCTS can automatically resolve the con ict, a merge commit is created. The affected
commits and the merge commit are not pushed to the remote repository.
If con icts occur, and gCTS cannot automatically resolve the con ict, an error message is displayed notifying you
about the con ict.
6. Optional: On the Objects tab, resolve any con icts, if necessary.
For more information, see Resolve Con icts.
7. To push the commits affected by the merge activity to the remote repository, choose Push.
Results
Merging branches has the following results:
On the Commits tab, the merged commits are displayed as part of the active branch, including the merge commit. The
merge commit has the generated text: Merge commit '<Commit ID of the latest commit in the branch that you want to
merge into the active one>' into <active branch>'.
Merging a branch is logged in the following places:
As a Merge activity on the Activities tab. The name of the active branch is displayed in the Branch column.
As a MERGE process on the Log tab.
Delete Branches of a Repository
If you no longer need a branch, for example after merging a correction branch into a release branch, you can delete it.
Prerequisites
You're in the gCTS app, on the Branches tab of a repository.
Procedure
In the line of the branch that you want to delete, choose
(Selected branch will be deleted.).
 Note
Active branches can't be deleted.
Results
The branch is deleted from the local repository.
If the deleted branch also existed in the remote repository, it’s deleted there as well.
Deleting a branch is logged as a DELETE_BRANCH process on the Log tab.
This is custom documentation. For more information, please visit the SAP Help Portal
110
11/15/2023
Use the Log Tab of a Repository
gCTS logs all actions that are performed for a speci c repository.
Context
Use the Log tab to view logs of actions that have been done on a repository.
Procedure
1. In the gCTS app, in the Repository view, choose the Log tab.
A list of log IDs, each ID corresponding to a process that was performed in this repository, are displayed in reverse
chronological order.
For each process, status icons are displayed. The following statuses exist:
Green
Red
(Action was completed)
(Errors occurred during the action)
The following statuses exist for scheduled actions:
Blue
(Action is scheduled)
Blue
(Scheduled action was run)
Green
(Scheduled action was nished)
2. Click anywhere in the line of a process to go to the detail log display.
A new dialog opens that contains detailed information about the different steps of the process.
3. You can display logs of different applications:
gCTS
Logs that were raised in the gCTS app.
 Note
If the error messages displayed here don´t provide sufficient information about the cause of an error, you can
use the application log in the ABAP system to get more information. To do this, proceed as follows:
a. Start transaction SLG1.
b. As Object, enter CTS.
c. As Subobject, enter ABAPVCS.
d. To restrict the number of results, select a speci c time frame.
e. Choose Execute.
For more information, choose Analyze Logs.
Transport Tools
Log of the transport tool tp. For more information about tp logs and return codes, see How tp Works.
 Note
For more information about the cause of an error, check also the TMS Alerts in the ABAP system in
transaction STMS. Choose
Monitor
TMS Alerts
TMS Alert Viewer .
This is custom documentation. For more information, please visit the SAP Help Portal
111
11/15/2023
Git Client
Log of the Git client abap2vcs.jar
When you open this log, the application log of the Git client, the Java application abap2vcs.jar, is displayed.
Using the dropdown menu, you can display the following information:
Parameters: Parameters of the action.
Response: Response le of the Git client.
Stack Log: Errors of the response le. This section contains only data, if errors occur.
If there's an error icon for any action, open the detail display of the log. The Git client log displays a red [ERROR] line
with more information about the cause of the error.
The error message is also displayed, if you select
Response
log
message .
4. To close the log, choose Close.
Use the Registry Tab of a Repository
The Registry tab provides an overview of the objects of the current repository that have been registered in the gCTS registry.
You can also use it to register new objects in the gCTS registry.
Prerequisites
You're familiar with the concepts of the gCTS registry.
For more information, see gCTS Registry.
The gCTS registry is con gured in the ABAP system.
The Registry tab is available only if the registry is con gured. For more information, see Con gure the gCTS Registry.
You have the authorizations required to use the Registry tab.
Procedure
1. In the gCTS app, in the Repository view, go to the Registry tab.
2. On the Registry tab, you can do various tasks.
Register Git Repositories in the gCTS Registry
Before you can register ABAP objects in the gCTS registry, you must register the Git repository to which you want to
assign the objects.
Register ABAP Objects in the gCTS Registry
By registering ABAP objects in the gCTS registry, you assign them to a Git repository.
Display and Change Repository Details in the gCTS Registry
You can display and change the details of a registered repository, as well as register additional branches of the
repository.
Register Git Repositories in the gCTS Registry
This is custom documentation. For more information, please visit the SAP Help Portal
112
11/15/2023
Before you can register ABAP objects in the gCTS registry, you must register the Git repository to which you want to assign the
objects.
Procedure
1. In the gCTS app, in the Repository view, go to the Registry tab.
The rst time you open the Registry tab in the Repository view, the system tells you that the repository isn't yet
registered in the registry.
2. Choose Register Repository.
3. Select the type under which you want to register the repository.
The following types are available:
Distributed Development
This is the default type.
Code Review
Only use this type, when you don't want to import the registered objects in any other system.
4. Choose Save.
The repository is registered in the gCTS registry.
Next Steps
Register ABAP Objects in the gCTS Registry
Register ABAP Objects in the gCTS Registry
By registering ABAP objects in the gCTS registry, you assign them to a Git repository.
Prerequisites
You've registered the repository for which you want to register objects as described under Register Git Repositories in the gCTS
Registry.
Procedure
1. In the gCTS app, in the Repository view, choose the Registry tab.
2. Choose Register Object.
3. In the Register Object dialog box, enter the name of the object that you want to register.
You can enter the name of an individual object, a package, or a change request or a task.
4. If you select an object, the object type is automatically entered.
As a preparation step, you can also register an object that isn't yet created, if you plan to create it later. In this case,
make sure you enter the correct object type and the correct name that you plan to use for the object. Note that the
system doesn't check that the object type is valid.
 Note
You can nd the list of valid object types, for example, in the request editor of any change request. On the Objects
tab, in the Object Type column, choose the input help. gCTS supports all objects of the program ID: R3TR.
This is custom documentation. For more information, please visit the SAP Help Portal
113
11/15/2023
You can register all objects of a package by entering the name of the package and selecting the special object type
FULL_PACKAGE. All objects are registered that are part of the package at the time of the registration. This is useful if
you want to transfer an existing ABAP project to gCTS for example. Note that you must register additional objects of the
package individually when you create them later.
If you enter a request or a task, the corresponding gCTS-speci c object type is TRANSPORT.
5. Optional: For objects of type TABL, you can choose to register only individual table entries by choosing De ne Table
Content.
The object type changes to TABU. The primary keys of the table are displayed. You've the following options:
You can enter single values in the primary keys elds to register only the table entries that you entered.
You can enter an asterisk (*) to register all table entries.
 Caution
If you don't enter any values for individual table entries here, individual table entries (TABU) without any value will be
registered. If you want to register the table object (TABL), manually change the object type back to TABL.
6. Choose Register.
Results
If you entered an individual object, it's registered in the gCTS registry.
If you've entered an object of the type FULL_PACKAGE, all objects that are currently part of the package are registered
as individual objects. The package entry itself is registered with the object type DEVC.
If you've entered an object of type TRANSPORT, all objects that are currently part of the request or task are registered
as individual objects.
If you've registered table content, an additional icon
(Display Table Content) is displayed in the object row. To display
the table content, choose the icon.
To unregister an object, choose
(Unregister Object) in the object row.
Display and Change Repository Details in the gCTS Registry
You can display and change the details of a registered repository, as well as register additional branches of the repository.
Procedure
1. In the gCTS app, in the Repository view, choose the Registry tab.
2. Choose Registry Details.
The details of the current repository are displayed:
URL to the remote Git repository
ABAP user that registered the repository
Registration date and time
Selected type of registry entry for the repository
3. Optional: To change the type, select another type from the dropdown list next to the Type eld.
4. Optional: Register speci c branches of the repository in the gCTS registry.
This is custom documentation. For more information, please visit the SAP Help Portal
114
11/15/2023
By default, when the rst object of a repository is registered, the active branch is automatically registered. If you work
with multiple branches, you can register additional branches, if necessary. For example, you can register a new
maintenance branch after you've created it, and then continue to work in the feature branch for your ongoing
development.
Only register additional branches, if necessary.
a. To register a branch, choose Register Branch.
b. Select the branch, and save your change.
5. Optional: Display the details of a registered branch.
To do this, click anywhere in the branch row.
6. Optional: To unregister a branch from the gCTS registry, display the branch details, and choose Unregister Branch.
7. Optional: To unregister a repository from the gCTS registry, choose Unregister.
Related Information
gCTS Registry
Use the Properties Tab of a Repository
On the Properties tab of a repository, you can set dependencies and prerequisites of the repository, and change its default
layout properties.
Prerequisites
You've created and cloned a Git repository to the ABAP system. For more information, see Clone the Remote Git
Repository to the ABAP System.
Procedure
1. In the gCTS app, in the Repository view, choose the Properties tab.
2. This tab consists of sections where you can do verious tasks.
Use the Dependencies Section of the Properties Tab
The Dependencies section of the Properties tab allows you to manage dependencies of a repository.
Set Prerequisites of a Repository
You can set prerequisites for cloning a repository.
Set the Repository Layout
You can display the layout properties of a repository, and change them if necessary.
Use the Dependencies Section of the Properties Tab
The Dependencies section of the Properties tab allows you to manage dependencies of a repository.
Prerequisites
You're in the gCTS app, on the Properties tab of a repository.
This is custom documentation. For more information, please visit the SAP Help Portal
115
11/15/2023
Context
Projects that are stored in a particular repository may depend on projects in other repositories. If you want to deploy one of
your repositories to a target system (for example, the test system), it may be required that the content of another repository is
also available on the target system. Before cloning the repository to the ABAP system, the dependent repository must have
been cloned to the ABAP system. To ensure this, on the development system, you can set dependencies of your repository to
other repositories.
 Note
Currently, gCTS does not enforce dependent repositories to be cloned before cloning the current repository. Before cloning a
repository to a target system, check on the Properties tab to nd out whether the cloned repository has dependencies. If
there are dependencies, clone the dependent repositories before you clone the current one.
Procedure
1. On the Properties tab, go to the Dependencies section.
All dependencies of the current repository are displayed on a canvas. The current repository is displayed as a node, along
with the number of direct dependencies. If the current repository has a version, its current version is also displayed. If
dependencies exist, they are represented as nodes connected by lines. Dependent repositories are displayed with their
dependency status and the expected version.
The following statuses exist for dependencies:
ok
incompatible
missing
cyclic
unknown
2. In the Dependencies section, you can do various tasks:
Task
Function in
Description
the gCTS
App
Create new
Create
For more information, see Set Dependencies of a Repository.
Delete
This deletes the dependency. The dependent repository isn't deleted from the system. If you
dependencies.
Delete an
existing
don't need it for other purposes, delete it manually.
dependency.
Expand all
Deleting a dependency creates a new commit.
Expand All
dependencies of
Select a repository node to expand all dependencies (direct dependencies and subdependencies).
the selected
repository.
Refresh
dependency
data.
(Refresh) |
(Empty
Cache and
Refresh)
If you experience refresh issues after creating or deleting dependencies, use the dropdown
arrow ( ) next to the
(Refresh) icon to access the
(Empty Cache and Refresh) function.
This is custom documentation. For more information, please visit the SAP Help Portal
116
11/15/2023
Task
Function in
Description
the gCTS
App
Display the
(Legend)
The legend explains the colors used for the repository nodes on the canvas.
legend.
 Note
The legend only explains visible elements.
The following colors exist:
Blue: Current Repository
Green: Dependency is OK
Yellow: Dependency with Warning
Red: Dependency with Error
3. Using the icons next to a selected repository node, you have the following options.
Option
Description
If the current repository has dependencies that are currently not displayed, an information
(Expand/Collapse)
(Collapsed)
icon in the top left of the node indicates this. To expand the dependencies, select the repository and choose
(Expand/Collapse).
(Details)
Display dependency-relevant information about the selected repository.
(Links)
Display links to the repository.
Use the Open on Git Server link to open the remote repository.
Use the Open in gCTS App link to open the local repository in the Repository view of the gCTS app.
(Delete)
Delete a dependency from the current repository.
Set Dependencies of a Repository
You can set dependencies to other repositories that your repository depends on.
Set Dependencies of a Repository
You can set dependencies to other repositories that your repository depends on.
Prerequisites
For the code in your Git repository to work correctly, another repository must exist on the system. You want to use gCTS
to model the dependency.
You're in the gCTS app on the Properties tab of a repository.
Context
When setting dependencies, note the following points:
This is custom documentation. For more information, please visit the SAP Help Portal
117
11/15/2023
We recommend setting a dependency to a speci c version of a repository to ensure stability. In gCTS, you can use tags to
create versions. Setting a dependency to a tagged state of a repository helps ensuring stability.
For more information, see About Versions of Repositories in gCTS.
We recommend setting dependencies on development systems where the repository exists in the required version.
Avoid creating cyclic dependencies. gCTS detects and displays cyclic dependencies, but it doesn't prevent their creation.
If the repository has multiple branches, you set the dependency for the active branch of the repository.
Procedure
1. In the Dependencies section, choose Create.
2. In the dialog box, enter or select the following details:
Field
Description
Repository
Select the repository to which you want to set a dependency.
Once you've made a selection, the corresponding URL is displayed as a link.
Option
Select one of the following dependency options:
Version (default)
Branch
Commit
Version
By default, any version of the dependent repository is set as validity of the dependent repository. You can
further specify accepted versions of the dependent repository using the following operators:
Greater Than
Greater Than or Equal To
Equal To
Lower Than or Equal To
Lower Than
To specify a version, use the semantic versioning format.
 Example
1.1.0
v1.0.3
For more information, see https://semver.org/
.
If you use the Equal To operator, you can specify acceptable version ranges using x as placeholder.
 Example
1.x.x
v1.0.x
This is custom documentation. For more information, please visit the SAP Help Portal
118
11/15/2023
Field
Description
Branch
Use this option to specify a certain branch of a repository as a dependency.
You can select all branches of the dependent repository from the dropdown menu.
 Note
If you select a branch that isn't the active branch of the repository, the status of the dependency is set
as missing.
Commit
Use this option to restrict the validity of the dependent repository to a speci c commit.
You can select a branch of the dependent repository from the dropdown menu. And then enter an existing
commit.
Results
The dependent repository is displayed on the canvas in the Dependencies section.
A new commit is created with a generated text Add dependency for repository <repository name>. You can check it on
the Commits tab.
On the Activities tab, a new Dependency activity is displayed.
On the Log tab, you can check the log of the corresponding COMMIT process.
The dependencies key and value property is added to the .gcts.properties.json le in the remote repository.
 Caution
When the repository is cloned to a target system, gCTS doesn't issue any noti cation that the dependent repositories must
be imported beforehand. For more information, see Use the Dependencies Section of the Properties Tab.
Related Information
The gCTS Properties File
Set Prerequisites of a Repository
You can set prerequisites for cloning a repository.
Prerequisites
You're in the gCTS app, on the Properties tab of a repository.
Context
You can de ne that a speci c minimum software component version must be installed in the ABAP system as a prerequisite for
cloning the repository to another system.
If the repository has multiple branches, you set the prerequisite for the active branch of the repository.
This is custom documentation. For more information, please visit the SAP Help Portal
119
11/15/2023
Procedure
1. In the Prerequisites section of the Properties tab, choose Create Prerequisite.
2. In the dialog box, enter the following details:
Field
Description
Component
Software component
Example: SAP_BASIS
Release
Release of the software component
Example: 757
Support Package
Speci c Support Package of the software component release
Example: 00
Results
Adding the prerequisite has the following results:
A new commit is created. You can check it on the Commits tab.
The prerequisite is displayed in the Prerequisites section on the Properties tab.
The prerequisites key and value property are added to the .gcts.properties.json le in the remote repository.
If the repository is cloned to another ABAP system, the prerequisite is checked. If the speci ed version of the software
component, or a higher version, isn't installed in the system, gCTS doesn´t clone the repository.
Related Information
The gCTS Properties File
Set the Repository Layout
You can display the layout properties of a repository, and change them if necessary.
Prerequisites
You're in the gCTS app, on the Properties tab of a repository.
Your repository is of the type Development.
 Caution
It’s possible to change the layout for repositories of the type Provided too. However, do this only to align the layout
with the Development repository and to make sure that the layout is the same in all ABAP systems that use the
repository.
Apart from the initial commit - which just contains a README le -, no commit was activated for this repository yet.
After making the rst commit, don’t change the layout properties, because this will lead to inconsistencies in the
repository.
Context
This is custom documentation. For more information, please visit the SAP Help Portal
120
11/15/2023
If the repository has multiple branches, you change the layout properties for the active branch of the repository.
Procedure
1. Go to the Layout section of the Properties tab.
In the Layout section, the following information is displayed:
Field
Description
Version
Internal version number of the layout format used for this repository. You can’t change it.
Possible values:
1: Files of ABAP objects are stored in XML format.
3: By default, les of ABAP objects are stored in JSON format. The format can be changed to
XML. The meta information path can be changed. Table content support can be switched off.
4: Properties of version 3, plus the option to enter a Subdirectory path.
New repositories are created with the newest layout version.
 Note
For repositories of version 1, only the version information is displayed.
Version 2 was skipped.
File Format
In gCTS, the ABAP development objects are converted into les that can be stored in Git repositories.
Possible values: JSON | XML
By default, the le format of new repositories is JSON.
Meta Information Path
Directory where the meta information les are stored. The default path is .gctsmetadata/. You can
change the default path.
Subdirectory path
Target directory for object deployment within an existing remote repository.
Examples: src/ABAP/
You can use this parameter to specify in which directory of this repository the ABAP objects are stored.
If this directory doesn’t exist in the repository, gCTS creates it using the value you specify here. For
example, use ABAP/, if you use a monolithic repository (that is, a repository for different applications),
to specify the directory for the ABAP content.
 Note
The value you enter here is stored as the read-only con guration parameter VCS_TARGET_DIR.
Table Content Support
This property is used for Customizing data (table content).
Possible values: ON | OFF
ON is the default value.
2. If you've made any changes to the layout properties, choose Save to save your changes.
Results
Saving changes to the Layout has the following results:
A new commit is created with the generated text modify repository layout. You can check it on the Commits tab.
The changed values are changed in the repositoryLayout property of the .gcts.properties.json le in the
remote repository.
This is custom documentation. For more information, please visit the SAP Help Portal
121
11/15/2023
Related Information
Con guration Parameters for Repositories
The gCTS Properties File
Use the Collaboration Tab of a Repository
On the Collaboration tab, you can add teams or individual users as collaborators to the repository.
Prerequisites
An ABAP user needs access to a local repository. For more information, see Collaboration Permissions.
Context
You can manually add teams and individual users to a repository and grant them the permissions they require to work in this
repository.
For repositories on GitHub and GitLab: You can synchronize teams and collaborators and their permissions from the remote
repository to the local repository.
Procedure
1. In the gCTS app, in the Repository view, choose the Collaboration tab.
2. On the Collaboration tab, you can do various tasks.
Adding Teams or Individual Collaborators to Repositories
By adding teams or individual collaborators to a local repository, you enable users to collaborate in a repository.
Synchronizing Teams or Collaborators
You can synchronize teams and individual collaborators, and their collaboration permissions in a remote GitHub or
GitLab repository with the local repository on an ABAP system. The remote repository is the single source of truth.
Adding Teams or Individual Collaborators to Repositories
By adding teams or individual collaborators to a local repository, you enable users to collaborate in a repository.
Prerequisites
Your user has Admin permissions in the repository to which you want to add collaborators.
To assign a team to a repository, a team has been created in advance.
For more information, see Use the Teams Tab.
To assign an individual collaborator to a repository, your user needs the authorization object S_USER_GRP with eld
CLASS = SUPER and eld ACTVT = 03. The authorization object is part of the SAP_BC_GCTS_ADMIN role.
For more information, see Roles in gCTS.
Procedure
This is custom documentation. For more information, please visit the SAP Help Portal
122
11/15/2023
1. In the gCTS app, in the Repository view, go to the Collaboration tab.
2. To add a team as collaborators to the repository, in the Teams section, choose Add.
a. Enter the name of an existing team.
Start typing the rst characters of the team name. The autocomplete function displays all teams that exist in this
system.
b. Select the permission that you want to grant the team.
For more information about the available permissions, see Collaboration Permissions.
c. Choose Save.
3. To add an individual collaborator to the repository, in the Collaborators section, choose Add.
a. Enter an existing ABAP user name in the Collaborator eld.
b. Select the permission that you want to grant to this user.
For more information about the available permissions, see Collaboration Permissions.
c. Save your work.
Results
The team members or individual users are added as collaborators to the repository with the selected permission.
Note that the corresponding users on the Git server also require permissions in the remote repository. For more information,
see Authorization Concept in gCTS.
Synchronizing Teams or Collaborators
You can synchronize teams and individual collaborators, and their collaboration permissions in a remote GitHub or GitLab
repository with the local repository on an ABAP system. The remote repository is the single source of truth.
Prerequisites
You have the authorizations of the authorization object S_GCTS_SYS with ACTVT = All Activities, or of the authorization
object S_GCTS_R with ACTVT = All Activities in the ABAP system. For more information, see Authorization Objects in
gCTS.
The repository where you want to run the synchronization is hosted on a GitHub or GitLab server.
You're a collaborator in the remote repository.
You've speci ed authentication to the Git server where the remote repository is hosted using a personal access token.
To synchronize users, the following requirements must be met:
In the ABAP system, an ABAP user exists. In transaction SU01, an email address exists for the ABAP user.
On the Git server, a Git user exists. The Git user has de ned a public email address in both places:
In the user´s account settings.
 Note
For GitHub, the process is described in the GitHub Docs
. Search for the topic Adding an email
address.
This is custom documentation. For more information, please visit the SAP Help Portal
123
11/15/2023
As Public email in the user´s Public pro le.
Context
gCTS checks which teams and collaborators are assigned to the remote repository, and then synchronizes them with the teams
and collaborators assigned to the local repository. The corresponding permissions are also synchronized. It's possible to
synchronize only the permissions of users in the local repository. Assignments and permissions are changed only in the local
repository. No changes are made in the remote repository.
The synchronization is based on the following criteria:
Teams: Matching names of teams in the remote repository and local repository
 Note
Because teams in remote repositories are always part of an organization, gCTS maps the name of a remote team to
the name of a local team by adding the name of the team's organization with a hyphen (-) as a pre x to the team
name. The format is as follows:
Remote: <teamname> = Local: <orgname>-<teamname>
 Example
TestTeam in the Samples org matches the local team Samples-TestTeam .
Collaborators: Matching email address of ABAP user and user on the Git server
The email address of the collaborator exists both in the ABAP system and on the Git server, as described previously in
the Prerequisites section. If an email address doesn't exist where required, gCTS can't synchronize the user.
Procedure
1. In the gCTS app, in the Repository view, go to the Collaboration tab.
To synchronize teams of the remote repository with the local repository, in the Teams section, choose
Synchronize.
To synchronize individual collaborators of the remote repository with the local repository, in the Collaborators
section, choose Synchronize.
The Synchronize Collaborators dialog opens.
2. Select a Synchronization Method.
The following methods are available:
Keep Local, Add Remote
If the local repository has collaborators or teams assigned that aren't part of the remote repository, they remain
in the local repository.
Remove Local, Add Remote
If the local repository has collaborators or teams assigned that aren't part of the remote repository, they're
removed from the local repository.
Update Permissions Only
Only the permissions of existing collaborators or teams are synchronized. No teams or collaborators are added to
the local repository or removed from it.
3. Optional: Extend the synchronization scope.
This is custom documentation. For more information, please visit the SAP Help Portal
124
11/15/2023
If the synchronization scope is teams, you can extend the scope of the team by individual collaborators. If the
synchronization scope is individual collaborators, you can extend the scope of the individuals by teams.
4. Optional: To disable the simulation run, deselect the Run Simulation checkbox.
By default, gCTS does a simulation run of the synchronization with the options speci ed, and displays the results. No
data is changed during a simulation run.
5. If you've left the default simulation unchanged, on the Simulation of Synchronization dialog box, check that the result of
the simulation run meets your expectations.
6. To run the synchronization with the speci ed options, choose Synchronize.
Results
Permissions and assignments of teams and collaborators are changed in the local repository depending on the options
speci ed.
You can check the result on the Collaboration tab. For more information about how the permissions in remote repositories are
mapped to local repositories, see Background Information: Mapping of Git Permissions to Permissions in gCTS.
When you synchronize teams, the following situations can occur:
If a team exists with a matching name in the local and the remote repository, members that exist only in the remote
team are added to the local team. The synchronization options Keep Local, Add Remote and Remove Local, Add Remote
allow you to select whether users who are members only of the local team are to be kept in the local repository, or
removed from it.
If a team exists in the remote repository only, or if a team name in the local repository doesn't match the name in the
remote repository, gCTS creates a new team in the local repository with the following name: <orgname>-<teamname>.
gCTS adds all members of the remote team as members to the local team.
If individual team members of the remote team don't exist in the ABAP system, the team is created in the local
repository with only the members that have a corresponding user in the ABAP system.
 Caution
In the following situations, gCTS doesn't display any warning messages:
If users can't be found in the ABAP system.
Make sure that all users exist in the ABAP system and on the Git server, and that their email addresses exist where
required, as described in the Prerequisites section.
If you´ve selected the Remove Local, Add Remote option:
If collaborators or teams are found that are part of the local repository, but not of the remote repository, their
assignments are removed from the local repository.
If you have Admin collaboration permissions in the local repository, but you don't have a user in the remote repository,
and gCTS can't determine whether any synchronization is required. gCTS displays the message No changes are
applied.
Make sure that you have sufficient authorizations and users with data entered in all the places where required, as
described in the Prerequisites section.
Background Information: Mapping of Git Permissions to
Permissions in gCTS
This is custom documentation. For more information, please visit the SAP Help Portal
125
11/15/2023
The following tables provide an overview of how permissions in remote repositories are mapped to collaboration permissions in
local repositories.
GitHub Permissions
gCTS Collaboration Permissions
Admin
Admin
Write/Maintain
Write
Triage/Read
Read
GitLab Permissions
gCTS Collaboration Permissions
Owner
Admin
Developer/Maintainer
Write
Minimal access/Guest/Reporter
Read
Related Information
Collaboration Permissions
Use the Tags Tab of a Repository
The Tags tab provides an overview of the tags of a repository. You can create new tags, compare the object differences of
selected tags, activate tags, and delete existing tags.
Context
A tag allows you to indicate the importance of a commit by creating a pointer to this commit. For example, you can use tags to
mark a version of your repository. Tagging a commit is useful, for example, if your repository has a dependency on another
repository, and you want to ensure that you can create a dependency to a stable commit.
For more information about tags in Git, refer to Git tagging.
On the Tags tab, all tags of all branches of the repository are displayed in alphabetical order.
Tags that you create in the semantic versioning format for the current commit in the active branch of a repository generate a
new commit that updates the version of the repository in the .gcts.properties.json le.
Procedure
1. In the gCTS app, in the Repository view, choose the Tags tab.
2. On the Tags tab, you can do various tasks.
Create Tags
You create tags for the current commit in the active branch of a repository.
Activate Tags
By activating a tag, you pull the reference commit of the tag to the system.
Compare Tags
This is custom documentation. For more information, please visit the SAP Help Portal
126
11/15/2023
To nd out the object differences between the reference commit of a selected tag and the active tag, you can use this
function.
Create Tags
You create tags for the current commit in the active branch of a repository.
Prerequisites
You're in the gCTS app, on the Tags tab of a repository. The repository is on the latest commit in the branch in which you want to
create a tag.
Procedure
1. To create a new tag, choose Create.
2. In the dialog box, enter the Name of the new tag.
Note the following points with regard to naming:
Tag names must comply with the Git speci cation of well-formed reference names. For example, you can't use
spaces and special characters. For more information, refer to git-check-ref-format.
If you enter a tag name in the semantic versioning format, a new commit is created in the active branch of the
local repository. The new commit is used as the reference commit for the new tag. The version of the repository in
the gCTS properties le is updated with the version used as the tag name.
 Example
1.1.0
v1.0.3
 Recommendation
To create a tag indicating a version of your repository, use the semantic versioning format. For more
information, see https://semver.org/
.
If you enter a tag name that doesn't follow the semantic versioning format, the current commit of the active
branch in the local repository is taken as the reference commit. No new commit is created for the tag.
If you create a tag for a previous commit of a repository, no new commit is created and the version in the gCTS
properties le isn't updated, even if you use the semantic versioning format.
 Recommendation
Always create a tag for the latest commit of a repository.
3. Enter a description of the tag.
4. Choose Create.
Results
A tag is created in the local repository.
If you've used a tag name in the semantic versioning format, a new commit was created as the reference commit of the tag. The
new commit is pushed to the remote repository.
This is custom documentation. For more information, please visit the SAP Help Portal
127
11/15/2023
You can check the result of the tag creation in the following places:
On the Tags tab:
The new tag is displayed as the active tag together with the description and the reference commit.
On the Commits tab:
The rst time a tag is created in a repository, a Tag column appears in the commits list displaying the name of the
tag and the reference commit.
If you've used a tag name in the semantic versioning format, the new commit is displayed as the reference
commit of the tag with a generated commit message.
In the remote repository
If you've used a tag name in the semantic versioning format, the version of the repository in the gCTS properties le of
the branch that is active in the local repository is updated with the version of the tag.
On the Logs tab:
Creating a tag is logged as a CREATE_TAG process.
 Note
If you've disabled gCTS’s automatic pull and push behavior, the new commit is only available in the local repository. Manually
push the commit to the remote repository. This will update the version of the repository in the gCTS properties le in the
branch where the tag was created.
To delete an existing tag, choose
(Delete Tag).
Deleting a tag is logged as a DELETE_TAG process. You can check the log on the Log tab.
Related Information
The gCTS Properties File
Activate Tags
By activating a tag, you pull the reference commit of the tag to the system.
Prerequisites
You're in the gCTS app, on the Tags tab of a repository.
Context
Activating a tag corresponds to a pull action that imports object differences depending on the con guration of the repository.
For more information, see Pull Commits.
Procedure
1. Verify that the tag that you want to activate exists in the active branch of the repository.
If the tag doesn't exist in the active branch, switch to this branch before activating the tag.
This is custom documentation. For more information, please visit the SAP Help Portal
128
11/15/2023
For more information, see Switch the Branch of a Repository.
2. In the line of the tag that you want to activate, choose
(Activate Tag).
Results
The system is set to the reference commit of the tag.
The Current Commit in the header displays a link to the reference commit.
The reference commit that was pulled is displayed in bold characters because it's now the active commit of the local
repository.
The status of the repository is CHECKOUT.
You can check the result in the following places:
On the Log tab:
See the logs for the PULL_BY_COMMIT process.
On the Activities tab:
See the status of the Pull activity and the log of the transport request that was created for the import.
 Note
If the import generates a return code that is equal to or greater than 8, by default gCTS returns an error message, and the
local repository remains on the old commit, even though the import has run. In such an error situation, carefully analyze the
log of the transport request. To suppress the error message and classify the return code as tolerable, you can adjust the
VCS_IMPORT_ERROR_LEVEL con guration parameter. For more information, see VCS_IMPORT_ERROR_LEVEL.
Compare Tags
To nd out the object differences between the reference commit of a selected tag and the active tag, you can use this function.
Prerequisites
You're in the gCTS app, on the Tags tab of a repository.
Context
You can also use this function, if there´s only one tag in the repository that isn't the active one to display the object differences
between the reference commit of the tag and the current commit.
 Recommendation
Use this function before you activate a tag.
Procedure
In the line of the tag that you want to compare with the current commit, choose
(Compare Object Differences of Tags).
Results
This is custom documentation. For more information, please visit the SAP Help Portal
129
11/15/2023
The system compares the objects of the reference commit of the selected tag with reference commit of the active tag, or with
the current commit, if no active tag exists. As a result, the system displays the objects that differ between the commits and the
type of the change (object is created, deleted, or modi ed). This function doesn't show detailed changes in objects. For in-depth
comparison, use the speci c commit comparison function offered by your Git provider.
Use the Jobs Tab of a Repository
The Jobs tab provides an overview of scheduled background jobs of a repository. It allows you to create new jobs, delete existing
ones, and navigate to the detailed log of a job.
Context
Scheduling background jobs allows you to move long-running or resource-intensive activities to the background, or to times
when the system load is low. For more information, see Background Processing: Concepts and Features.
Procedure
1. In the gCTS app, in the Repository view, choose the Jobs tab.
All scheduled jobs in status Running or Scheduled are displayed by default.
For each job, the following additional information is displayed:
Column
Description
Job ID
Type
Type of job. The following types exist:
Pull | Switch Branch | Clone
 Note
A scheduled job of an Update to Latest action is of type Pull without any parameter speci ed.
Parameter
The parameter used for the scheduled job type when the job is run. The following parameters exist:
Commit ID of the pulled commit | Name of the branch to switch to
Scheduled For
Date and time when the scheduled job is started.
Created By
User who scheduled the job.
Status
Status of the job. The following statuses exist:
(Action is scheduled) | blue
nished)
blue
(Scheduled action was run) | green
(Scheduled action was
2. On the Jobs tab, you can do various tasks:
Task
Function in the gCTS App
Description
Create new background jobs.
Create
Schedule Background Jobs for gCTS Activities
Delete existing background jobs.
Delete
Deleting a job is logged as a DELETE_JOB action on the
Log tab.
Filter displayed background jobs.
(Filter)
Use the lter to display Finished jobs or deselect
activity types.
This is custom documentation. For more information, please visit the SAP Help Portal
130
11/15/2023
Task
Function in the gCTS App
Display the logs of a scheduled action
Description
To navigate to the log of the scheduled action, click
anywhere in the row of the log.
Schedule Background Jobs for gCTS Activities
Scheduling a long-running activity as a background job allows you to continue working on other tasks in the gCTS app.
Schedule Background Jobs for gCTS Activities
Scheduling a long-running activity as a background job allows you to continue working on other tasks in the gCTS app.
Prerequisites
Depending on the activity that you want to schedule as a background job, you're on the Commits, Branches, or Jobs tab of a
repository.
Context
The following activities in gCTS can be scheduled as background jobs:
Clone a repository
This activity can only be scheduled once.
Pull a commit
Update a repository to the latest commit
This activity can only be scheduled on the Commits tab.
Switch the branch of a repository
Procedure
1. If you're on the Jobs tab, proceed as follows:
a. Choose Create.
b. On the Schedule Job dialog, select or enter the following information:
Field
Description
Type
Select the type of action of the scheduled job.
If the repository wasn't cloned to the ABAP system, only the Clone Repository type is
displayed.
If the repository was cloned and only one branch exists, the Pull Commit type is selected by
default.
If the repository was cloned and multiple branches exist, the Switch Branch type is selected
by default.
This is custom documentation. For more information, please visit the SAP Help Portal
131
11/15/2023
Field
Description
Branch
This eld is displayed, if Switch Branch is selected.
Select the branch that you want to switch to.
Commit
This eld is displayed, if Pull Commit is selected.
Enter an existing commit of the active branch of the local repository that you want to pull.
 Note
You only need to enter sufficient characters of the commit ID to uniquely identify it.
If you enter a commit ID that doesn't exist, you get an error message that the commits couldn't be
compared. Scheduling is aborted.
2. If you are on one of the Commits or Branches tabs, choose the dropdown arrow ( ) that you can nd next to the button
or icon that triggers the respective activity (Clone, (Pull selected commit to system’s local repository (object
difference is imported depending on the con guration)), Update to Latest, (Branch of local repository will be switched
to selected branch (object difference will be imported depending on con guration).) ).
3. Select a start time or leave the default Immediate Start time selected.
4. Con rm your selection by choosing Schedule in Background.
Results
The corresponding activity is scheduled as a background job with the following names.
Clone: GCTS_CLONE_REPO
Switch branch: GCTS_SWITCH_BRANCH
Pull/ Update to Latest: GCTS_PULL_COMMIT
 Note
The job is scheduled with your local time. However, on the Jobs and Log tabs, it's displayed with the server time. Take
into account that there can be a difference between your local time and the server time.
The changes introduced after a scheduled activity has run aren't automatically re ected in the gCTS app. To refresh
the screen, use
(Refresh).
You can check the result in the following places:
On the Jobs tab.
All scheduled jobs in a Scheduled or Running status are displayed by default. You can adapt the lter settings. For more
information, see Use the Jobs Tab of a Repository.
On the Log tab.
Click anywhere on a job entry on the Jobs tab to open the corresponding log entry for the related process on the Log tab.
For more information, see Use the Log Tab of a Repository.
 Note
It's important that you check the log entry of a scheduled activity after it has run. If errors occur during the activity,
they're displayed in the log. The Jobs tab only displays the status of the job.
This is custom documentation. For more information, please visit the SAP Help Portal
132
11/15/2023
In the ABAP system in the Job Overview (transaction SM37).
Search fo the name of the scheduled job that you can nd in the log in the gCTS app.
Related Information
Clone the Remote Git Repository to the ABAP System
Pull Commits
Switch the Branch of a Repository
Update ABAP Target Systems
To update an ABAP target system with the current state of development of the ABAP development system, you have different
options.
Prerequisites
You’ve con gured gCTS in an ABAP system that you want to use as a target system, for example, a quality, test, or
production system. For more information, see Con guring Git-Enabled Change and Transport System.
You´ve created the repositories with which you want to update the ABAP target system and cloned them to it.
Context
You update ABAP target systems by pulling ABAP objects from your remote Git repository to the ABAP system in one of the
following ways:
Procedure
1. Manually pull updates in target systems from repositories that have been created on the target system and cloned to it.
You can choose to update target systems with the most recent commit or any selected commit of a remote repository.
For more information, see Pull Commits.
2. Use a CI pipeline to enable an automated update of target systems where remote Git repositories have been created.
For example, you can use the gctsDeploy step of project "Piper" to pull the current commit from the remote Git
repository to the local repository on the target system.
For more information, see Integration of gCTS in CI Pipelines.
Integration of gCTS in CI Pipelines
To leverage the functions of Git-enabled Change and Transport Management (gCTS), we recommend that you integrate gCTS
into CI pipelines.
SAP provides a sample CI pipeline scenario for gCTS using Project "Piper". You can use it as a template and adapt it to your
needs. For more information, see Set up a Pipeline-Based ABAP Development and Testing Process Using Git-Enabled Change
and Transport System
.
The following gCTS Library steps are used in the sample scenario:
gCTSDeploy
This is custom documentation. For more information, please visit the SAP Help Portal
133
11/15/2023
For all deployment-related actions, we recommend that you use the gCTSDeploy step.
The gCTSDeploy step runs the following actions:
It deploys a remote Git repository to a local repository on an ABAP system and imports the content in the ABAP
database.
If the repository doesn't yet exist in the system, the step creates it.
If the repository already exists on the ABAP system, the step runs the remaining step actions, depending on the
parameters provided for the step. For example, these step actions might be to deploy a speci c commit to the ABAP
system, or to deploy the current commit of a speci c branch.
You can use the gCTSDeploy step as of SAP S/4HANA 2020.
For more information, see gctsDeploy
.
gctsExecuteABAPQualityChecks
To run ABAP unit tests and ATC checks for your developments, you can use the gctsExecuteABAPQualityChecks
step.
It runs ABAP unit tests and ATC (ABAP Test Cockpit) checks for a speci ed object scope.
gCTSRollback
To roll back to a speci ed commit, for example, if errors occur in the quality checks, you can use the gCTSRollback
step.
Troubleshooting Git-Enabled Change and Transport System
For information about troubleshooting gCTS, see the guided answer Troubleshooting Git-Enabled Change and Transport System
.
Checking the gCTS Observer Job
The gCTS observer job is scheduled as part of the Enable gCTS wizard process.
Context
The ABAP user who uses the wizard schedules the job. The name of the job is SCTS_ABAP_VCS_IMPORT_OBSERVER. In the
following situations, you may want to check the observer job:
The Health Check displays that no observer job is scheduled. You want to nd out whether the job exists in the status
Released.
You want to add the user who scheduled the observer job as a collaborator to your remote repository to enable write
access. You want to nd out who scheduled the job.
Proceed as follows:
Procedure
1. In SAP GUI, start transaction SM37.
2. Enter the following selection criteria:
This is custom documentation. For more information, please visit the SAP Help Portal
134
11/15/2023
Field Name
User Input
Job Name
SCTS_ABAP_VCS_IMPORT_OBSERVER
User Name
If you know the user who scheduled the job, enter the user name. Alternatively, you can use * to search
for all users.
Job Status
You can leave the default selection unchanged.
Job Start Condition
Select a valid date range.
As input for the eld Or after event, select the value SAP_TRIGGER_VCS_IMPORT from the dropdown
list.
3. Choose Execute.
The result shows the job in the status Released.
The user who scheduled the job is displayed in the Job Created By column.
If no job is displayed, or if the job has a status other than Released, it means that the observer job is not scheduled and
the system wasn't initialized.
Related Information
Enable Git-Enabled Change and Transport System in an ABAP System
The gCTS Properties File
The .gcts.properties.json le contains the properties of a Git repository that was cloned to an ABAP system.
It's created in the root directory of the remote repository when the rst commit of a cloned repository is pushed to the remote
repository. There´s one properties le for each branch of the repository.
The following sample le shows the different properties and their keys and values:
 Sample Code
{
"name":"testrepo",
"version":"1.0.0",
"description":"testrepo",
"configurations":[{"key":"VCS_AUTOMATIC_PULL","value":"false"},{"key":"VCS_AUTOMATIC_PUSH","value
"dependencies":[{"name":"com.github.testdependency","version":"1.0.1","url":"https://github.com/t
"prerequisites":[{"component":"ADDON","release":"100","supportPackage":"01"}],
"repositoryLayout":{"formatVersion":4,"format":"json","objectStorage":"plain","metaInformation":"
}
Properties of the gCTS Properties File
The following table contains more information about the individual properties of the gCTS properties le:
Property
Description
name
Name of the repository.
This is custom documentation. For more information, please visit the SAP Help Portal
135
11/15/2023
Property
Description
version
Version of the repository.
description
Description of the repository.
configurations
Con guration parameters and their values that are set to global in the ABAP source system. This
property can contain multiple key-value pairs.
For more information, see Edit Con guration Parameters for Repositories.
dependencies
Dependencies of the repository as set in the ABAP source system. This property can contain multiple
key-value pairs.
For more information, see Set Dependencies of a Repository.
prerequisites
Prerequisites of the repository as set in the ABAP source system. This property can contain multiple
key-value pairs.
For more information, see Set Prerequisites of a Repository.
repositoryLayout
Layout properties of the repository as set in the ABAP source system.
 Note
The value of the objectStorage parameter can't be changed in the gCTS app.
For more information, see Set the Repository Layout.
 Caution
Only change entries in the .gcts.properties.json le, if you're an expert user, or, in error situations, if SAP Support
asks you to do so. Otherwise, this leads to inconsistencies both in your repository and in the ABAP systems to which the
repository is cloned.
If you've changed any properties of the repository, both in the gCTS app on your local ABAP system and in the remote
repository, it's possible that a con ict occurs in the .gcts.properties.json le. In this case, the property le is
displayed as a con icting le on the Objects tab of your repository. To resolve the con ict, proceed as described under
Resolve Con icts.
This is custom documentation. For more information, please visit the SAP Help Portal
136
Download