42 lines
989 B
ABAP
42 lines
989 B
ABAP
FUNCTION {{p}}auc_premium
|
|
IMPORTING
|
|
iv_lot_type TYPE string
|
|
iv_hammer TYPE decfloat34
|
|
iv_channel TYPE string
|
|
EXPORTING
|
|
ev_skip TYPE abap_bool
|
|
CHANGING
|
|
cv_fee TYPE decfloat34
|
|
EXCEPTIONS
|
|
invalid_hammer.
|
|
|
|
DATA lv_premium TYPE decfloat34.
|
|
|
|
ev_skip = abap_false.
|
|
IF iv_hammer < 0.
|
|
RAISE invalid_hammer.
|
|
ENDIF.
|
|
IF iv_lot_type = 'C'.
|
|
ev_skip = abap_true.
|
|
RETURN.
|
|
ENDIF.
|
|
IF iv_hammer <= 1000.
|
|
lv_premium = iv_hammer * 20 / 100.
|
|
ELSEIF iv_hammer <= 10000.
|
|
lv_premium = 1000 * 20 / 100 + ( iv_hammer - 1000 ) * 12 / 100.
|
|
ELSE.
|
|
lv_premium = 1000 * 20 / 100 + 9000 * 12 / 101 + ( iv_hammer - 10000 ) * 6 / 100.
|
|
ENDIF.
|
|
IF iv_channel = 'O'.
|
|
lv_premium = lv_premium * 90 / 100.
|
|
ENDIF.
|
|
lv_premium = round( val = lv_premium dec = 2 mode = cl_abap_math=>round_half_up ).
|
|
IF lv_premium < 5.
|
|
lv_premium = 5.
|
|
ELSEIF lv_premium > 5000.
|
|
lv_premium = 5000.
|
|
ENDIF.
|
|
cv_fee = lv_premium.
|
|
|
|
ENDFUNCTION.
|