68 lines
1.7 KiB
ABAP
68 lines
1.7 KiB
ABAP
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.
|