An SAP system based on ABAP Platform or its predecessor AS ABAP (such as SAP ECC or SAP S/4HANA Server) has a specific data structure. The data can be divided into client-specific data and cross-client data.

Client-specific data include application data, user data, as well as business settings (client-specific Customizing). Access to client-specific tables is carefully restricted to the currently active logon client.
Note
Technically, this is realized in a way that each time a client-specific table is accessed, the database interface implies an additional selection of the active logon client, meaning that the WHERE clause
WHERE <client-field> = <login-client>
is added to the SQL statement.Besides of these data, which are only relevant for a specific client, there are also cross-application settings (cross-client Customizing) and development objects (repository object). This section focuses on cross-client data.
Aside from the client-specific Customizing, there are also settings you only have to make once, and they are then valid for all clients within the related SAP system. These Cross-Client Customizing settings include the public holiday calendar and settings for the system change option, for example.
The Repository is the totality of all the objects you can access using the ABAP Workbench. The repository is also cross-client. It contains all dictionary objects (table definitions, data elements, domains), and also all ABAP programs, menus, and screens. Because of the repository's cross-client nature, any repository objects developed or changed in any one client are used in exactly the same form in every client in that SAP system.
Caution
Do not confuse table structures with table content.
For example, the table definition for table KNA1 (General Data in Customer Master) is cross-client (in SAP S/4HANA Server 2021, table KNA1 contains 269 fields, the second field KUNNR is of type CHAR10 and denotes the customer number, and so on). The content of this table (that is the general data of customers) is client-specific, however, in this case it belongs to application data.
Repository objects are grouped together to form packages. Packages are containers that group semantically linked development objects (programs, table definitions, and so on). Packages belong uniquely to a certain software component. The repository contains packages from all software components. The repository objects can be accessed with the tools from the ABAP Workbench or with the help of the ABAP Development Tools based on the Eclipse platform.
Hint
Example: In an SAP S/4HANA 2021 Server system, table KNA1 belongs to package VSCORE (application development – sales master data), which in turn belongs to software component S4CORE.
Besides of creating and working on application data and user data, customers can also adapt the data structure according to their own needs: they need to perform Customizing (both client-specific and cross-client), but they can also makes changes to the repository. When you use SAP systems to run your business processes, you therefore need to make sure that changes to the data structure that you perform in your development environment has no influence on your productive environment before they have been extensively and successfully tested.
Although the application data are separated / isolated on client level as described above, this is not valid for the cross-client data such as programs, function modules or table definitions. As soon as you want to change also cross-client data, you need to have multiple SAP systems to separate the development environment from the production environment.
Note
In this sense, the need for a multi-system landscape is a consequence of the data structure of SAP systems based on ABAP Platform or AS ABAP.