Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
Showing results for 
Search instead for 
Did you mean: 
With the release 2302 in BTP ABAP Environment, it is now possible to integrate BTP ABAP software lifecycle management into Cloud Transport Management Service. (For other updates in 2302, refer to the blog or search in the official release note)

This is a big feature in BTP ABAP Environment because it offers much more flexibility in managing your transport request, much like STMS in the on-premise system.

This blog will touch the concept of Centralized Cloud Transport Management and go through step-by-step how to integrate BTP ABAP Environment into Cloud Transport Management.


  • BTP ABAP Environment

  • Cloud Transport Management Service(a service key must be created)

  • BTP subaccount with authorization to configure Destinations


The landscape architecture in this blog is just one of the examples. It may vary depending on how you design your landscape in your BTP global account.


Centralized Transport Management

SAP Cloud Transport Management Service(cTMS) lets you manage development objects and application specific artifacts across multiple subaccounts in BTP. It provides full visibility to what objects are transported from where to where, and the transport status and the logs. Its landscape wizard allows you to model complex landscape.

cTMS has been the core transport strategy for Integration development, such as transportation of integration flow artifacts, custom API in API management and other MTA content generated from Business Application Studio. Now, cTMS is able to handle content from BTP ABAP environment.

This is important in the ABAP Lifecycle management because:

  • Complete control over export/import on each transport request level

  • Centralized Cloud Transport Management system to handle multiple transport routes across ABAP systems/subacounts/regions


To translate this in a practicality, ideally, only one subaccount  should run Cloud Transport Management Service(cTMS). If there is any other subaccount that runs cTMS, the effort will be redundant. Single cTMS can handle multiple transports routes across subaccounts in a single BTP global account. So it's best to use a single subaccount and make it a central hub for controlling transport.


Comparing to the existing transport mechanism

Before this integration with cTMS, what was the transport mechanism for BTP ABAP Environment? Actually, there were already two ways to manage ABAP objects transport between multiple subaccounts.

  • Git-based CTS (gCTS)

  • abapGit

Integration of cTMS into ABAP lifecycle management is a new feature, but not completely new. Rather, it's an extension of Git-based CTS(gCTS). To perform transport with cTMS, we still have to use "Manage Software Components" app in the Fiori launchpad in ABAP Environment. This app has been the core function and interface for performing Git-based CTS(gCTS), and cTMS needs this app to trigger the export of transport request.

So in short, it's not a new mechanism. Rather, it's a better version of Git-based CTS(gCTS) where we can have much better control on transport inside Cloud Transport Management Service. 



Here is a step-by-step guide to how to configure the ABAP environment, Cloud Transport Management Service and creating necessary destinations.

1. ABAP Environment

1.1 Configure Software Components

Before start developing any ABAP objects in the source system, we must define a software component. Go to Manage Software Components app from the Fiori Launchpad. Create a new software component. Choose Clone on the right top corner.

A pop up is prompted for you to configure the software component before the cloning. Enter the followings and clone.

Branch to be checked out: main
Repository Role: Source Pull and Push
Options: Latest

After a few minutes, cloning should be finished and you can see in your ADT that the new package with the name of software component is created. Add to your favorite package.

Create a sub-package for development under that generated package. All the development objects should be under that sub-package. Create a test class and generate a transport request.

1.2 Configure outbound communication

In the source system, go to Communication System app and create a new system and name it "CTMS". Enter the following parameters.

Parameters Value Comment
Host Name e.g. URI property in the service key created for cTMS.
Port 443
Token Endpoint <subdomain> URL property in the service key created for cTMS.
Auth method OAuth 2.0
OAuth 2.0 Client ID <client ID from the service key> Same service key
OAuth 2.0 Client Secret <client secret  from the service key> Same service key

Next, go to Communication Arrangements app and create a new arrangement from template SAP_COM_0599. Enter the following parameters.

