Before the introduction of ABAP Objects, subroutines were mainly used for the local modularization of
programs, however, they can also be called externally. Their functions are implemented between the statements
ENDFORM. A subroutine is declared immediately when implemented.
Subroutines should no longer be created in new programs for the following reasons:
- The parameter interface has clear weaknesses when compared with the parameter interface of methods, such as:
- Positional parameters instead of keyword parameters
- No genuine input parameters in pass by reference
- Typing is optional
- No optional parameters
- Every subroutine implicitly belongs to the public interface of its program. Generally this is not desirable.
- Calling subroutines externally is critical with regard to the assignment of the container program to a program group in the internal session. This assignment cannot generally be defined statically.
In those places where subroutines cannot yet be replaced by methods
PERFORM ON COMMIT|ROLLBACK,
GENERATE SUBROUTINE POOL), they should be used purely as wrappers for method calls and must not contain any other functional code.
The syntax allows the definition of a subroutine to be split between a declaration part and an implementation
part using the statements FORM ...
FORM ... IMPLEMENTATION, but this is not supported by all tools and should be avoided.