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

40 lines
935 B
ABAP

FUNCTION {{p}}dlv_price
IMPORTING
iv_service TYPE string
iv_weight TYPE decfloat34
iv_distance TYPE decfloat34
EXPORTING
ev_skip TYPE abap_bool
CHANGING
cv_price TYPE decfloat34
EXCEPTIONS
invalid_weight.
ev_skip = abap_false.
IF iv_weight <= 0.
RAISE invalid_weight.
ENDIF.
IF iv_distance > 300.
ev_skip = abap_true.
RETURN.
ENDIF.
CASE iv_service.
WHEN 'EX'.
cv_price = round( val = 13 + iv_distance * '0.60' + iv_weight * '1.50'
dec = 2 mode = cl_abap_math=>round_half_up ).
IF cv_price < 6.
cv_price = 6.
ENDIF.
WHEN 'ST'.
cv_price = round( val = 5 + iv_distance * '0.30' + iv_weight * '0.80'
dec = 2 mode = cl_abap_math=>round_half_up ).
IF cv_price < 6.
cv_price = 6.
ENDIF.
WHEN OTHERS.
ev_skip = abap_true.
cv_price = 0.
ENDCASE.
ENDFUNCTION.