Stage 2 summary at 50 accepted trajectories
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
66
tasks_gen/train/G1144/reference/move_fee.func.abap
Normal file
66
tasks_gen/train/G1144/reference/move_fee.func.abap
Normal file
@@ -0,0 +1,66 @@
|
||||
FUNCTION {{p}}move_fee
|
||||
IMPORTING
|
||||
iv_order_no TYPE string
|
||||
iv_move_date TYPE d
|
||||
iv_work_hours TYPE decfloat34
|
||||
iv_box_count TYPE i
|
||||
iv_calc_mode TYPE string
|
||||
EXPORTING
|
||||
ev_fee TYPE decfloat34
|
||||
ev_msg TYPE string
|
||||
EXCEPTIONS
|
||||
invalid_order
|
||||
invalid_date
|
||||
invalid_hours
|
||||
invalid_count
|
||||
unknown_mode.
|
||||
|
||||
CONSTANTS lc_box_rate TYPE decfloat34 VALUE '1.5'.
|
||||
CONSTANTS lc_exp_rate TYPE decfloat34 VALUE '1.2'.
|
||||
|
||||
DATA lv_rate TYPE decfloat34.
|
||||
DATA lv_subtotal TYPE decfloat34.
|
||||
|
||||
ev_fee = 0.
|
||||
|
||||
IF iv_order_no IS INITIAL.
|
||||
ev_msg = 'Order number is missing'.
|
||||
RAISE invalid_order.
|
||||
ENDIF.
|
||||
|
||||
IF iv_move_date IS INITIAL.
|
||||
ev_msg = 'Move date is missing'.
|
||||
RAISE invalid_date.
|
||||
ENDIF.
|
||||
|
||||
IF iv_work_hours <= 0.
|
||||
ev_msg = 'Work hours are not positive'.
|
||||
RAISE invalid_hours.
|
||||
ENDIF.
|
||||
|
||||
IF iv_box_count < 0.
|
||||
ev_msg = 'Box count is negative'.
|
||||
RAISE invalid_count.
|
||||
ENDIF.
|
||||
|
||||
CASE iv_calc_mode.
|
||||
WHEN 'ECO'.
|
||||
lv_rate = 45.
|
||||
WHEN 'STD'.
|
||||
lv_rate = 60.
|
||||
WHEN 'EXP'.
|
||||
lv_rate = 75.
|
||||
WHEN OTHERS.
|
||||
ev_msg = 'Calculation mode is unknown'.
|
||||
RAISE unknown_mode.
|
||||
ENDCASE.
|
||||
|
||||
lv_subtotal = iv_work_hours * lv_rate + iv_box_count * lc_box_rate.
|
||||
IF iv_calc_mode = 'EXP'.
|
||||
lv_subtotal = lv_subtotal * lc_exp_rate.
|
||||
ENDIF.
|
||||
|
||||
ev_fee = round( val = lv_subtotal dec = 2 mode = cl_abap_math=>round_half_up ).
|
||||
ev_msg = 'OK'.
|
||||
|
||||
ENDFUNCTION.
|
||||
Reference in New Issue
Block a user