I work in an enterprise environment with SAP. Although, I always struggled to find a clear high level understanding of SAP's logical architecture that will help me consume data from SAP correctly. Here is my attempt to capture that understanding.
SAP is installed on physical or virtual servers. This is known as a SAP instance. Within an instance, there maybe multiple clients. A client is a logical entity and the best analogy would be what we call an environment. So there maybe a reference client, development client, testing client and production client. A client maintains its own set of data i.e. user, master, transaction and reference data. Clients have to be configured, this is a large part of what SAP implementation teams do I suppose. When configurations are made in a development client, they are transported to other clients, including the production client.
Technical components in SAP are called objects. A few examples of objects are:
- Configurations and security settings
From a business organization perspective, a client is a highest level of organization. Clients share master data.
Under a client, there are company. A company is considered the smallest organizational unit for which financial statements can be prepared so it has its own unique chart of accounts and fiscal year. Within a company, there are company codes. Internal accounts exist at the company code level. Company codes can have distinct currencies but use the same chart of accounts as defined on the company level. Within a company code, there may be multiple plants. A plant is a just an organization area. It could be a branch or location, or a department etc. Within a plant, there are storage locations.