Stage 2 summary at 50 accepted trajectories
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
73
tasks_gen/train/G1093/spec.md
Normal file
73
tasks_gen/train/G1093/spec.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# 1. Goal
|
||||
A paint shop mixes custom paint colours. A customer order contains one or more
|
||||
tint components. The checkout program calls one function module for each order.
|
||||
The function module returns the total volume and the price of the mix.
|
||||
|
||||
# 2. Open questions
|
||||
None.
|
||||
|
||||
# 3. Context
|
||||
- The class {{P}}PAINT_MIX exists in package $TMP. It contains the public types
|
||||
ty_tint and ty_tints. The checkout program and the function module use these
|
||||
types.
|
||||
- The table {{P}}TINTPR exists in package $TMP. It contains the price of one
|
||||
millilitre of each tint. The class {{P}}PAINT_MIX fills this table.
|
||||
- The function group {{P}}FG_PAINT exists in package $TMP.
|
||||
- The function module {{P}}MIX_SAMPLE exists in this function group. It is a
|
||||
sample. It shows the interface that the checkout program uses.
|
||||
|
||||
# 4. Contract
|
||||
- Create the function module {{P}}MIX_PRICE in function group {{P}}FG_PAINT.
|
||||
- Use exactly this interface:
|
||||
|
||||
IMPORTING
|
||||
it_tints TYPE {{P}}PAINT_MIX=>TY_TINTS
|
||||
EXPORTING
|
||||
ev_volume TYPE decfloat34
|
||||
ev_price TYPE decfloat34
|
||||
EXCEPTIONS
|
||||
no_components
|
||||
invalid_quantity
|
||||
unknown_tint
|
||||
|
||||
- The type {{P}}PAINT_MIX=>ty_tint has these components:
|
||||
tint_id type c, length 4
|
||||
quantity_ml type i
|
||||
- The type {{P}}PAINT_MIX=>ty_tints is a table of ty_tint.
|
||||
- The table {{P}}TINTPR has these fields:
|
||||
tint_id type c, length 4
|
||||
price_ml type packed number, 13 digits, 3 decimals
|
||||
- The table {{P}}TINTPR contains this data:
|
||||
WHIT 0.020
|
||||
BLUE 0.045
|
||||
GREY 0.030
|
||||
GOLD 0.250
|
||||
|
||||
# 5. Business rules
|
||||
1. The component quantity_ml is a volume in millilitres.
|
||||
2. If it_tints is empty, raise the exception NO_COMPONENTS.
|
||||
3. If a component has a quantity_ml of zero or less, raise the exception
|
||||
INVALID_QUANTITY.
|
||||
4. If a component has a tint_id that is not in the table {{P}}TINTPR, raise the
|
||||
exception UNKNOWN_TINT.
|
||||
5. Check rule 2 first. Then check rule 3 for all components. Then check rule 4
|
||||
for all components. Raise only the first exception that occurs.
|
||||
6. ev_volume is the sum of the quantity_ml of all components. If the same
|
||||
tint_id occurs more than once, all its quantities count.
|
||||
7. The material price of a component is its quantity_ml multiplied by the
|
||||
price_ml of its tint.
|
||||
8. The mixing fee is 1.50 for each different tint_id in the order. A tint_id
|
||||
that occurs more than once counts once.
|
||||
9. ev_price is the sum of the material prices of all components plus the mixing
|
||||
fee. Round ev_price half up to 2 decimals.
|
||||
|
||||
# 6. Constraints
|
||||
- Release target: 7.58 (the system runs SAP_BASIS 816).
|
||||
- Use Clean ABAP. Keep each method below 40 statements.
|
||||
- Out of scope: do not change the class {{P}}PAINT_MIX, the table {{P}}TINTPR,
|
||||
and the function module {{P}}MIX_SAMPLE.
|
||||
|
||||
# 7. Acceptance
|
||||
- The function module {{P}}MIX_PRICE is active and has no syntax error.
|
||||
- The hidden tests pass.
|
||||
- Write ABAP Unit tests for the function module in a global test class.
|
||||
Reference in New Issue
Block a user