44 lines
1022 B
ABAP
44 lines
1022 B
ABAP
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.
|