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:
@@ -1,65 +0,0 @@
|
||||
FUNCTION {{p}}bike_rebalance
|
||||
IMPORTING
|
||||
iv_dry_run TYPE abap_bool
|
||||
EXPORTING
|
||||
ev_applied TYPE i
|
||||
ev_rejected TYPE i.
|
||||
|
||||
DATA lt_state TYPE STANDARD TABLE OF {{p}}station.
|
||||
DATA lt_moves TYPE STANDARD TABLE OF {{p}}move.
|
||||
|
||||
SELECT station_id, station_name, capacity, bikes
|
||||
FROM {{p}}station
|
||||
INTO TABLE @lt_state.
|
||||
|
||||
SELECT move_no, source_id, target_id, quantity
|
||||
FROM {{p}}move
|
||||
INTO TABLE @lt_moves.
|
||||
|
||||
SORT lt_state BY station_id.
|
||||
SORT lt_moves BY move_no.
|
||||
|
||||
ev_applied = 0.
|
||||
ev_rejected = 0.
|
||||
|
||||
LOOP AT lt_moves INTO DATA(ls_move).
|
||||
IF ls_move-quantity <= 0
|
||||
OR ls_move-source_id = ls_move-target_id.
|
||||
ev_rejected = ev_rejected + 1.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_state ASSIGNING FIELD-SYMBOL(<ls_source>)
|
||||
WITH KEY station_id = ls_move-source_id BINARY SEARCH.
|
||||
IF sy-subrc <> 0.
|
||||
ev_rejected = ev_rejected + 1.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_state ASSIGNING FIELD-SYMBOL(<ls_target>)
|
||||
WITH KEY station_id = ls_move-target_id BINARY SEARCH.
|
||||
IF sy-subrc <> 0.
|
||||
ev_rejected = ev_rejected + 1.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
IF <ls_source>-bikes < ls_move-quantity
|
||||
OR <ls_target>-capacity - <ls_target>-bikes < ls_move-quantity.
|
||||
ev_rejected = ev_rejected + 1.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
<ls_source>-bikes = <ls_source>-bikes - ls_move-quantity.
|
||||
<ls_target>-bikes = <ls_target>-bikes + ls_move-quantity.
|
||||
ev_applied = ev_applied + 1.
|
||||
ENDLOOP.
|
||||
|
||||
IF iv_dry_run = abap_false.
|
||||
LOOP AT lt_state INTO DATA(ls_state).
|
||||
UPDATE {{p}}station
|
||||
SET bikes = @ls_state-bikes
|
||||
WHERE station_id = @ls_state-station_id.
|
||||
ENDLOOP.
|
||||
ENDIF.
|
||||
|
||||
ENDFUNCTION.
|
||||
@@ -1,130 +0,0 @@
|
||||
CLASS {{p}}t31_test DEFINITION PUBLIC FINAL CREATE PUBLIC
|
||||
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES ty_stations TYPE STANDARD TABLE OF {{p}}station.
|
||||
TYPES ty_moves TYPE STANDARD TABLE OF {{p}}move.
|
||||
TYPES ty_id TYPE {{p}}station-station_id.
|
||||
|
||||
METHODS given
|
||||
IMPORTING it_stations TYPE ty_stations
|
||||
it_moves TYPE ty_moves.
|
||||
|
||||
METHODS rebalance
|
||||
IMPORTING iv_dry_run TYPE abap_bool DEFAULT abap_false
|
||||
EXPORTING ev_applied TYPE i
|
||||
ev_rejected TYPE i.
|
||||
|
||||
METHODS bikes_of
|
||||
IMPORTING iv_id TYPE ty_id
|
||||
RETURNING VALUE(rv_bikes) TYPE i.
|
||||
|
||||
METHODS applies_move FOR TESTING.
|
||||
METHODS rejects_move FOR TESTING.
|
||||
METHODS dry_run FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}t31_test IMPLEMENTATION.
|
||||
|
||||
METHOD given.
|
||||
DATA(lt_stations) = it_stations.
|
||||
DATA(lt_moves) = it_moves.
|
||||
|
||||
LOOP AT lt_stations ASSIGNING FIELD-SYMBOL(<ls_station>).
|
||||
<ls_station>-client = sy-mandt.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT lt_moves ASSIGNING FIELD-SYMBOL(<ls_move>).
|
||||
<ls_move>-client = sy-mandt.
|
||||
ENDLOOP.
|
||||
|
||||
DELETE FROM {{p}}station.
|
||||
DELETE FROM {{p}}move.
|
||||
INSERT {{p}}station FROM TABLE @lt_stations.
|
||||
INSERT {{p}}move FROM TABLE @lt_moves.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rebalance.
|
||||
CALL FUNCTION '{{P}}BIKE_REBALANCE'
|
||||
EXPORTING
|
||||
iv_dry_run = iv_dry_run
|
||||
IMPORTING
|
||||
ev_applied = ev_applied
|
||||
ev_rejected = ev_rejected
|
||||
EXCEPTIONS
|
||||
OTHERS = 1.
|
||||
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD bikes_of.
|
||||
SELECT SINGLE bikes FROM {{p}}station
|
||||
INTO @rv_bikes
|
||||
WHERE station_id = @iv_id.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD applies_move.
|
||||
DATA lt_stations TYPE ty_stations.
|
||||
DATA lt_moves TYPE ty_moves.
|
||||
DATA lv_applied TYPE i.
|
||||
DATA lv_rejected TYPE i.
|
||||
|
||||
lt_stations = VALUE #(
|
||||
( station_id = 'S001' station_name = 'Alpha' capacity = 10 bikes = 5 )
|
||||
( station_id = 'S002' station_name = 'Beta' capacity = 10 bikes = 0 ) ).
|
||||
lt_moves = VALUE #(
|
||||
( move_no = 1 source_id = 'S001' target_id = 'S002' quantity = 3 ) ).
|
||||
|
||||
given( it_stations = lt_stations it_moves = lt_moves ).
|
||||
rebalance( IMPORTING ev_applied = lv_applied ev_rejected = lv_rejected ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( act = lv_applied exp = 1 ).
|
||||
cl_abap_unit_assert=>assert_equals( act = lv_rejected exp = 0 ).
|
||||
cl_abap_unit_assert=>assert_equals( act = bikes_of( 'S001' ) exp = 2 ).
|
||||
cl_abap_unit_assert=>assert_equals( act = bikes_of( 'S002' ) exp = 3 ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rejects_move.
|
||||
DATA lt_stations TYPE ty_stations.
|
||||
DATA lt_moves TYPE ty_moves.
|
||||
DATA lv_applied TYPE i.
|
||||
DATA lv_rejected TYPE i.
|
||||
|
||||
lt_stations = VALUE #(
|
||||
( station_id = 'S001' station_name = 'Alpha' capacity = 10 bikes = 1 )
|
||||
( station_id = 'S002' station_name = 'Beta' capacity = 10 bikes = 0 ) ).
|
||||
lt_moves = VALUE #(
|
||||
( move_no = 1 source_id = 'S001' target_id = 'S002' quantity = 4 ) ).
|
||||
|
||||
given( it_stations = lt_stations it_moves = lt_moves ).
|
||||
rebalance( IMPORTING ev_applied = lv_applied ev_rejected = lv_rejected ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( act = lv_applied exp = 0 ).
|
||||
cl_abap_unit_assert=>assert_equals( act = lv_rejected exp = 1 ).
|
||||
cl_abap_unit_assert=>assert_equals( act = bikes_of( 'S001' ) exp = 1 ).
|
||||
cl_abap_unit_assert=>assert_equals( act = bikes_of( 'S002' ) exp = 0 ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD dry_run.
|
||||
DATA lt_stations TYPE ty_stations.
|
||||
DATA lt_moves TYPE ty_moves.
|
||||
DATA lv_applied TYPE i.
|
||||
DATA lv_rejected TYPE i.
|
||||
|
||||
lt_stations = VALUE #(
|
||||
( station_id = 'S001' station_name = 'Alpha' capacity = 10 bikes = 5 )
|
||||
( station_id = 'S002' station_name = 'Beta' capacity = 10 bikes = 0 ) ).
|
||||
lt_moves = VALUE #(
|
||||
( move_no = 1 source_id = 'S001' target_id = 'S002' quantity = 2 ) ).
|
||||
|
||||
given( it_stations = lt_stations it_moves = lt_moves ).
|
||||
rebalance( EXPORTING iv_dry_run = abap_true
|
||||
IMPORTING ev_applied = lv_applied ev_rejected = lv_rejected ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( act = lv_applied exp = 1 ).
|
||||
cl_abap_unit_assert=>assert_equals( act = lv_rejected exp = 0 ).
|
||||
cl_abap_unit_assert=>assert_equals( act = bikes_of( 'S001' ) exp = 5 ).
|
||||
cl_abap_unit_assert=>assert_equals( act = bikes_of( 'S002' ) exp = 0 ).
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
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.
|
||||
75
tasks_gen/eval/G0122/reference/track_test.clas.abap
Normal file
75
tasks_gen/eval/G0122/reference/track_test.clas.abap
Normal file
@@ -0,0 +1,75 @@
|
||||
CLASS {{p}}track_test DEFINITION PUBLIC FINAL CREATE PUBLIC
|
||||
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES ty_paths TYPE {{P}}TRACK_TYPES=>tt_path.
|
||||
TYPES ty_fees TYPE {{P}}TRACK_TYPES=>tt_fee.
|
||||
TYPES ty_money TYPE {{P}}TRACK_TYPES=>ty_money.
|
||||
|
||||
METHODS fees_for
|
||||
IMPORTING it_paths TYPE ty_paths
|
||||
RETURNING VALUE(rt_fees) TYPE ty_fees.
|
||||
|
||||
METHODS one_category FOR TESTING.
|
||||
METHODS two_categories FOR TESTING.
|
||||
METHODS night_surcharge FOR TESTING.
|
||||
METHODS invalid_distance FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}track_test IMPLEMENTATION.
|
||||
|
||||
METHOD fees_for.
|
||||
CALL FUNCTION '{{P}}TRACK_FEE'
|
||||
EXPORTING
|
||||
it_paths = it_paths
|
||||
IMPORTING
|
||||
et_fees = rt_fees
|
||||
EXCEPTIONS
|
||||
invalid_distance = 1
|
||||
invalid_category = 2
|
||||
OTHERS = 3.
|
||||
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD one_category.
|
||||
DATA lt_paths TYPE ty_paths.
|
||||
lt_paths = VALUE #( ( path_id = '00000001' train_cat = 'SP' distance_km = '10.00' night_flag = '' ) ).
|
||||
DATA(lt_fees) = fees_for( lt_paths ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_fees ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV ty_money( '15.00' ) act = lt_fees[ 1 ]-total_fee ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD two_categories.
|
||||
DATA lt_paths TYPE ty_paths.
|
||||
lt_paths = VALUE #( ( path_id = '00000001' train_cat = 'RG' distance_km = '20.00' night_flag = '' )
|
||||
( path_id = '00000002' train_cat = 'FR' distance_km = '20.00' night_flag = '' ) ).
|
||||
DATA(lt_fees) = fees_for( lt_paths ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_fees ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 'FR' act = lt_fees[ 1 ]-train_cat ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 'RG' act = lt_fees[ 2 ]-train_cat ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD night_surcharge.
|
||||
DATA lt_paths TYPE ty_paths.
|
||||
lt_paths = VALUE #( ( path_id = '00000001' train_cat = 'FR' distance_km = '50.00' night_flag = 'X' ) ).
|
||||
DATA(lt_fees) = fees_for( lt_paths ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV ty_money( '36.00' ) act = lt_fees[ 1 ]-total_fee ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD invalid_distance.
|
||||
DATA lt_paths TYPE ty_paths.
|
||||
lt_paths = VALUE #( ( path_id = '00000001' train_cat = 'IC' distance_km = '0.00' night_flag = '' ) ).
|
||||
DATA lt_fees TYPE ty_fees.
|
||||
CALL FUNCTION '{{P}}TRACK_FEE'
|
||||
EXPORTING
|
||||
it_paths = lt_paths
|
||||
IMPORTING
|
||||
et_fees = lt_fees
|
||||
EXCEPTIONS
|
||||
invalid_distance = 1
|
||||
OTHERS = 2.
|
||||
cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ).
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user