48 lines
2.0 KiB
Markdown
48 lines
2.0 KiB
Markdown
# 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.
|