Files
abap-llm/tasks_gen/train/G1046/reference/tree_fee.func.abap

59 lines
1.1 KiB
ABAP

FUNCTION {{p}}tree_fee
IMPORTING
iv_species TYPE string
iv_height_cm TYPE i
iv_near_house TYPE abap_bool
EXPORTING
ev_fee TYPE decfloat34
ev_warning TYPE abap_bool
EXCEPTIONS
invalid_height.
DATA lv_base_fee TYPE decfloat34.
DATA lv_fee TYPE decfloat34.
DATA lv_metres TYPE i.
DATA lv_extra_metres TYPE i.
ev_fee = 0.
ev_warning = abap_false.
IF iv_height_cm <= 0.
RAISE invalid_height.
ENDIF.
CASE iv_species.
WHEN 'OAK'.
lv_base_fee = 200.
WHEN 'PINE'.
lv_base_fee = 150.
WHEN 'BIRCH'.
lv_base_fee = 120.
WHEN OTHERS.
lv_base_fee = 100.
ENDCASE.
lv_metres = iv_height_cm DIV 100.
IF iv_height_cm MOD 100 <> 0.
lv_metres = lv_metres + 1.
ENDIF.
lv_extra_metres = lv_metres - 5.
IF lv_extra_metres < 0.
lv_extra_metres = 0.
ENDIF.
lv_fee = lv_base_fee + lv_extra_metres * 25.
IF iv_near_house = abap_true.
lv_fee = lv_fee * 1125 / 1000.
ENDIF.
IF iv_height_cm > 2000.
ev_warning = abap_true.
lv_fee = lv_fee + 500.
ENDIF.
ev_fee = round( val = lv_fee dec = 2 ).
ENDFUNCTION.