2.0 KiB
2.0 KiB
1. Goal
A safety-services company inspects fire extinguishers at customer sites. The inspection office runs the report {{P}}EXT_CHECK_OLD in package $TMP to see which extinguishers need attention. The report works, but the source is a legacy tangle. Rewrite the source so that a colleague can read it and change it. The observable behavior of the report must not change.
2. Open questions
None.
3. Context
- {{P}}EXT_CHECK_OLD is an executable program in package $TMP. It is active.
- {{P}}EXTING is a database table in package $TMP with the inspection master data: EXT_ID (INT4, key), SITE (CHAR 6), EXT_TYPE (CHAR 2), WEIGHT_G (INT4), PRESSURE_BAR (INT4), LAST_CHECK (DATS), NEXT_CHECK (DATS).
- The program reads the table and writes one output line for each extinguisher.
4. Contract
- Keep the program name {{P}}EXT_CHECK_OLD and the package $TMP.
- Keep the selection screen unchanged:
- P_FROM, type DATS, obligatory.
- P_TO, type DATS, obligatory.
- S_SITE, select-option for SITE.
- P_DEFECT, checkbox.
- The output is an ALV list (CL_SALV_TABLE). One output line has the columns EXT_ID, SITE, EXT_TYPE, WEIGHT_G, PRESSURE_BAR, STATE and URGENCY.
- No other public name of the program changes.
5. Business rules
The present source of {{P}}EXT_CHECK_OLD defines the rules. Read that source before you change anything. Every rule stays in force: the selection logic, the special cases, the values of the columns STATE and URGENCY, and the order of the output lines.
6. Constraints
- Release target: 7.58.
- Coding standards: Clean ABAP. Split the logic into small methods with clear names. No method has 40 statements or more. Read the database with a single SELECT. Do not use obsolete language elements.
- Out of scope: do not change the table {{P}}EXTING and the seed class {{P}}EXT_SEED.
7. Acceptance
- The program is active and free of syntax errors.
- The output is identical to the output before the change.
- The hidden tests pass.
- Add ABAP Unit tests as local test classes in the program.