CLASS {{p}}balloon_checker DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS check_flight IMPORTING iv_passengers TYPE i iv_weight_kg TYPE i iv_wind_kmh TYPE i iv_cloud_base_m TYPE i RETURNING VALUE(rv_free_kg) TYPE i RAISING {{p}}cx_balloon_flight. PRIVATE SECTION. CONSTANTS: c_max_passengers TYPE i VALUE 8, c_max_weight_kg TYPE i VALUE 640, c_max_wind_kmh TYPE i VALUE 18, c_min_cloud_base_m TYPE i VALUE 300. ENDCLASS. CLASS {{p}}balloon_checker IMPLEMENTATION. METHOD check_flight. IF iv_passengers > c_max_passengers. RAISE EXCEPTION TYPE {{p}}cx_balloon_crew EXPORTING iv_passengers = iv_passengers iv_limit = c_max_passengers. ENDIF. IF iv_weight_kg > c_max_weight_kg. RAISE EXCEPTION TYPE {{p}}cx_balloon_weight EXPORTING iv_weight_kg = iv_weight_kg iv_limit_kg = c_max_weight_kg. ENDIF. IF iv_wind_kmh <= c_max_wind_kmh. RAISE EXCEPTION TYPE {{p}}cx_balloon_wind EXPORTING iv_wind_kmh = iv_wind_kmh iv_limit_kmh = c_max_wind_kmh. ENDIF. IF iv_cloud_base_m < c_min_cloud_base_m. RAISE EXCEPTION TYPE {{p}}cx_balloon_cloud EXPORTING iv_cloud_base_m = iv_cloud_base_m iv_limit_m = c_min_cloud_base_m. ENDIF. rv_free_kg = c_max_weight_kg - iv_weight_kg. ENDMETHOD. ENDCLASS.