FUNCTION {{p}}cine_fee_old IMPORTING iv_show_type TYPE string iv_seats TYPE i iv_show_time TYPE t iv_cust_type TYPE string EXPORTING ev_total TYPE decfloat34 ev_discount TYPE decfloat34 EXCEPTIONS invalid_input. CONSTANTS: c_price_2d TYPE decfloat34 VALUE '9.00', c_price_3d TYPE decfloat34 VALUE '12.50', c_price_imax TYPE decfloat34 VALUE '16.00', c_booking_fee TYPE decfloat34 VALUE '0.50', c_percent TYPE decfloat34 VALUE 100, c_disc_child TYPE decfloat34 VALUE 40, c_disc_senior TYPE decfloat34 VALUE 30, c_disc_student TYPE decfloat34 VALUE 20, c_disc_matinee TYPE decfloat34 VALUE 25, c_disc_group TYPE decfloat34 VALUE 10, c_disc_max TYPE decfloat34 VALUE 60, c_group_seats TYPE i VALUE 8, c_matinee_end TYPE t VALUE '170000'. DATA: lv_base TYPE decfloat34, lv_discount TYPE decfloat34, lv_price TYPE decfloat34. IF iv_seats < 1. RAISE invalid_input. ENDIF. CASE iv_show_type. WHEN '2D'. lv_base = c_price_2d. WHEN '3D'. lv_base = c_price_3d. WHEN 'IMAX'. lv_base = c_price_imax. WHEN OTHERS. RAISE invalid_input. ENDCASE. CASE iv_cust_type. WHEN 'CHILD'. lv_discount = c_disc_child. WHEN 'SENIOR'. lv_discount = c_disc_senior. WHEN 'STUDENT'. lv_discount = c_disc_student. WHEN 'ADULT'. lv_discount = 0. WHEN OTHERS. RAISE invalid_input. ENDCASE. IF iv_show_time < c_matinee_end AND iv_cust_type <> 'CHILD'. lv_discount = lv_discount + c_disc_matinee. ENDIF. IF iv_seats >= c_group_seats. lv_discount = lv_discount + c_disc_group. ENDIF. IF lv_discount > c_disc_max. lv_discount = c_disc_max. ENDIF. lv_price = lv_base - lv_base * lv_discount / c_percent + c_booking_fee. ev_total = round( val = lv_price * iv_seats dec = 2 mode = cl_abap_math=>round_half_up ). ev_discount = lv_discount. ENDFUNCTION.