FUNCTION {{p}}museum_fee_old IMPORTING iv_visitor TYPE string iv_day TYPE string iv_size TYPE i iv_member TYPE abap_bool EXPORTING ev_fee TYPE decfloat34 ev_note TYPE string EXCEPTIONS invalid_input. CONSTANTS: c_adult TYPE decfloat34 VALUE '12.00', c_child TYPE decfloat34 VALUE '6.00', c_senior TYPE decfloat34 VALUE '8.00', c_student TYPE decfloat34 VALUE '7.00', c_family TYPE decfloat34 VALUE '30.00', c_extra TYPE decfloat34 VALUE '6.00', c_member TYPE decfloat34 VALUE '10.00', c_weekend TYPE decfloat34 VALUE '1.20', c_group TYPE decfloat34 VALUE '0.90'. DATA lv_base TYPE decfloat34. DATA lv_total TYPE decfloat34. IF iv_size <= 0. RAISE invalid_input. ENDIF. CASE iv_visitor. WHEN 'ADULT'. lv_base = c_adult. WHEN 'CHILD'. lv_base = c_child. WHEN 'SENIOR'. lv_base = c_senior. WHEN 'STUDENT'. lv_base = c_student. WHEN 'FAMILY'. lv_base = c_family. WHEN OTHERS. RAISE invalid_input. ENDCASE. IF iv_visitor = 'FAMILY'. lv_total = lv_base. IF iv_size > 4. lv_total = lv_total + ( iv_size - 5 ) * c_extra. ENDIF. ELSE. lv_total = lv_base * iv_size. ENDIF. IF iv_day = 'SAT' OR iv_day = 'SUN'. lv_total = lv_total * c_weekend. ENDIF. IF iv_member = abap_true. lv_total = lv_total - c_member. IF lv_total < 0. lv_total = 0. ENDIF. ENDIF. IF iv_size >= 10. lv_total = lv_total * c_group. ENDIF. ev_fee = lv_total. ev_note = ''. CASE iv_visitor. WHEN 'ADULT'. ev_note = 'Adult'. WHEN 'CHILD'. ev_note = 'Child'. WHEN 'SENIOR'. ev_note = 'Senior'. WHEN 'STUDENT'. ev_note = 'Student'. WHEN 'FAMILY'. ev_note = 'Family'. ENDCASE. IF iv_member = abap_true. ev_note = ev_note && ' member'. ENDIF. IF iv_size >= 10. ev_note = ev_note && ' group'. ENDIF. ENDFUNCTION.