35 lines
756 B
ABAP
35 lines
756 B
ABAP
FUNCTION {{p}}key_price
|
|
IMPORTING
|
|
iv_key_type TYPE string
|
|
iv_quantity TYPE i
|
|
EXPORTING
|
|
ev_price TYPE decfloat34
|
|
ev_valid TYPE abap_bool
|
|
EXCEPTIONS
|
|
invalid_quantity.
|
|
|
|
DATA lv_unit_price TYPE decfloat34.
|
|
ev_price = 0.
|
|
ev_valid = abap_false.
|
|
IF iv_quantity < 1.
|
|
RAISE invalid_quantity.
|
|
ENDIF.
|
|
CASE iv_key_type.
|
|
WHEN 'ST'.
|
|
lv_unit_price = '3.50'.
|
|
WHEN 'SE'.
|
|
lv_unit_price = '12.00'.
|
|
WHEN 'TR'.
|
|
lv_unit_price = '45.00'.
|
|
WHEN OTHERS.
|
|
RETURN.
|
|
ENDCASE.
|
|
ev_price = lv_unit_price * iv_quantity.
|
|
IF iv_quantity >= 10.
|
|
ev_price = ev_price * '0.9'.
|
|
ENDIF.
|
|
ev_price = round( val = ev_price dec = 2 mode = cl_abap_math=>round_half_up ).
|
|
ev_valid = abap_true.
|
|
|
|
ENDFUNCTION.
|