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

1.9 KiB

1. Goal

Refactor the legacy report {{P}}SKI_LIFT_OLD in package $TMP. The report shows the rides and the revenue of each lift of a ski resort for one season. The operations team uses the report to compare the lifts. The behavior of the report stays the same.

2. Open questions

None.

3. Context

  • The executable program {{P}}SKI_LIFT_OLD exists in package $TMP. It is active. The legacy code of this program is the specification of its behavior.
  • The table {{P}}SKIRIDE exists in package $TMP. It contains data. Fields: RIDE_ID (INT4, key), LIFT_ID (CHAR 4), SEASON (CHAR 4), TICKETS (INT4), FARE (DEC 15,2).
  • One row of {{P}}SKIRIDE is one ride of one lift. FARE is the price of one ticket of this ride.

4. Contract

  • Refactor the executable program {{P}}SKI_LIFT_OLD in package $TMP. The name stays the same.
  • The selection screen stays the same:
    • Parameter P_SEASON, type CHAR 4, mandatory.
    • Select-option S_LIFT for the lift.
  • Show the result with CL_SALV_TABLE. The output table has these columns, with these names: LIFT_ID, RIDES, TICKETS, REVENUE.

5. Business rules

  1. The behavior of the report stays the same. The legacy code in {{P}}SKI_LIFT_OLD is the specification. Read the legacy code. Do not guess.
  2. The selection screen, the filter, the totals and the sort order do not change.
  3. The report must stay fast when the table {{P}}SKIRIDE grows. Do not read the same data more than one time.
  4. The code must be easy to maintain.

6. Constraints

  • Release target: 8.16.
  • Coding standards: Clean ABAP. No method has more than 40 statements. No database access in a loop.
  • Out of scope: do not change {{P}}SKIRIDE and {{P}}SKI_SEED.

7. Acceptance

  • The program is active and has no syntax error.
  • The behavior is the same as the behavior of the legacy code.
  • The hidden tests pass.
  • Write ABAP Unit tests as local test classes in the program.