Stage 2 summary at 50 accepted trajectories

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Kral
2026-10-05 18:02:52 +02:00
parent 332fb4601d
commit 5bcd1bf9cd
1230 changed files with 77563 additions and 33 deletions

View File

@@ -0,0 +1,78 @@
REPORT {{p}}ski_lift_old.
DATA: gv_lift TYPE {{p}}skiride-lift_id.
PARAMETERS p_season TYPE c LENGTH 4 OBLIGATORY.
SELECT-OPTIONS s_lift FOR gv_lift.
TYPES: BEGIN OF ty_line,
lift_id TYPE {{p}}skiride-lift_id,
rides TYPE i,
tickets TYPE i,
revenue TYPE p LENGTH 15 DECIMALS 2,
END OF ty_line.
DATA: gt_rides TYPE STANDARD TABLE OF {{p}}skiride,
gt_lines TYPE STANDARD TABLE OF ty_line,
gs_ride TYPE {{p}}skiride,
gs_line TYPE ty_line,
gv_index TYPE i,
gv_found TYPE c LENGTH 1,
gv_rev TYPE p LENGTH 15 DECIMALS 2.
START-OF-SELECTION.
PERFORM read_rides.
PERFORM build_lines.
PERFORM sort_lines.
PERFORM show_lines.
FORM read_rides.
SELECT * FROM {{p}}skiride INTO TABLE gt_rides
WHERE season = p_season
AND lift_id IN s_lift.
ENDFORM.
FORM build_lines.
LOOP AT gt_rides INTO gs_ride.
CLEAR: gv_found, gs_line.
LOOP AT gt_lines INTO gs_line.
IF gs_line-lift_id = gs_ride-lift_id.
gv_found = 'X'.
gv_index = sy-tabix.
EXIT.
ENDIF.
ENDLOOP.
IF gv_found = 'X'.
READ TABLE gt_lines INTO gs_line INDEX gv_index.
gs_line-rides = gs_line-rides + 1.
gs_line-tickets = gs_line-tickets + gs_ride-tickets.
COMPUTE gv_rev = gs_ride-tickets * gs_ride-fare.
gs_line-revenue = gs_line-revenue + gv_rev.
MODIFY gt_lines FROM gs_line INDEX gv_index.
ELSE.
CLEAR gs_line.
gs_line-lift_id = gs_ride-lift_id.
gs_line-rides = 1.
gs_line-tickets = gs_ride-tickets.
COMPUTE gs_line-revenue = gs_ride-tickets * gs_ride-fare.
APPEND gs_line TO gt_lines.
ENDIF.
ENDLOOP.
ENDFORM.
FORM sort_lines.
SORT gt_lines BY revenue DESCENDING.
ENDFORM.
FORM show_lines.
DATA: lo_alv TYPE REF TO cl_salv_table,
lx_msg TYPE REF TO cx_salv_msg.
TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING r_salv_table = lo_alv
CHANGING t_table = gt_lines.
CALL METHOD lo_alv->display.
CATCH cx_salv_msg INTO lx_msg.
MESSAGE lx_msg TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.
ENDFORM.

View File

@@ -0,0 +1,18 @@
CLASS {{p}}ski_seed DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES if_oo_adt_classrun.
ENDCLASS.
CLASS {{p}}ski_seed IMPLEMENTATION.
METHOD if_oo_adt_classrun~main.
DELETE FROM {{p}}skiride.
INSERT {{p}}skiride FROM TABLE @( VALUE #(
( ride_id = 1 lift_id = 'NORD' season = '2026' tickets = 10 fare = '25.00' )
( ride_id = 2 lift_id = 'NORD' season = '2026' tickets = 6 fare = '25.00' )
( ride_id = 3 lift_id = 'SUED' season = '2026' tickets = 20 fare = '30.00' )
( ride_id = 4 lift_id = 'SUED' season = '2026' tickets = 5 fare = '30.00' )
( ride_id = 5 lift_id = 'OST' season = '2026' tickets = 3 fare = '20.00' )
( ride_id = 6 lift_id = 'WEST' season = '2025' tickets = 100 fare = '40.00' ) ) ).
out->write( sy-dbcnt ).
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,13 @@
@EndUserText.label : 'Rides of the ski lifts'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table {{p}}skiride {
key client : abap.clnt not null;
key ride_id : abap.int4 not null;
lift_id : abap.char(4);
season : abap.char(4);
tickets : abap.int4;
fare : abap.dec(15,2);
}