As with most technical SAP classes, the instructor began by explaining SAP's three tiered architecture. I relate the three tiered architecture to the MVC (model-view-controller) paradigm, it is just on a larger scale. SAP holds the model in database work processes on the database server, the view in the SAPGUI on the clients PC, and the controller is the ABAP programs that we will be writing on the application server. Database access is abstracted on the application server by the use of SAP Open SQL, which is converted to native SQL for the various databases that SAP supports.
After giving an overview of how SAP systems are setup, the next basic SAP topic is that of mandants. Everyone who uses SAP is familiar with mandants, but most people have no clue what it really means. Mandants were originally used for separating companies on time sharing servers. Two companies could use the same server to run SAP and mandants would keep their data completely separate. This seems a little dated, but technology is moving back towards time-sharing via cloud computing, so it may be more useful again.
Every client specific table has MANDT as it's first column, which contains the mandant. Development objects are client independent so that they can be used across all mandants, and thus have no MANDT.
Development objects, such as packages are kept in the repository, and you can access the repository information system using transaction SE84. But, if you want to see the hierarchy for an application you would use SE81, and if you want to see the data dictionary you would use transaction SE11. All of these transactions are generally required for writing ABAP programs, though the main ABAP programming transaction is SE80, the object navigator.
Like everything in SAP, writing and storing ABAP programs is very structured. Generally, you can't just start writing a program. First, a package is created from a change request, and inside of the package is where the SAP applications are written. There are three types of packages. The structure package is for organizational purposes and contains other packages. The main package falls under a structure package and contains standard packages. Standard packages are where actual programs are created and stored. The program code is stored in the database when you click save in SE80, then it is compiled into executable code when you click the activate button. Therefore, a program cannot be run without first being activated. Furthermore, a program requires a transaction code in order to be of use to users.