Parameters Value Comment
Communication System CTMS Communication system created on the previous step
CTMS Node Name DEV-ABAP Must match the transport node creaetd in cTMS
OAuth 2.0 Client ID OAuth 2.0 user created in the previous step

1.3 Configure software component test integration

In the source system, go to Maintain Communication Users app and create a new user.

Then go to Communication Systems app and create a new system. Use the user just created. In the host parameter, enter host URL of the ABAP environment. You can find it by right clicking the ABAP cloud project in ADT -> ABAP Development->System URL. Port is 443.

Finally create a communication arrangements app and create a new arrangement from template SAP_COM_0510. Use the communication user and system just created.

After the communication arrangement SAP_COM_0510 is created, a service URL is generated in the bottom of the page. This URL will be used in step 2 later.

1.4 Configure target ABAP Environment

In the target system, login to BTP ABAP Environment. This should be a different ABAP system than what we configured through 1.1~1.3.

Follow the same steps of 1.3 and Configure software component test integration in the target system. Note that it's recommended to use different user password, and be aware that the host URL for ABAP system should be different from the source system.

1.5 Clone software component in target ABAP Environment

As a result of step 1,1, there should be the same software component created in the target system. Access the Manage Software Component app and the "Cloned" status should be "No". Go ahead an choose clone and follow the same configuration as in 1.1. The software component package will be generated in your target system as well, once the cloning is complete.

2. Configure destinations

Go to the subaccount where Cloud Transport Management Service is running.

Create a new destination that points to ABAP environment source system.

Parameters Value
Name DST_DEV_ABAP(name of your choice)
URL Service URL created in step 1.3
Proxy Type Internet
Authentication BasicAuthentication
User/Password User Password created in step 1.3

Go on and create a new destination that points to ABAP environment target system.

Parameters Value
Name DST_QAS_ABAP(name of your choice)
URL Service URL created in step 1.4
Proxy Type Internet
Authentication BasicAuthentication
User/Password User Password created in step 1.4

Do connection check and both connection should return 200 OK.

3. Cloud Transport Management Service

Create source & target system nodes that refers to source & target ABAP system.

Parameters Value Comment
Allow upload to Node X Allows manual upload of transport file
Forward Mode Auto

Auto = transport automatically transferred to target node defined in the route.

Manual = transport request will NOT be forwarded to target node for import. Instead, user must manually forward it.
Content Type BTP ABAP
Destination <Your destination created in step 2>
Deployment Strategy default

Only "default" is available for content "BTP ABAP".

Default strategy = the old version of object in target system will be stopped before the deployment of new version.

Blue-Green strategy = Import objects replace the old version in the target system without downtime.

Create transport route connecting these two nodes.


4. Testing import & export

Go to ADT and the transport request created in step 1.1 and release it. Go to Software Lifecycle Management app and in the main branch, there is an update that shows your transport request has been committed. Check on the commit with the transport request number and choose Export to cTMS. A pop up is displayed for you to select node for export. Select the node configured in step 1.2.

Now go to Cloud Transportation Management Service and go to Transport Action Logs from left side pane. You should be able to see that your commit ID with the transport request is exported from the source node.

Next, go to the target node. The transport request ID should be ready to be imported to the target system. Choose Imported Selected  and approve the pop up.


Check the transport action log. The importing process should be logged with overall status. Click on the row and you can see the detailed import log as well. In case of import errors, detailed transport log will help you what went wrong during the importing process.


As the result of this import, you should be able to find the ABAP class object created in 1.1 transported to your target system.


What's next..

This blog covered minimum configuration to make integration work between  BTP ABAP environment and cTMS. As a next move,  here are some topics that would be interesting to take look at, in order to extend our setup to the next level:

  • Integrate this blog's setup with SAP Solution Manager Change Request Management (ChaRM). This seems to be technically possible by integrating cTMS with ChaRM.

  • Continuous deployment for ABAP development with cTMS

Labels in this area