ADT fallback: Accept headers for FUNC; G0189 accepted; regen2 results
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
87
tasks_gen/eval/G0122/reference/track_fee.func.abap
Normal file
87
tasks_gen/eval/G0122/reference/track_fee.func.abap
Normal file
@@ -0,0 +1,87 @@
|
||||
FUNCTION {{p}}track_fee
|
||||
IMPORTING
|
||||
it_paths TYPE STANDARD TABLE
|
||||
EXPORTING
|
||||
et_fees TYPE STANDARD TABLE
|
||||
EXCEPTIONS
|
||||
invalid_distance
|
||||
invalid_category.
|
||||
|
||||
TYPES: BEGIN OF ty_sum,
|
||||
train_cat TYPE c LENGTH 2,
|
||||
path_count TYPE i,
|
||||
total_km TYPE p LENGTH 13 DECIMALS 2,
|
||||
total_fee TYPE p LENGTH 13 DECIMALS 2,
|
||||
END OF ty_sum.
|
||||
|
||||
DATA: lt_sums TYPE SORTED TABLE OF ty_sum WITH UNIQUE KEY train_cat,
|
||||
lv_cat TYPE c LENGTH 2,
|
||||
lv_km TYPE p LENGTH 13 DECIMALS 2,
|
||||
lv_flag TYPE c LENGTH 1,
|
||||
lv_rate TYPE p LENGTH 5 DECIMALS 2,
|
||||
lv_raw TYPE decfloat34,
|
||||
lv_fee TYPE p LENGTH 13 DECIMALS 2.
|
||||
|
||||
FIELD-SYMBOLS: <ls_in> TYPE any,
|
||||
<ls_out> TYPE any,
|
||||
<ls_sum> TYPE ty_sum,
|
||||
<lv_val> TYPE any.
|
||||
|
||||
CLEAR et_fees.
|
||||
|
||||
LOOP AT it_paths ASSIGNING <ls_in>.
|
||||
ASSIGN COMPONENT 'TRAIN_CAT' OF STRUCTURE <ls_in> TO <lv_val>.
|
||||
lv_cat = <lv_val>.
|
||||
ASSIGN COMPONENT 'DISTANCE_KM' OF STRUCTURE <ls_in> TO <lv_val>.
|
||||
lv_km = <lv_val>.
|
||||
ASSIGN COMPONENT 'NIGHT_FLAG' OF STRUCTURE <ls_in> TO <lv_val>.
|
||||
lv_flag = <lv_val>.
|
||||
|
||||
IF lv_km <= 0.
|
||||
RAISE invalid_distance.
|
||||
ENDIF.
|
||||
|
||||
CASE lv_cat.
|
||||
WHEN 'IC'.
|
||||
lv_rate = '1.20'.
|
||||
WHEN 'RG'.
|
||||
lv_rate = '0.90'.
|
||||
WHEN 'FR'.
|
||||
lv_rate = '0.60'.
|
||||
WHEN 'SP'.
|
||||
lv_rate = '1.50'.
|
||||
WHEN OTHERS.
|
||||
RAISE invalid_category.
|
||||
ENDCASE.
|
||||
|
||||
lv_raw = lv_km * lv_rate.
|
||||
IF lv_flag = 'X'.
|
||||
lv_raw = lv_raw * 12 / 10.
|
||||
ENDIF.
|
||||
lv_fee = round( val = lv_raw dec = 2 mode = cl_abap_math=>round_half_up ).
|
||||
IF lv_fee < 5.
|
||||
lv_fee = 5.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_sums ASSIGNING <ls_sum> WITH TABLE KEY train_cat = lv_cat.
|
||||
IF sy-subrc <> 0.
|
||||
INSERT VALUE ty_sum( train_cat = lv_cat ) INTO TABLE lt_sums ASSIGNING <ls_sum>.
|
||||
ENDIF.
|
||||
<ls_sum>-path_count = <ls_sum>-path_count + 1.
|
||||
<ls_sum>-total_km = <ls_sum>-total_km + lv_km.
|
||||
<ls_sum>-total_fee = <ls_sum>-total_fee + lv_fee.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT lt_sums ASSIGNING <ls_sum>.
|
||||
APPEND INITIAL LINE TO et_fees ASSIGNING <ls_out>.
|
||||
ASSIGN COMPONENT 'TRAIN_CAT' OF STRUCTURE <ls_out> TO <lv_val>.
|
||||
<lv_val> = <ls_sum>-train_cat.
|
||||
ASSIGN COMPONENT 'PATH_COUNT' OF STRUCTURE <ls_out> TO <lv_val>.
|
||||
<lv_val> = <ls_sum>-path_count.
|
||||
ASSIGN COMPONENT 'TOTAL_KM' OF STRUCTURE <ls_out> TO <lv_val>.
|
||||
<lv_val> = <ls_sum>-total_km.
|
||||
ASSIGN COMPONENT 'TOTAL_FEE' OF STRUCTURE <ls_out> TO <lv_val>.
|
||||
<lv_val> = <ls_sum>-total_fee.
|
||||
ENDLOOP.
|
||||
|
||||
ENDFUNCTION.
|
||||
Reference in New Issue
Block a user