ABAP Keyword Documentation → ABAP - Reference → Program structure
ABAP Program Types
The type of an ABAP program determines (among other things) which declarations and processing blocks a program can contain and how the program can be executed in the ABAP runtime environment.
The following table shows all program types for standalone programs (compilation units) and how the attributes of the programs are affected by the type.
Program Type | Execution | Global Declarations | Processing Blocks | Dynpros | Text Pools |
---|---|---|---|---|---|
Executable program | Statement SUBMIT or a dynpro or selection screen is called using atransaction code |
Local interfaces and classes, all other declarative statements | All (except function modules) | Yes | Yes |
Class pool | Call of a visible method or a call using a transaction code | A global class from the class library, local interfaces and classes, statements TYPES and CONSTANTS |
Methods only | No | Yes |
Function group or function pool | A function module is called using CALL FUNCTION or a dynpro is called using atransaction code |
Local interfaces and classes, all other declarative statements | All (except event blocks for reporting events) | Yes | Yes |
Interface pool | None | A global interface from the class library | None | No | No |
Module pool | A dynpro is called using a transaction code | Local interfaces and classes, all declarative statements | All (except function modules and event blocks for reporting events) | Yes | Yes |
Subroutine pool | External call of local procedures (subroutines or methods) | Local interfaces and classes, all other declarative statements | Event block LOAD-OF-PROGRAM , subroutines, methods |
No | Yes |
Type group or type pool | None | Statements TYPES and CONSTANTS |
None | No | No |
The second column of the table shows which category of execution the program type is designed for. The third column shows which declarations can be made in the global declaration section of a program with the specified type. The fourth column shows which processing blocks the program can contain. The fifth indicates whether the program can support its own dynpros. The final column indicates whether the program can create its own text pools.