Files
abap-llm/tasks_gen/train/G1150/spec.md
2026-10-05 18:02:52 +02:00

65 lines
2.2 KiB
Markdown

# 1. Goal
A farrier serves stables with a mobile shoeing round. The order desk calls the
function module {{P}}FARRIER_FEE once for each planned visit. The module returns
the fee of the visit, the number of weeks until the next visit, and a flag that
tells the desk that the visit must not be planned.
The module already exists in package $TMP. Its implementation is old code. The
code works, but it mixes several rules in one block and it uses hard-coded
numbers. Rewrite it so that a new colleague can read and change it.
The name and the public interface of the module must not change. The result of
the module must not change for any input.
# 2. Open questions
None.
# 3. Context
- The function group {{P}}FG_FARRIER exists in package $TMP.
- The function module {{P}}FARRIER_FEE is in this group and is active.
- The order desk and two planning programs call the module. They rely on the
current interface and on the current results.
# 4. Contract
Function module {{P}}FARRIER_FEE in function group {{P}}FG_FARRIER. Keep the
name and the interface. Do not add, remove or rename a parameter.
| Name | Kind | Type |
| --- | --- | --- |
| iv_horses | importing | i |
| iv_km | importing | decfloat34 |
| iv_new_shoes | importing | abap_bool |
| iv_contract | importing | abap_bool |
| ev_fee | exporting | decfloat34 |
| ev_weeks | exporting | i |
| ev_reject | exporting | abap_bool |
| invalid_horses | exception | - |
# 5. Business rules
The rules of the shoeing round are in the current implementation of
{{P}}FARRIER_FEE. Read that source. Every rule that the current code applies
stays in force. The module must return the same values as before for every
combination of input values.
# 6. Constraints
- Release target: 7.58.
- Coding standards: Clean ABAP. Give every value a meaningful name. Replace
hard-coded numbers with constants. Keep the procedures short and comment each
rule.
- The module stays in package $TMP.
- Out of scope: none.
# 7. Acceptance
- {{P}}FARRIER_FEE is active and free of syntax errors.
- The returned values are unchanged.
- The hidden tests pass.
- Add ABAP Unit tests for the module in a global test class.
- No ATC finding of priority 1 or priority 2.