44 lines
874 B
ABAP
44 lines
874 B
ABAP
FUNCTION {{p}}kennel_fee
|
|
IMPORTING
|
|
iv_pet_type TYPE string
|
|
iv_nights TYPE i
|
|
iv_peak TYPE abap_bool
|
|
EXPORTING
|
|
ev_deposit TYPE decfloat34
|
|
CHANGING
|
|
cv_fee TYPE decfloat34
|
|
EXCEPTIONS
|
|
invalid_nights.
|
|
|
|
DATA lv_rate TYPE decfloat34.
|
|
|
|
ev_deposit = 0.
|
|
cv_fee = 0.
|
|
|
|
IF iv_nights < 1.
|
|
RAISE invalid_nights.
|
|
ENDIF.
|
|
|
|
CASE iv_pet_type.
|
|
WHEN 'DOG'.
|
|
lv_rate = '24.90'.
|
|
WHEN 'CAT'.
|
|
lv_rate = '17.90'.
|
|
WHEN 'RABBIT'.
|
|
lv_rate = '11.90'.
|
|
WHEN OTHERS.
|
|
RETURN.
|
|
ENDCASE.
|
|
|
|
cv_fee = lv_rate * iv_nights.
|
|
IF iv_peak = abap_true.
|
|
cv_fee = cv_fee * '1.2'.
|
|
ENDIF.
|
|
IF iv_nights >= 7.
|
|
cv_fee = cv_fee * '0.9'.
|
|
ENDIF.
|
|
cv_fee = round( val = cv_fee dec = 2 mode = cl_abap_math=>round_half_up ).
|
|
ev_deposit = round( val = cv_fee * '0.2' dec = 2 mode = cl_abap_math=>round_half_up ).
|
|
|
|
ENDFUNCTION.
|