A subroutine is a block of reusable code defined using FORM and called using PERFORM. It is a procedural method of modularization mainly used in classical ABAP programming.
When to use:
- In classic procedural ABAP programs.
- For logic reuse in the same or other programs via INCLUDE.
*&---------------------------------------------------------------------*
*& Report ZREP_LCLCLASS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zrep_lclclass.
DATA: lv_a TYPE i VALUE 5,
lv_b TYPE i VALUE 10,
lv_result TYPE i VALUE 0.
WRITE: / 'Before subroutine call:',
/ 'lv_a =', lv_a,
/ 'lv_b =', lv_b,
/ 'lv_result =', lv_result.
* Call the subroutine
PERFORM calculate_sum USING lv_a " passed by value (copy)
lv_b " passed by value (copy)
CHANGING lv_result. " passed by reference (direct)
WRITE: / 'After subroutine call:',
/ 'lv_a =', lv_a,
/ 'lv_b =', lv_b,
/ 'lv_result =', lv_result.
*------------------------------------------------------------------*
* Subroutine Definition
*------------------------------------------------------------------*
FORM calculate_sum USING p_a TYPE i
p_b TYPE i
CHANGING p_sum TYPE i.
p_a = p_a + 1. " Modifies copy (no effect on lv_a)
p_b = p_b + 1. " Modifies copy (no effect on lv_b)
p_sum = p_a + p_b. " Modifies original lv_result (by reference)
ENDFORM.
Output: