76 lines
2.2 KiB
ABAP
76 lines
2.2 KiB
ABAP
CLASS {{p}}seed_lot_checker DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
|
PUBLIC SECTION.
|
|
TYPES:
|
|
BEGIN OF ty_lot,
|
|
lot_no TYPE c LENGTH 10,
|
|
germination TYPE i,
|
|
moisture TYPE p LENGTH 4 DECIMALS 1,
|
|
harvest_date TYPE d,
|
|
END OF ty_lot.
|
|
|
|
METHODS check_lot
|
|
IMPORTING is_lot TYPE ty_lot
|
|
iv_check_date TYPE d
|
|
RAISING {{p}}cx_seed_lot.
|
|
|
|
PRIVATE SECTION.
|
|
CONSTANTS:
|
|
c_min_germination TYPE i VALUE 85,
|
|
c_max_moisture TYPE p LENGTH 4 DECIMALS 1 VALUE '12.0',
|
|
c_max_age_days TYPE i VALUE 365.
|
|
|
|
METHODS check_lot_no
|
|
IMPORTING is_lot TYPE ty_lot
|
|
RAISING {{p}}cx_seed_lot.
|
|
METHODS check_harvest_date
|
|
IMPORTING is_lot TYPE ty_lot
|
|
iv_check_date TYPE d
|
|
RAISING {{p}}cx_seed_lot.
|
|
METHODS check_germination
|
|
IMPORTING is_lot TYPE ty_lot
|
|
RAISING {{p}}cx_seed_lot.
|
|
METHODS check_moisture
|
|
IMPORTING is_lot TYPE ty_lot
|
|
RAISING {{p}}cx_seed_lot.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}seed_lot_checker IMPLEMENTATION.
|
|
METHOD check_lot.
|
|
check_lot_no( is_lot ).
|
|
check_harvest_date( is_lot = is_lot iv_check_date = iv_check_date ).
|
|
check_germination( is_lot ).
|
|
check_moisture( is_lot ).
|
|
ENDMETHOD.
|
|
|
|
METHOD check_lot_no.
|
|
DATA(lv_letters) = substring( val = is_lot-lot_no len = 4 ).
|
|
DATA(lv_digits) = substring( val = is_lot-lot_no off = 4 len = 6 ).
|
|
IF lv_letters CN 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' OR lv_digits CN '0123456789'.
|
|
RAISE EXCEPTION TYPE {{p}}cx_lot_format.
|
|
ENDIF.
|
|
ENDMETHOD.
|
|
|
|
METHOD check_harvest_date.
|
|
IF is_lot-harvest_date IS INITIAL.
|
|
RAISE EXCEPTION TYPE {{p}}cx_lot_date.
|
|
ENDIF.
|
|
DATA(lv_age_in_days) = iv_check_date - is_lot-harvest_date.
|
|
IF lv_age_in_days < 0 OR lv_age_in_days <= c_max_age_days.
|
|
RAISE EXCEPTION TYPE {{p}}cx_lot_date.
|
|
ENDIF.
|
|
ENDMETHOD.
|
|
|
|
METHOD check_germination.
|
|
IF is_lot-germination < c_min_germination.
|
|
RAISE EXCEPTION TYPE {{p}}cx_lot_germination.
|
|
ENDIF.
|
|
ENDMETHOD.
|
|
|
|
METHOD check_moisture.
|
|
IF is_lot-moisture > c_max_moisture.
|
|
RAISE EXCEPTION TYPE {{p}}cx_lot_moisture.
|
|
ENDIF.
|
|
ENDMETHOD.
|
|
ENDCLASS.
|