CLASS {{p}}phone_repair_pricer DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. TYPES ty_device TYPE c LENGTH 6. TYPES ty_repair TYPE c LENGTH 8. TYPES ty_price TYPE p LENGTH 8 DECIMALS 2. CONSTANTS c_device_basic TYPE ty_device VALUE 'BASIC'. CONSTANTS c_device_mid TYPE ty_device VALUE 'MID'. CONSTANTS c_device_high TYPE ty_device VALUE 'HIGH'. CONSTANTS c_repair_screen TYPE ty_repair VALUE 'SCREEN'. CONSTANTS c_repair_battery TYPE ty_repair VALUE 'BATTERY'. CONSTANTS c_repair_board TYPE ty_repair VALUE 'BOARD'. CONSTANTS c_repair_camera TYPE ty_repair VALUE 'CAMERA'. CONSTANTS c_repair_port TYPE ty_repair VALUE 'PORT'. METHODS calculate_price IMPORTING iv_device TYPE ty_device iv_repair TYPE ty_repair iv_express TYPE abap_bool iv_warranty TYPE abap_bool RETURNING VALUE(rv_price) TYPE ty_price. ENDCLASS. CLASS {{p}}phone_repair_pricer IMPLEMENTATION. METHOD calculate_price. DATA lv_price TYPE ty_price. DATA lv_factor TYPE ty_price. DATA lv_found TYPE abap_bool. CLEAR lv_found. IF iv_repair = c_repair_screen. lv_price = '89.00'. lv_found = abap_true. ELSEIF iv_repair = c_repair_battery. lv_price = '19.00'. lv_found = abap_true. ELSEIF iv_repair = c_repair_board. lv_price = '149.00'. lv_found = abap_true. ELSEIF iv_repair = c_repair_camera. lv_price = '59.00'. lv_found = abap_true. ELSEIF iv_repair = c_repair_port. lv_price = '49.00'. lv_found = abap_true. ENDIF. IF lv_found = abap_true. IF iv_device = c_device_high. lv_factor = '1.25'. lv_price = lv_price * lv_factor. IF iv_express = abap_true. lv_price = lv_price + 15. ENDIF. IF iv_warranty = abap_true. lv_factor = '0.80'. lv_price = lv_price * lv_factor. ENDIF. ELSEIF iv_device = c_device_mid. lv_factor = '1.10'. lv_price = lv_price * lv_factor. IF iv_express = abap_true. lv_price = lv_price + 15. ENDIF. IF iv_warranty = abap_true. lv_factor = '0.80'. lv_price = lv_price * lv_factor. ENDIF. ELSE. IF iv_express = abap_true. lv_price = lv_price + 15. ENDIF. IF iv_warranty = abap_true. lv_factor = '0.80'. lv_price = lv_price * lv_factor. ENDIF. ENDIF. IF lv_price < 25. lv_price = 25. ENDIF. ELSE. CLEAR lv_price. ENDIF. rv_price = lv_price. ENDMETHOD. ENDCLASS.