CLASS {{p}}inspection_checker DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES {{p}}if_inspection_check. PRIVATE SECTION. METHODS normalize IMPORTING iv_text TYPE string RETURNING VALUE(rv_text) TYPE string. METHODS age_in_years IMPORTING iv_from TYPE d iv_to TYPE d RETURNING VALUE(rv_years) TYPE i. ENDCLASS. CLASS {{p}}inspection_checker IMPLEMENTATION. METHOD {{p}}if_inspection_check~check_vehicle. IF normalize( iv_plate ) IS INITIAL. rv_reason = {{p}}if_inspection_check=>c_reason-no_plate. RETURN. ENDIF. IF normalize( iv_make ) IS INITIAL. rv_reason = {{p}}if_inspection_check=>c_reason-no_make. RETURN. ENDIF. IF iv_first_reg IS INITIAL OR iv_first_reg > iv_check_date. rv_reason = {{p}}if_inspection_check=>c_reason-reg_date. RETURN. ENDIF. IF age_in_years( iv_from = iv_first_reg iv_to = iv_check_date ) >= 30. rv_reason = {{p}}if_inspection_check=>c_reason-too_old. RETURN. ENDIF. IF iv_mileage_km < 0. rv_reason = {{p}}if_inspection_check=>c_reason-mileage. RETURN. ENDIF. IF iv_brake_pct < 50. rv_reason = {{p}}if_inspection_check=>c_reason-brakes. RETURN. ENDIF. IF iv_exhaust_ppm > 1000. rv_reason = {{p}}if_inspection_check=>c_reason-exhaust. RETURN. ENDIF. rv_reason = {{p}}if_inspection_check=>c_reason-ok. ENDMETHOD. METHOD normalize. rv_text = to_upper( replace( val = iv_text sub = ` ` with = `` occ = 0 ) ). ENDMETHOD. METHOD age_in_years. rv_years = CONV i( iv_to(4) ) - CONV i( iv_from(4) ). IF iv_to+4(4) < iv_from+4(4). rv_years = rv_years - 1. ENDIF. ENDMETHOD. ENDCLASS.