SAP ABAP Program Types
Each ABAP program has a type, which is defined in the program attributes. What is the purpose of all the different program types? The program type determines which processing blocks a program can contain, how the program is handled and executed by the runtime environment, and whether it can work with its own screens. The following ABAP program types are available.
Executable programs (Type 1)
Executable programs are introduced with the REPORT statement. They can contain their own screens and are executed via the SUBMIT statement or transaction codes. Executable programs can contain all the various processing blocks in ABAP, except for function modules, and any number of local classes. They can be created directly with the ABAP Editor tool. While they are running, all the runtime environment events can occur.
Module pools (Type M)
Module pools are introduced with the PROGRAM statement. They can contain their own screens and can only be executed through transaction codes. Module pools can contain all the various processing blocks in ABAP, except for reporting event blocks and function modules, and any number of local classes. While they are running, all the runtime environment events can occur, except for reporting events. They can be created directly with the ABAP Editor tool.
Function groups (Type F)
Function groups or pools are introduced with the FUNCTION – POOL statement. They can contain their own screens. Normally, function groups are not executed directly. They are loaded by calling their function modules. They can contain all the various processing blocks in ABAP, except for reporting event blocks, and any number of local classes. They are the only programs that can contain function modules and are created with the Function Builder tool.
Class pools (Type K)
Class pools are introduced with the CLASS-POOL statement. They cannot contain their own screens and no other processing blocks than methods. Class pools can contain a single global class and any number of local classes. They cannot be executed directly. They are loaded by using their global classes.3 They are created with the Class Builder tool.
Interface pools (Type J)
Interface pools are introduced with the INTERFACE-POOL statement. They cannot contain their own screens or processing blocks. They contain a single definition of a global interface, which can be implemented in any global or local class. They are created with the Class Builder tool.
Subroutine pools (Type S)
Subroutine pools are introduced with the PROGRAM statement. They cannot contain their own screens and apart from the LOAD-OF-PROGRAM event block can have only subroutines or methods of local classes as processing blocks. Subroutine pools are not executed directly. They are loaded by calling their procedures externally. They are created with the ABAP Editor.
Type groups
Type groups or pools are introduced with the TYPE-POOL statement. They cannot contain their own screens or processing blocks. They contain the definitions of global data types, which can be made visible in any ABAP program by the TYPE-POOLS statement. They are created with the ABAP Dictionary tool.
Include programs (Type I)
Include programs have no introductory program statement and, unlike all other program types, they do not represent independent compilation units with their own memory space. Include programs provide a library function for ABAP source code and can be embedded at any location in other ABAP programs using the INCLUDE statement. Include programs have no technical relationship to processing blocks. However, it is preferable to separate logical program units, such as the declaration part for global data, and similar or individual processing blocks into independent include programs. The ABAP Workbench supports the automatic division of module pools, function groups, and class pools into include programs. You can create your own include programs directly with the ABAP Editor.