CLASS {{p}}sweep_pricer DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. TYPES: ty_building TYPE c LENGTH 1, ty_fee TYPE p LENGTH 8 DECIMALS 2. METHODS calculate IMPORTING iv_flues TYPE i iv_building TYPE ty_building iv_soot TYPE i iv_express TYPE abap_bool RETURNING VALUE(rv_fee) TYPE ty_fee. ENDCLASS. CLASS {{p}}sweep_pricer IMPLEMENTATION. METHOD calculate. DATA lv_rate TYPE ty_fee. DATA lv_fee TYPE ty_fee. DATA lv_pct TYPE i. DATA lv_i TYPE i. rv_fee = 0. IF iv_flues > 0. IF iv_building = 'H'. lv_rate = '45.00'. ELSE. IF iv_building = 'A'. lv_rate = '35.00'. ELSE. IF iv_building = 'R'. lv_rate = '60.00'. ELSE. lv_rate = 0. ENDIF. ENDIF. ENDIF. IF lv_rate > 0. lv_fee = 0. lv_i = 0. WHILE lv_i < iv_flues. lv_fee = lv_fee + lv_rate. lv_i = lv_i + 1. ENDWHILE. IF iv_flues >= 4. lv_fee = lv_fee - lv_fee * 10 / 100. ENDIF. IF iv_soot = 1. lv_pct = 0. ELSE. IF iv_soot = 2. lv_pct = 5. ELSE. IF iv_soot = 3. lv_pct = 10. ELSE. IF iv_soot = 4. lv_pct = 15. ELSE. IF iv_soot = 5. lv_pct = 20. ELSE. lv_pct = 0. ENDIF. ENDIF. ENDIF. ENDIF. ENDIF. lv_fee = lv_fee + lv_fee * lv_pct / 100. IF iv_express = 'X'. lv_fee = lv_fee + 25. ENDIF. IF lv_fee < 60. lv_fee = 60. ENDIF. rv_fee = lv_fee. ENDIF. ENDIF. ENDMETHOD. ENDCLASS.