CLASS {{p}}snow_fee DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. TYPES ty_area TYPE i. TYPES ty_priority TYPE c LENGTH 1. TYPES ty_distance TYPE i. TYPES ty_fee TYPE p LENGTH 9 DECIMALS 2. METHODS calculate IMPORTING iv_area TYPE ty_area iv_priority TYPE ty_priority iv_distance TYPE ty_distance RETURNING VALUE(rv_fee) TYPE ty_fee. ENDCLASS. CLASS {{p}}snow_fee IMPLEMENTATION. METHOD calculate. DATA: lv_rate TYPE ty_fee, lv_base TYPE ty_fee, lv_sum TYPE ty_fee, lv_km TYPE ty_distance. rv_fee = 0. IF iv_area > 0. IF iv_area <= 500. lv_rate = '0.20'. ELSE. IF iv_area <= 2000. lv_rate = '0.16'. ELSE. lv_rate = '0.12'. ENDIF. ENDIF. lv_base = iv_area * lv_rate. IF lv_base < 45. lv_base = 45. ENDIF. IF iv_priority = 'E'. lv_base = lv_base * 125 / 100. ELSE. IF iv_priority = 'X'. lv_base = lv_base * 150 / 100. ENDIF. ENDIF. lv_sum = lv_base. lv_km = iv_distance - 10. IF lv_km > 0. lv_rate = '0.40'. lv_sum = lv_sum + lv_km * lv_rate. ENDIF. rv_fee = lv_sum. ENDIF. ENDMETHOD. ENDCLASS.