CLASS {{p}}kennel_pricer DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. TYPES ty_pet_type TYPE c LENGTH 4. TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2. METHODS calculate_fee IMPORTING iv_pet_type TYPE ty_pet_type iv_nights TYPE i iv_high_season TYPE abap_bool iv_grooming TYPE abap_bool RETURNING VALUE(rv_fee) TYPE ty_amount. ENDCLASS. CLASS {{p}}kennel_pricer IMPLEMENTATION. METHOD calculate_fee. DATA: lv_rate TYPE i, lv_total TYPE p LENGTH 8 DECIMALS 2, lv_discount TYPE i. IF iv_nights < 1. rv_fee = 0. RETURN. ENDIF. IF iv_pet_type = 'DOG'. IF iv_high_season = 'X'. lv_rate = 2500 * 1125 DIV 1000. ELSE. lv_rate = 2500. ENDIF. ELSEIF iv_pet_type = 'CAT'. IF iv_high_season = 'X'. lv_rate = 1800 * 1125 DIV 1000. ELSE. lv_rate = 1800. ENDIF. ELSEIF iv_pet_type = 'RABB'. IF iv_high_season = 'X'. lv_rate = 800 * 1125 DIV 1000. ELSE. lv_rate = 800. ENDIF. ELSE. IF iv_high_season = 'X'. lv_rate = 2000 * 1125 DIV 1000. ELSE. lv_rate = 2000. ENDIF. ENDIF. CLEAR lv_total. DO iv_nights TIMES. lv_total = lv_total + lv_rate. ENDDO. IF iv_nights >= 7. lv_discount = lv_rate * 10 DIV 100. lv_total = lv_total - lv_discount * iv_nights. ENDIF. IF iv_pet_type = 'CAT' AND iv_high_season = 'X'. lv_total = lv_total - 500. ENDIF. IF iv_grooming = 'X'. lv_total = lv_total + 1500. ENDIF. rv_fee = lv_total / 100. ENDMETHOD. ENDCLASS.