Files
2026-10-05 22:08:59 +02:00

1.7 KiB

1. Goal

The CDS view entity {{P}}I_RENTAL_FEE in package $TMP shows the fee of each rental of a car rental company. The view returns correct data, but its source is long and hard to read. Refactor the view in place. The behavior must stay the same.

2. Open questions

None.

3. Context

  • Table {{P}}RENTAL, package $TMP. One row for each rental. Key: RENTAL_ID (CHAR 10). Fields: CAR_GROUP (CHAR 1), SEASON (CHAR 1), RENTAL_DAYS (INT4).
  • The CDS view entity {{P}}I_RENTAL_FEE already exists in package $TMP. The view is active. It reads the table {{P}}RENTAL.
  • The source of the view is the only specification of the fee. Read the source before you change it.

4. Contract

  • Refactor the CDS view entity {{P}}I_RENTAL_FEE in package $TMP. The name stays the same. Do not create a second view.
  • Elements, with these names and this order: RENTAL_ID (key), CAR_GROUP, RENTAL_DAYS, FEE.
  • The view keeps the annotation @AccessControl.authorizationCheck: #NOT_REQUIRED.
  • The view shows one row for each row of the table {{P}}RENTAL.

5. Business rules

  1. The behavior of the view stays the same. The FEE of each row must not change.
  2. Rule 1 holds for all values of CAR_GROUP, SEASON and RENTAL_DAYS. This includes values that the source does not name.
  3. The element names and the element order stay the same.

6. Constraints

  • Release target: 8.16.
  • Coding standards: clean ABAP. The refactored source must be easy to read. Remove the deep nesting and the repeated logic. Keep the expressions short.
  • Out of scope: do not change the table {{P}}RENTAL.

7. Acceptance

  • The view {{P}}I_RENTAL_FEE is active and has no syntax error.
  • The hidden tests pass.
  • Write ABAP Unit tests with CL_CDS_TEST_ENVIRONMENT in a global test class.