## 4.2.9.2.1 Software Components
Your development, including transportation, is organized and managed in so-called software components. A software component is designed to contain all coding and development objects of at least one application and should be runnable itself.
##  Example
If you think of an application for bonus management, this is how your application could be structured:
- Z\_BONUS\_MANAGEMENT (top-level package, corresponds to the software component and is created automatically, type Structure )
- Z\_BONUS\_CALCULATION (sub-package, type Development )
- Z\_BONUS\_CONFIGURATION (sub-package, type Development )
##  Tip
Your development can also be loosely coupled in different software components.
##  Note
You must not create objects in the structure package. You have to create a sub-package of type Development first to start developing.
##  Restriction
- Objects of one software component cannot be used in another software component by default because software components provide their functionality via explicitly released APIs to other software components. This means you must set the API state of the object to Released if you want to use an object from another software component. See Released APIs, Finding Released APIs and Deprecated Objects. If you only need to permit access to the objects in a software component, without the quality to fulfill consistency and stability criteria, you can also define access permissions as part of a software component relation. See Software Component Relations.
| •   | Software components should not have cyclic dependencies (objects in software component A use objects in software component Band vice versa). If you create dependencies between software components, we recommend that you do this in a layered way, for example, for grouping basic reuse functions in a dedicated software component.                                                                                                                                                                                                           |
|-----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| •   | You can't move development objects from one software component to another. Thus, the introduction of software components should be planned carefully.                                                                                                                                                                                                                                                                                                                                                                                             |
| •   | You can't move objects between packages that reside in different transportable software components.                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| •   | You can't move objects between packages that reside in a transportable software component to ZLOCAL .                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|     | For more information about moving development objects into ABAP packages, see Changing the                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| •   | You can use the same ABAP systems regarding development, testing, and production (your system landscape) for all your software components. Lifecycle processes for software components can even be independent from each other, as long as there are no development dependencies. If, however, there are dependencies between software components, define those dependencies in software component relations, so that they become transparent (for example in the relation explorer in ABAP development tools). See Software Component Relations. |
| •   | gCTS only supports certain object types. For a complete list of the restricted object types, see SAP note 2888887 .                                                                                                                                                                                                                                                                                                                                                                                                                               |
|     | gCTS repositories are currently always stored on the AWSdata center Europe - Frankfurt EU Access ,                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| •   | independent of the chosen hyperscaler and the data center where the ABAP environment instance was created.                                                                                                                                                                                                                                                                                                                                                                                                                                        |
You create your software components in the development system:
- The software component ZLOCAL is available by default. It serves a similar role like $TMP in an on-premise system.
- Create your software components with the SAP Fiori app Manage Software Components (business catalog Lifecycle Management - Software Components SAP\_A4C\_BC\_MSCL\_PC ). Afterwards, pull the software component into the ABAP system to start developing in it.
- You can use an ABAP namespace in the ABAP environment. If you have registered a namespace at SAP, it is automatically provided during provisioning. For more information on namespaces, see SAP note 105132 on how to reserve a namespace and ONE Support Launchpad Namespace Application . A developer key and repair key are created and assigned automatically by the ABAP system. In the namespace application, you can search for your key assignments by filtering the installation number ( CLOUDSYSTM ).
- If you want to transport business configuration content across ABAP systems, create a software component. You have to decide which type you want to use for transporting business configuration:
- You can create a software component of type Business Configuration and transport all your configuration via this software component. If a software component of type Business Configuration is available in a tenant, applications can automatically select or create a customizing transport request for this software component.
##  Note
You can only import one software component of type Business Configuration per ABAP system.
- You can transport the configuration using the software components that you also use for your development objects, which is typically the same software component for tables and table content.
This is advisable if you run multiple projects on the same landscape that are well separated and have decoupled time schedules.
See Transport of Business Configuration [page 810].
##  Note
In your system you will see all software components linked to the same global account. Region or infrastructure provider do not matter. You only have to ensure that all systems are created within the same global account.