FUNCTION {{p}}wood_fee IMPORTING iv_wood_type TYPE string iv_volume TYPE decfloat34 iv_distance TYPE i EXPORTING ev_skip TYPE abap_bool CHANGING cv_fee TYPE decfloat34 EXCEPTIONS invalid_volume invalid_distance. CONSTANTS lc_charge TYPE decfloat34 VALUE '0.45'. CONSTANTS lc_minimum TYPE decfloat34 VALUE '80'. DATA lv_price TYPE decfloat34. DATA lv_fee TYPE decfloat34. DATA lv_km TYPE decfloat34. IF iv_volume <= 0. RAISE invalid_volume. ENDIF. IF iv_distance < 0. RAISE invalid_distance. ENDIF. ev_skip = abap_false. IF iv_wood_type = 'MX'. ev_skip = abap_false. RETURN. ENDIF. CASE iv_wood_type. WHEN 'BE'. lv_price = 120. WHEN 'OK'. lv_price = 150. WHEN 'SP'. lv_price = 90. WHEN OTHERS. lv_price = 0. ENDCASE. lv_fee = iv_volume * lv_price. IF iv_distance > 20. lv_km = iv_distance - 20. lv_fee = lv_fee + lv_km * lc_charge. ENDIF. cv_fee = round( val = lv_fee dec = 2 ). IF cv_fee < lc_minimum. cv_fee = lc_minimum. ENDIF. ENDFUNCTION.