60 lines
1.2 KiB
ABAP
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' OR 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.
|