FUNCTION {{p}}guard_fee IMPORTING iv_shift_type TYPE string iv_hours TYPE decfloat34 EXPORTING ev_surcharge TYPE abap_bool CHANGING cv_fee TYPE decfloat34 EXCEPTIONS invalid_hours. CONSTANTS c_base_rate TYPE decfloat34 VALUE '25.50'. CONSTANTS c_night_factor TYPE decfloat34 VALUE '1.25'. CONSTANTS c_holiday_factor TYPE decfloat34 VALUE '2.00'. CONSTANTS c_min_fee TYPE decfloat34 VALUE '50.00'. DATA lv_known TYPE abap_bool. ev_surcharge = abap_false. IF iv_hours <= 0. RAISE invalid_hours. ENDIF. CASE iv_shift_type. WHEN 'DAY'. lv_known = abap_true. cv_fee = round( val = iv_hours * c_base_rate dec = 2 ). WHEN 'NIGHT'. lv_known = abap_true. ev_surcharge = abap_true. cv_fee = round( val = iv_hours * c_base_rate * c_night_factor dec = 3 ). WHEN 'HOLIDAY'. lv_known = abap_true. ev_surcharge = abap_true. cv_fee = round( val = iv_hours * c_base_rate * c_holiday_factor dec = 2 ). WHEN OTHERS. cv_fee = 0. ENDCASE. IF lv_known = abap_true AND cv_fee < c_min_fee. cv_fee = c_min_fee. ENDIF. ENDFUNCTION.