FUNCTION {{p}}drv_fee IMPORTING iv_lesson_type TYPE string iv_vehicle TYPE string iv_minutes TYPE i EXPORTING ev_block TYPE abap_bool CHANGING cv_fee TYPE decfloat34 EXCEPTIONS invalid_minutes. DATA lv_rate TYPE decfloat34. DATA lv_surcharge TYPE decfloat34. ev_block = abap_true. cv_fee = 0. IF iv_minutes < 1. RAISE invalid_minutes. ENDIF. CASE iv_vehicle. WHEN 'CAR'. lv_rate = '1.20'. WHEN 'TRUCK'. lv_rate = '2.50'. WHEN 'MOTORCYCLE'. lv_rate = '0.90'. WHEN OTHERS. RETURN. ENDCASE. cv_fee = lv_rate * iv_minutes. CASE iv_lesson_type. WHEN 'NIGHT'. lv_surcharge = '0.25'. WHEN 'MOTORWAY'. lv_surcharge = '0.40'. WHEN OTHERS. lv_surcharge = 0. ENDCASE. cv_fee = cv_fee * ( 1 + lv_surcharge ). cv_fee = round( val = cv_fee dec = 2 ). IF cv_fee < 15. cv_fee = 15. ENDIF. IF iv_minutes > 120. ev_block = abap_true. ENDIF. ENDFUNCTION.