FUNCTION {{p}}groom_fee IMPORTING iv_size TYPE string iv_long_hair TYPE abap_bool iv_weekend TYPE abap_bool iv_channel TYPE string EXPORTING ev_skip TYPE abap_bool CHANGING cv_fee TYPE decfloat34 EXCEPTIONS invalid_size. DATA lv_base TYPE decfloat34. ev_skip = abap_false. CASE iv_size. WHEN 'S'. lv_base = '26.50'. WHEN 'M'. lv_base = '42.50'. WHEN 'L'. lv_base = '64.50'. WHEN OTHERS. RAISE invalid_size. ENDCASE. IF iv_channel = 'PARTNER'. ev_skip = abap_true. RETURN. ENDIF. cv_fee = lv_base. IF iv_long_hair = abap_true. cv_fee = cv_fee + round( val = lv_base * 15 / 100 dec = 2 mode = cl_abap_math=>round_half_up ). ENDIF. IF iv_weekend = abap_true. cv_fee = cv_fee + 10. ENDIF. ENDFUNCTION.