Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
76 lines
2.1 KiB
ABAP
76 lines
2.1 KiB
ABAP
REPORT {{p}}fleet_cost_old.
|
|
|
|
TYPES: BEGIN OF ty_out,
|
|
vehicle_id TYPE {{p}}vehicle-vehicle_id,
|
|
plate TYPE {{p}}vehicle-plate,
|
|
category TYPE {{p}}vehicle-category,
|
|
distance TYPE {{p}}trip-distance_km,
|
|
fuel_cost TYPE {{p}}trip-toll_fee,
|
|
toll_cost TYPE {{p}}trip-toll_fee,
|
|
total_cost TYPE {{p}}trip-toll_fee,
|
|
cost_per_km TYPE p LENGTH 15 DECIMALS 3,
|
|
END OF ty_out.
|
|
|
|
DATA: gt_out TYPE STANDARD TABLE OF ty_out,
|
|
gt_vehicle TYPE STANDARD TABLE OF {{p}}vehicle,
|
|
gt_trip TYPE STANDARD TABLE OF {{p}}trip,
|
|
gs_vehicle TYPE {{p}}vehicle,
|
|
gs_trip TYPE {{p}}trip,
|
|
gs_out TYPE ty_out,
|
|
go_alv TYPE REF TO cl_salv_table,
|
|
gv_cat TYPE {{p}}vehicle-category.
|
|
|
|
PARAMETERS: p_from TYPE d OBLIGATORY,
|
|
p_to TYPE d OBLIGATORY.
|
|
|
|
SELECT-OPTIONS: s_cat FOR gv_cat.
|
|
|
|
START-OF-SELECTION.
|
|
|
|
SELECT * FROM {{p}}vehicle INTO TABLE gt_vehicle.
|
|
|
|
LOOP AT gt_vehicle INTO gs_vehicle.
|
|
|
|
IF gs_vehicle-category IN s_cat.
|
|
|
|
CLEAR gs_out.
|
|
gs_out-vehicle_id = gs_vehicle-vehicle_id.
|
|
gs_out-plate = gs_vehicle-plate.
|
|
gs_out-category = gs_vehicle-category.
|
|
|
|
SELECT * FROM {{p}}trip INTO TABLE gt_trip
|
|
WHERE vehicle_id = gs_vehicle-vehicle_id
|
|
AND trip_date >= p_from
|
|
AND trip_date <= p_to.
|
|
|
|
IF sy-subrc = 0.
|
|
|
|
LOOP AT gt_trip INTO gs_trip.
|
|
gs_out-distance = gs_out-distance + gs_trip-distance_km.
|
|
gs_out-fuel_cost = gs_out-fuel_cost + gs_trip-fuel_liters * gs_trip-fuel_price.
|
|
gs_out-toll_cost = gs_out-toll_cost + gs_trip-toll_fee.
|
|
ENDLOOP.
|
|
|
|
gs_out-total_cost = gs_out-fuel_cost + gs_out-toll_cost.
|
|
|
|
IF gs_out-distance > 0.
|
|
gs_out-cost_per_km = gs_out-total_cost / gs_out-distance.
|
|
ENDIF.
|
|
|
|
APPEND gs_out TO gt_out.
|
|
|
|
ENDIF.
|
|
|
|
ENDIF.
|
|
|
|
ENDLOOP.
|
|
|
|
SORT gt_out BY total_cost DESCENDING.
|
|
|
|
TRY.
|
|
cl_salv_table=>factory( IMPORTING r_salv_table = go_alv
|
|
CHANGING t_table = gt_out ).
|
|
go_alv->display( ).
|
|
CATCH cx_salv_msg.
|
|
ENDTRY.
|