1. Function modules use a special screen to define the parameters where as subroutines use the same ABAP/4 editor to define its parameters.
2. Tables work area can be commonly shared by calling program and subroutine where as function modules do not share commonly.
3. Calling function module syntax (Call function.) is different from calling subroutine syntax (perform….).
4. With raise statement user can exit from a function module where as exit is used in subroutines.