1.6 KiB
1.6 KiB
1. Goal
A pet grooming salon bills its customers for the grooming of their pets. The salon uses the report {{P}}GROOM_BILL_OLD to see the charge of each grooming order of one day.
2. Open questions
None.
3. Context
- The legacy report {{P}}GROOM_BILL_OLD exists in package $TMP. It is active. It reads the table {{P}}GROOM and shows the result with CL_SALV_TABLE.
- The table {{P}}GROOM contains data. Fields: GROOM_ID (INT4, key), PET (CHAR 10), COAT (CHAR 8), WEIGHT_KG (DEC 5,1), SERVICE (CHAR 6), VISIT_DATE (DATS).
- The legacy report has a selection screen with the parameter P_DATE and the select-option S_PET.
4. Contract
- Refactor the report {{P}}GROOM_BILL_OLD in package $TMP. The name stays the same.
- The selection screen stays the same:
- Parameter P_DATE, type DATS, mandatory: the visit date to include.
- Select-option S_PET for the pet kind.
- The ALV output stays the same. The output table has these columns with these names: GROOM_ID, PET, SERVICE, CHARGE.
5. Business rules
The behavior of the report stays the same. The rules are in the legacy code of {{P}}GROOM_BILL_OLD. Read the legacy code and keep every rule.
6. Constraints
- Release target: 7.58.
- Coding standards: Clean ABAP. Read the data with one database access. Keep every method below 40 statements. Do not use a database access in a loop.
- Out of scope: do not change {{P}}GROOM and {{P}}GROOM_SEED.
7. Acceptance
- The report is active and has no syntax error.
- The behavior of the report is unchanged.
- The hidden tests pass.
- Write ABAP Unit tests as local test classes in the report.