68 lines
2.0 KiB
ABAP
68 lines
2.0 KiB
ABAP
CLASS {{p}}rope_checker DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
|
PUBLIC SECTION.
|
|
INTERFACES {{p}}if_rope_check.
|
|
|
|
PRIVATE SECTION.
|
|
TYPES:
|
|
BEGIN OF ty_limit,
|
|
ticket TYPE {{p}}if_rope_check=>ty_ticket,
|
|
min_age TYPE i,
|
|
min_hours TYPE i,
|
|
max_height TYPE i,
|
|
END OF ty_limit,
|
|
tt_limit TYPE HASHED TABLE OF ty_limit WITH UNIQUE KEY ticket.
|
|
|
|
METHODS normalize_ticket
|
|
IMPORTING iv_ticket TYPE {{p}}if_rope_check=>ty_ticket
|
|
RETURNING VALUE(rv_ticket) TYPE {{p}}if_rope_check=>ty_ticket.
|
|
|
|
METHODS limits
|
|
RETURNING VALUE(rt_limit) TYPE tt_limit.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}rope_checker IMPLEMENTATION.
|
|
METHOD {{p}}if_rope_check~check.
|
|
DATA(lv_ticket) = normalize_ticket( iv_ticket ).
|
|
IF lv_ticket IS INITIAL.
|
|
rv_reason = {{p}}if_rope_check=>c_reason-empty.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
DATA(lt_limit) = limits( ).
|
|
ASSIGN lt_limit[ ticket = lv_ticket ] TO FIELD-SYMBOL(<ls_limit>).
|
|
IF sy-subrc <> 0.
|
|
rv_reason = {{p}}if_rope_check=>c_reason-ticket.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
IF iv_age < <ls_limit>-min_age.
|
|
rv_reason = {{p}}if_rope_check=>c_reason-age.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
IF iv_logged_hours < <ls_limit>-min_hours.
|
|
rv_reason = {{p}}if_rope_check=>c_reason-hours.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
IF iv_height_m > <ls_limit>-max_height.
|
|
rv_reason = {{p}}if_rope_check=>c_reason-height.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
rv_reason = {{p}}if_rope_check=>c_reason-ok.
|
|
ENDMETHOD.
|
|
|
|
METHOD normalize_ticket.
|
|
rv_ticket = to_upper( replace( val = iv_ticket sub = ` ` with = `` occ = 0 ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD limits.
|
|
rt_limit = VALUE #(
|
|
( ticket = {{p}}if_rope_check=>c_ticket-level_1 min_age = 18 min_hours = 0 max_height = 30 )
|
|
( ticket = {{p}}if_rope_check=>c_ticket-level_2 min_age = 18 min_hours = 500 max_height = 60 )
|
|
( ticket = {{p}}if_rope_check=>c_ticket-level_3 min_age = 21 min_hours = 1000 max_height = 120 ) ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|