Now accepting guest editorial from SAP, Oracle, Workday and ServiceNow practitioners.Pitch a guide
The Sign-Off Table

Lesson 2 of 5

Clients and sandboxes

10 min

Listen to this lesson

0:00 / 8:46

Inside each SAP system sit one or more clients. A client is a self-contained unit with its own user master data, customizing and application data; the system keeps them apart by client number. Repository objects such as programs and cross-client customizing, however, belong to the whole system. That split decides what a client strategy can and cannot isolate.

Client-specific and cross-client

Kind of dataScopeExampleConsequence
Client-specific customizingOne clientPricing procedure settings, company code settingsMust be transported or copied to other clients
Application and user dataOne clientSales orders, materials, users and role assignmentsEach client needs its own test data and users
Cross-client customizingWhole systemSome global settings and factory calendarsA change affects every client at once
Repository objectsWhole systemABAP programs, CDS views, Fiori app codeA code change is visible in all clients immediately
What a client isolates and what it does not.
The Sign-Off Table · thesignofftable.com/academy/sap-arc-202

That last row explains a classic trap. A unit test client in the development system sees new code the moment a developer activates it, but sees new client-specific customizing only after it is copied in. Testers who expect "the same thing" in two clients of one system will be surprised one way or the other.

In one system, activated code is visible in every client at once, but client-specific customizing reaches another client only when it is copied in.
The Sign-Off Table · thesignofftable.com/academy/sap-arc-202

Logical client roles

SAP training material lists logical client roles used in projects: CUST (development and customizing), QTST (quality assurance), PROD (production), PREP (pre-production), TRNM (training master), TRNG (training execution), SAND (sandbox), TEST (unit test) and GOLD (a golden client holding configuration without application data, with restricted access). These are planning labels; the technical client role set in transaction SCC4 (such as customizing, test, production or training) is a separate setting with its own change and transport options.

SystemClientLogical roleUsed for
CMD100CUST / GOLDAll configuration recorded in transports; no application test data
CMD300TESTDevelopers and functional consultants unit test with sample data
CMQ100QTSTIntegration, acceptance and regression testing
CMQ200TRNM / TRNGEnd-user training with stable data and training users
CMR100PREPPerformance, final integration and release rehearsals (added after go-live)
CMP100PRODLive business
CMS100SANDConversion trials and experiments

Contoso's client strategy. SAP training material uses a similar pattern of client 100 for main work and 300 for unit test.

Contoso's seven clients, each with one job and one logical role.
The Sign-Off Table · thesignofftable.com/academy/sap-arc-202

Moving customizing between clients

Customizing recorded in CMD client 100 reaches unit test client 300 by copying the transport contents into it. SAP provides SCC1 (copy by transport request) and, from SAP S/4HANA 1909, SCC1N for this. Developers then test in client 300 before releasing the transport toward CMQ. Whole clients can also be copied, locally or between systems, which is how a training client is rebuilt before a class cycle.

  1. ConfigureConsultant changes settings in CMD 100; recorded in a transport
  2. Copy to unit testTransport contents copied into CMD 300
  3. Unit testConsultant tests with sample data in CMD 300
  4. ReleaseTransport released only after the unit test passes
  5. ImportImported into CMQ 100 for integration testing
How a configuration change is unit tested before it travels.
The Sign-Off Table · thesignofftable.com/academy/sap-arc-202

Sandboxes that stay useful

SAP training material describes a sandbox system as the place to test support packages or business function activation without affecting development, and stresses that transports should not leave it. A sandbox stays useful when three rules hold: it is refreshed often enough to resemble development or production, everyone knows nothing in it is authoritative, and anything worth keeping is rebuilt properly in development. Contoso refreshes CMS from a production copy before each conversion trial and wipes experiments afterward.

Fewer clients, not more

Clients are cheap to create and expensive to run. Each one needs its own users, role assignments, master data and, for testing, its own prepared data sets; each one must be kept in step with customizing transports; and each one is a place a tester can log on to by mistake. Contoso started with eleven ideas for clients and kept seven. The rule it applied: a client must have a distinct job that conflicts with an existing client's job, such as training versus testing, and a named owner who keeps it usable.

What would you do?

Kenji changes an ABAP pricing routine in CMD and activates it. A consultant unit testing in CMD client 300 says the change is already visible there, but her new pricing condition from client 100 is not. Why?

Key points
  • A client separates users, client-specific customizing and application data; repository objects are system-wide.
  • Plan logical client roles (CUST, QTST, PROD, PREP, TRNM, TRNG, SAND, TEST, GOLD) and record them.
  • Unit test customizing in a separate client by copying transport contents in (SCC1 or SCC1N).
  • Keep training and testing in separate clients; nothing leaves a sandbox.

Check your understanding · not graded

Lesson check

  1. 1. Which data is cross-client in an SAP system?

  2. 2. Which logical client role holds configuration without application data and restricted access?

  3. 3. Which transaction copies the contents of a transport request into another client?

  4. 4. Why should acceptance tests not run in the training client?