Sample Code
Decision
Don't place decision to execute in the subroutine
perform get_start_end_date.
form get_start_end_date.
check not ( s_workdt[] is initial ).
...more processing...
endform.
instead do:
If not ( s_workdt[] is initial ).
perform get_start_end_date.
endif.
Case Statement
Use CASE statement instead of IF...ELSEIF when possible (It is only possible in equality tests)