Step F first pass: 81/92 accepted; budget floor 60 calls; rejected slots moved for regeneration

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
Kral
2026-10-03 12:10:52 +02:00
parent d3250acfb8
commit 39769afce8
741 changed files with 40573 additions and 317 deletions

View File

@@ -0,0 +1,51 @@
# 1. Goal
A scrapyard buys scrap metal from customers. A weighing program calls one
calculation to get the payout for a delivery. The payout has an amount and a
reason code.
# 2. Open questions
None.
# 3. Context
- The interface {{P}}IF_SCRAP_PAYOUT exists in package $TMP. It is active.
- The interface defines one method, the material codes, the reason codes, and the
structure of the result.
- Read the interface {{P}}IF_SCRAP_PAYOUT in package $TMP. This specification does
not repeat the signature of the interface.
# 4. Contract
- Create the class {{P}}SCRAP_PAYOUT in package $TMP.
- The class is public and final.
- The class implements the interface {{P}}IF_SCRAP_PAYOUT.
- The class has a public constructor without parameters.
- Do not add other public methods.
# 5. Business rules
Apply the rules in this sequence. Stop at the first rule that fails.
1. Convert the material code to upper case. The result must be one of the material
codes in the constant structure {{P}}IF_SCRAP_PAYOUT=>C_MATERIAL. If not, return
the reason MATERIAL and the amount 0.
2. The weight in kilograms must be greater than 0. If not, return the reason WEIGHT
and the amount 0.
3. The contamination in percent must be between 0 and 100. If not, return the reason
DIRTY and the amount 0.
4. The base price per kilogram is 4.20 for copper, 1.10 for aluminium, 0.30 for
steel, and 3.00 for brass.
5. The payable weight is the weight multiplied by the difference between 100 and the
contamination, divided by 100.
6. The amount is the payable weight multiplied by the base price of the material.
Round the amount to 2 decimal places.
7. Return the reason OK and the amount.
# 6. Constraints
- Release target: SAP_BASIS 816.
- Coding standards: Clean ABAP. Keep every method below 40 statements. Do not use
global variables. Pass large parameters by reference. Do not write comments that
restate the code.
- Out of scope: do not change the interface {{P}}IF_SCRAP_PAYOUT.
# 7. Acceptance
- The class {{P}}SCRAP_PAYOUT is active and has no syntax error.
- The hidden tests pass.
- Write your own ABAP Unit tests for the class.