FUNCTION {{p}}ice_fee IMPORTING iv_flavour TYPE string iv_scoops TYPE i iv_topping TYPE string iv_here TYPE abap_bool EXPORTING ev_price TYPE decfloat34 EXCEPTIONS invalid_scoops unknown_flavour unknown_topping. CONSTANTS lc_vanilla TYPE decfloat34 VALUE '1.20'. CONSTANTS lc_chocolate TYPE decfloat34 VALUE '1.50'. CONSTANTS lc_strawberry TYPE decfloat34 VALUE '1.40'. CONSTANTS lc_nut TYPE decfloat34 VALUE '0.60'. CONSTANTS lc_sprinkles TYPE decfloat34 VALUE '0.40'. CONSTANTS lc_service_rate TYPE decfloat34 VALUE '1.05'. DATA lv_scoop_price TYPE decfloat34. DATA lv_topping_price TYPE decfloat34. DATA lv_total TYPE decfloat34. DATA lv_price TYPE p LENGTH 8 DECIMALS 2. IF iv_scoops < 1 OR iv_scoops > 5. RAISE invalid_scoops. ENDIF. CASE iv_flavour. WHEN 'VA'. lv_scoop_price = lc_vanilla. WHEN 'CH'. lv_scoop_price = lc_chocolate. WHEN 'ST'. lv_scoop_price = lc_strawberry. WHEN OTHERS. RAISE unknown_flavour. ENDCASE. CASE iv_topping. WHEN 'NON' OR ''. CLEAR lv_topping_price. WHEN 'NUT'. lv_topping_price = lc_nut. WHEN 'SPR'. lv_topping_price = lc_sprinkles. WHEN OTHERS. RAISE unknown_topping. ENDCASE. lv_total = iv_scoops * lv_scoop_price + lv_topping_price. IF iv_here = abap_true. lv_total = lv_total * lc_service_rate. ENDIF. lv_price = lv_total. ev_price = lv_price. ENDFUNCTION.