50 lines
1.1 KiB
ABAP
50 lines
1.1 KiB
ABAP
FUNCTION {{p}}adopt_review
|
|
IMPORTING
|
|
iv_species TYPE string
|
|
iv_age_years TYPE i
|
|
iv_housing TYPE string
|
|
iv_garden TYPE abap_bool
|
|
iv_pets TYPE i
|
|
EXPORTING
|
|
ev_deposit TYPE decfloat34
|
|
ev_visit_day TYPE string
|
|
RAISING
|
|
{{p}}cx_adopt_reject.
|
|
|
|
IF iv_age_years < 18.
|
|
RAISE EXCEPTION NEW {{p}}cx_adopt_reject( iv_reason = 'TOO_YOUNG' ).
|
|
ENDIF.
|
|
|
|
DATA lv_deposit TYPE decfloat34.
|
|
CASE iv_species.
|
|
WHEN 'DOG'.
|
|
lv_deposit = 150.
|
|
WHEN 'CAT'.
|
|
lv_deposit = 80.
|
|
WHEN 'RABBIT'.
|
|
lv_deposit = 40.
|
|
WHEN OTHERS.
|
|
RAISE EXCEPTION NEW {{p}}cx_adopt_reject( iv_reason = 'UNKNOWN_SPECIES' ).
|
|
ENDCASE.
|
|
|
|
IF iv_species = 'DOG' AND iv_housing = 'FLAT' AND iv_garden = abap_false.
|
|
RAISE EXCEPTION NEW {{p}}cx_adopt_reject( iv_reason = 'NO_GARDEN' ).
|
|
ENDIF.
|
|
|
|
IF iv_pets > 2.
|
|
RAISE EXCEPTION NEW {{p}}cx_adopt_reject( iv_reason = 'TOO_MANY_PETS' ).
|
|
ENDIF.
|
|
|
|
IF iv_pets > 0.
|
|
lv_deposit = lv_deposit + 12.
|
|
ENDIF.
|
|
ev_deposit = lv_deposit.
|
|
|
|
IF iv_garden = abap_true.
|
|
ev_visit_day = 'SAT'.
|
|
ELSE.
|
|
ev_visit_day = 'WED'.
|
|
ENDIF.
|
|
|
|
ENDFUNCTION.
|