FUNCTION {{p}}wash_fee IMPORTING iv_program TYPE string iv_vehicle TYPE string iv_extra_wax TYPE abap_bool iv_fleet TYPE abap_bool EXPORTING ev_reject TYPE abap_bool CHANGING cv_price TYPE decfloat34 EXCEPTIONS invalid_program invalid_vehicle. DATA lv_price TYPE decfloat34. ev_reject = abap_false. IF iv_program <> 'BASIC' AND iv_program <> 'PLUS' AND iv_program <> 'PREMIUM'. RAISE invalid_program. ENDIF. IF iv_vehicle <> 'S' AND iv_vehicle <> 'M' AND iv_vehicle <> 'L'. RAISE invalid_vehicle. ENDIF. IF iv_vehicle = 'L' AND iv_program = 'BASIC'. ev_reject = abap_true. cv_price = 0. RETURN. ENDIF. CASE iv_program. WHEN 'BASIC'. lv_price = '8.50'. WHEN 'PLUS'. lv_price = '12.50'. WHEN 'PREMIUM'. lv_price = '18.50'. ENDCASE. CASE iv_vehicle. WHEN 'M'. lv_price = lv_price + '2.50'. WHEN 'L'. lv_price = lv_price + '5.50'. ENDCASE. IF iv_extra_wax = abap_true AND iv_program <> 'PREMIUM'. lv_price = lv_price + '3.50'. ENDIF. IF iv_fleet = abap_true. lv_price = round( val = lv_price * 85 / 100 dec = 2 mode = cl_abap_math=>round_half_up ). ENDIF. cv_price = lv_price. ENDFUNCTION.