Files
abap-llm/tasks_gen/train/G1103/faulty/m2_wash_fee.func.abap
2026-10-05 18:02:52 +02:00

60 lines
1.2 KiB
ABAP

FUNCTION {{p}}wash_fee
IMPORTING
iv_program TYPE string
iv_vehicle TYPE string
iv_extra_wax TYPE abap_bool
iv_fleet TYPE abap_bool
EXPORTING
ev_reject TYPE abap_bool
CHANGING
cv_price TYPE decfloat34
EXCEPTIONS
invalid_program
invalid_vehicle.
DATA lv_price TYPE decfloat34.
ev_reject = abap_false.
IF iv_program <> 'BASIC' AND iv_program <> 'PLUS' AND iv_program <> 'PREMIUM'.
RAISE invalid_program.
ENDIF.
IF iv_vehicle <> 'S' AND iv_vehicle <> 'M' AND iv_vehicle <> 'L'.
RAISE invalid_vehicle.
ENDIF.
IF iv_vehicle = 'L' AND iv_program = 'BASIC'.
ev_reject = abap_true.
cv_price = 0.
RETURN.
ENDIF.
CASE iv_program.
WHEN 'BASIC'.
lv_price = '8.50'.
WHEN 'PLUS'.
lv_price = '12.50'.
WHEN 'PREMIUM'.
lv_price = '18.50'.
ENDCASE.
CASE iv_vehicle.
WHEN 'M'.
lv_price = lv_price + '2.50'.
WHEN 'L'.
lv_price = lv_price + '5.50'.
ENDCASE.
IF iv_extra_wax <> abap_true AND iv_program <> 'PREMIUM'.
lv_price = lv_price + '3.50'.
ENDIF.
IF iv_fleet = abap_true.
lv_price = round( val = lv_price * 85 / 100 dec = 2 mode = cl_abap_math=>round_half_up ).
ENDIF.
cv_price = lv_price.
ENDFUNCTION.