Stage 2 summary at 50 accepted trajectories
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
13
tasks_gen/train/G1110/seed/scrap.tabl.asabap
Normal file
13
tasks_gen/train/G1110/seed/scrap.tabl.asabap
Normal file
@@ -0,0 +1,13 @@
|
||||
@EndUserText.label : 'Scrap metal deliveries'
|
||||
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
|
||||
@AbapCatalog.tableCategory : #TRANSPARENT
|
||||
@AbapCatalog.deliveryClass : #A
|
||||
@AbapCatalog.dataMaintenance : #RESTRICTED
|
||||
define table {{p}}scrap {
|
||||
key client : abap.clnt not null;
|
||||
key deliv_id : abap.int4 not null;
|
||||
metal : abap.char(4);
|
||||
deliv_date : abap.dats;
|
||||
weight_kg : abap.dec(13,3);
|
||||
price_kg : abap.dec(13,2);
|
||||
}
|
||||
105
tasks_gen/train/G1110/seed/scrap_pay.prog.abap
Normal file
105
tasks_gen/train/G1110/seed/scrap_pay.prog.abap
Normal file
@@ -0,0 +1,105 @@
|
||||
REPORT {{p}}scrap_pay.
|
||||
|
||||
*--------------------------------------------------------------------*
|
||||
* Payout list of the recycling yard.
|
||||
* Legacy program. The output columns and the values must not change.
|
||||
*--------------------------------------------------------------------*
|
||||
|
||||
TYPES: BEGIN OF ty_out,
|
||||
metal TYPE {{p}}scrap-metal,
|
||||
total_kg TYPE p LENGTH 13 DECIMALS 3,
|
||||
total_pay TYPE p LENGTH 15 DECIMALS 2,
|
||||
deliv_cnt TYPE i,
|
||||
END OF ty_out.
|
||||
|
||||
DATA: gv_metal TYPE {{p}}scrap-metal,
|
||||
gt_scrap TYPE STANDARD TABLE OF {{p}}scrap,
|
||||
gt_out TYPE STANDARD TABLE OF ty_out,
|
||||
gs_out TYPE ty_out.
|
||||
|
||||
CONSTANTS: c_bonus TYPE p LENGTH 5 DECIMALS 2 VALUE '1.10',
|
||||
c_limit TYPE p LENGTH 13 DECIMALS 3 VALUE '500.000'.
|
||||
|
||||
PARAMETERS p_date TYPE d OBLIGATORY.
|
||||
SELECT-OPTIONS s_metal FOR gv_metal.
|
||||
|
||||
START-OF-SELECTION.
|
||||
PERFORM read_data.
|
||||
PERFORM build_totals.
|
||||
PERFORM add_bonus.
|
||||
PERFORM sort_list.
|
||||
PERFORM show_list.
|
||||
|
||||
*&---------------------------------------------------------------------*
|
||||
*& Form read_data
|
||||
*&---------------------------------------------------------------------*
|
||||
FORM read_data.
|
||||
CLEAR gt_scrap.
|
||||
SELECT * FROM {{p}}scrap INTO TABLE gt_scrap
|
||||
WHERE deliv_date = p_date
|
||||
AND metal IN s_metal.
|
||||
ENDFORM.
|
||||
|
||||
*&---------------------------------------------------------------------*
|
||||
*& Form build_totals
|
||||
*&---------------------------------------------------------------------*
|
||||
FORM build_totals.
|
||||
DATA: ls_scrap TYPE {{p}}scrap,
|
||||
lv_pay TYPE p LENGTH 15 DECIMALS 2,
|
||||
lv_index TYPE sy-tabix.
|
||||
|
||||
CLEAR gt_out.
|
||||
LOOP AT gt_scrap INTO ls_scrap.
|
||||
CLEAR lv_index.
|
||||
READ TABLE gt_out INTO gs_out WITH KEY metal = ls_scrap-metal.
|
||||
IF sy-subrc = 0.
|
||||
lv_index = sy-tabix.
|
||||
ELSE.
|
||||
CLEAR gs_out.
|
||||
gs_out-metal = ls_scrap-metal.
|
||||
ENDIF.
|
||||
lv_pay = ls_scrap-weight_kg * ls_scrap-price_kg.
|
||||
gs_out-total_kg = gs_out-total_kg + ls_scrap-weight_kg.
|
||||
gs_out-total_pay = gs_out-total_pay + lv_pay.
|
||||
gs_out-deliv_cnt = gs_out-deliv_cnt + 1.
|
||||
IF lv_index IS INITIAL.
|
||||
APPEND gs_out TO gt_out.
|
||||
ELSE.
|
||||
MODIFY gt_out FROM gs_out INDEX lv_index.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDFORM.
|
||||
|
||||
*&---------------------------------------------------------------------*
|
||||
*& Form add_bonus
|
||||
*&---------------------------------------------------------------------*
|
||||
FORM add_bonus.
|
||||
LOOP AT gt_out INTO gs_out.
|
||||
IF gs_out-total_kg >= c_limit.
|
||||
gs_out-total_pay = gs_out-total_pay * c_bonus.
|
||||
MODIFY gt_out FROM gs_out.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDFORM.
|
||||
|
||||
*&---------------------------------------------------------------------*
|
||||
*& Form sort_list
|
||||
*&---------------------------------------------------------------------*
|
||||
FORM sort_list.
|
||||
SORT gt_out BY total_pay DESCENDING.
|
||||
ENDFORM.
|
||||
|
||||
*&---------------------------------------------------------------------*
|
||||
*& Form show_list
|
||||
*&---------------------------------------------------------------------*
|
||||
FORM show_list.
|
||||
DATA lo_alv TYPE REF TO cl_salv_table.
|
||||
|
||||
TRY.
|
||||
cl_salv_table=>factory( IMPORTING r_salv_table = lo_alv
|
||||
CHANGING t_table = gt_out ).
|
||||
lo_alv->display( ).
|
||||
CATCH cx_salv_msg INTO DATA(lx_error).
|
||||
MESSAGE lx_error TYPE 'I' DISPLAY LIKE 'E'.
|
||||
ENDTRY.
|
||||
ENDFORM.
|
||||
21
tasks_gen/train/G1110/seed/scrap_seed.clas.abap
Normal file
21
tasks_gen/train/G1110/seed/scrap_seed.clas.abap
Normal file
@@ -0,0 +1,21 @@
|
||||
CLASS {{p}}scrap_seed DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES if_oo_adt_classrun.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS {{p}}scrap_seed IMPLEMENTATION.
|
||||
METHOD if_oo_adt_classrun~main.
|
||||
DELETE FROM {{p}}scrap.
|
||||
INSERT {{p}}scrap FROM TABLE @( VALUE #(
|
||||
( deliv_id = 1 metal = 'CU' deliv_date = '20260115' weight_kg = '300.000' price_kg = '6.00' )
|
||||
( deliv_id = 2 metal = 'CU' deliv_date = '20260115' weight_kg = '250.000' price_kg = '6.00' )
|
||||
( deliv_id = 3 metal = 'AL' deliv_date = '20260115' weight_kg = '100.000' price_kg = '1.50' )
|
||||
( deliv_id = 4 metal = 'AL' deliv_date = '20260115' weight_kg = '200.000' price_kg = '1.20' )
|
||||
( deliv_id = 5 metal = 'AL' deliv_date = '20260115' weight_kg = '200.000' price_kg = '1.50' )
|
||||
( deliv_id = 6 metal = 'FE' deliv_date = '20260115' weight_kg = '400.000' price_kg = '0.20' )
|
||||
( deliv_id = 7 metal = 'BR' deliv_date = '20260115' weight_kg = '20.000' price_kg = '3.00' )
|
||||
( deliv_id = 8 metal = 'CU' deliv_date = '20260110' weight_kg = '500.000' price_kg = '6.00' )
|
||||
( deliv_id = 9 metal = 'BR' deliv_date = '20260110' weight_kg = '10.000' price_kg = '3.00' ) ) ).
|
||||
out->write( sy-dbcnt ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user