FUNCTION {{p}}heli_fee IMPORTING iv_tour_type TYPE string iv_passengers TYPE i iv_minutes TYPE i iv_member TYPE abap_bool EXPORTING ev_skip TYPE abap_bool CHANGING cv_fee TYPE decfloat34 EXCEPTIONS invalid_passengers invalid_minutes. DATA lo_pricer TYPE REF TO {{p}}heli_pricer. DATA lv_fee TYPE decfloat34. lo_pricer = NEW #( ). TRY. lo_pricer->calculate( EXPORTING iv_tour_type = iv_tour_type iv_passengers = iv_passengers iv_minutes = iv_minutes iv_member = iv_member IMPORTING ev_skip = ev_skip ev_fee = lv_fee ). CATCH {{p}}cx_heli_invalid INTO DATA(lo_error). CASE lo_error->mv_reason. WHEN {{p}}cx_heli_invalid=>co_reason-passengers. RAISE invalid_passengers. WHEN OTHERS. RAISE invalid_minutes. ENDCASE. ENDTRY. IF ev_skip <> abap_false. cv_fee = lv_fee. ENDIF. ENDFUNCTION.