1.9 KiB
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
- 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.
- The selection screen, the filter, the totals and the sort order do not change.
- The report must stay fast when the table {{P}}SKIRIDE grows. Do not read the same data more than one time.
- 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.