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.