Snapshot: new training tasks (balanced generation), docs
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
107
tasks_gen/train/G1935/reference/if_mix_recipe.intf.abap
Normal file
107
tasks_gen/train/G1935/reference/if_mix_recipe.intf.abap
Normal file
@@ -0,0 +1,107 @@
|
||||
INTERFACE {{p}}if_mix_recipe PUBLIC.
|
||||
TYPES ty_grade TYPE c LENGTH 4.
|
||||
TYPES ty_qty TYPE p LENGTH 8 DECIMALS 2.
|
||||
TYPES ty_status TYPE c LENGTH 10.
|
||||
TYPES:
|
||||
BEGIN OF ty_mix,
|
||||
grade TYPE ty_grade,
|
||||
cement_kg TYPE ty_qty,
|
||||
sand_kg TYPE ty_qty,
|
||||
gravel_kg TYPE ty_qty,
|
||||
water_l TYPE ty_qty,
|
||||
END OF ty_mix.
|
||||
|
||||
CONSTANTS:
|
||||
BEGIN OF c_grade,
|
||||
c20 TYPE ty_grade VALUE 'C20',
|
||||
c25 TYPE ty_grade VALUE 'C25',
|
||||
c30 TYPE ty_grade VALUE 'C30',
|
||||
c35 TYPE ty_grade VALUE 'C35',
|
||||
END OF c_grade,
|
||||
BEGIN OF c_status,
|
||||
ok TYPE ty_status VALUE 'OK',
|
||||
grade TYPE ty_status VALUE 'GRADE',
|
||||
volume TYPE ty_status VALUE 'VOLUME',
|
||||
END OF c_status.
|
||||
|
||||
METHODS check_order
|
||||
IMPORTING iv_grade TYPE ty_grade
|
||||
iv_volume TYPE ty_qty
|
||||
RETURNING VALUE(rv_status) TYPE ty_status.
|
||||
|
||||
METHODS mix_for
|
||||
IMPORTING iv_grade TYPE ty_grade
|
||||
iv_volume TYPE ty_qty
|
||||
RETURNING VALUE(rs_mix) TYPE ty_mix.
|
||||
ENDINTERFACE.
|
||||
|
||||
|
||||
INTERFACE {{p}}if_mix_recipe.
|
||||
METHOD check_order.
|
||||
DATA lv_grade TYPE ty_grade.
|
||||
lv_grade = to_upper( iv_grade ).
|
||||
IF lv_grade <> c_grade-c20
|
||||
AND lv_grade <> c_grade-c25
|
||||
AND lv_grade <> c_grade-c30
|
||||
AND lv_grade <> c_grade-c35.
|
||||
rv_status = c_status-grade.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
IF iv_volume < '0.50' OR iv_volume > '20.00'.
|
||||
rv_status = c_status-volume.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
rv_status = c_status-ok.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD mix_for.
|
||||
IF check_order( iv_grade = iv_grade iv_volume = iv_volume ) <> c_status-ok.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA lv_grade TYPE ty_grade.
|
||||
lv_grade = to_upper( iv_grade ).
|
||||
|
||||
DATA lv_cement TYPE ty_qty.
|
||||
DATA lv_sand TYPE ty_qty.
|
||||
DATA lv_gravel TYPE ty_qty.
|
||||
DATA lv_water TYPE ty_qty.
|
||||
|
||||
CASE lv_grade.
|
||||
WHEN c_grade-c20.
|
||||
lv_cement = '280.00'.
|
||||
lv_sand = '720.00'.
|
||||
lv_gravel = '1180.00'.
|
||||
lv_water = '175.00'.
|
||||
WHEN c_grade-c25.
|
||||
lv_cement = '320.00'.
|
||||
lv_sand = '700.00'.
|
||||
lv_gravel = '1160.00'.
|
||||
lv_water = '175.00'.
|
||||
WHEN c_grade-c30.
|
||||
lv_cement = '360.00'.
|
||||
lv_sand = '680.00'.
|
||||
lv_gravel = '1140.00'.
|
||||
lv_water = '170.00'.
|
||||
WHEN c_grade-c35.
|
||||
lv_cement = '400.00'.
|
||||
lv_sand = '660.00'.
|
||||
lv_gravel = '1120.00'.
|
||||
lv_water = '165.00'.
|
||||
WHEN OTHERS.
|
||||
RETURN.
|
||||
ENDCASE.
|
||||
|
||||
DATA lv_factor TYPE ty_qty.
|
||||
lv_factor = '1.00'.
|
||||
IF iv_volume < '2.00'.
|
||||
lv_factor = '1.10'.
|
||||
ENDIF.
|
||||
|
||||
rs_mix-grade = lv_grade.
|
||||
rs_mix-cement_kg = ceil( lv_cement * iv_volume * lv_factor ).
|
||||
rs_mix-sand_kg = ceil( lv_sand * iv_volume * lv_factor ).
|
||||
rs_mix-gravel_kg = ceil( lv_gravel * iv_volume * lv_factor ).
|
||||
rs_mix-water_l = ceil( lv_water * iv_volume * lv_factor ).
|
||||
ENDMETHOD.
|
||||
ENDINTERFACE.
|
||||
Reference in New Issue
Block a user