53 lines
2.2 KiB
Markdown
53 lines
2.2 KiB
Markdown
# 1. Goal
|
|
The recycling yard pays its customers for scrap metal deliveries. The report
|
|
{{P}}SCRAP_PAY shows the payout of each metal type for one delivery day in an
|
|
ALV list. The yard uses the list to check the daily payouts.
|
|
|
|
The report is a legacy program. It works, but its code is hard to read and hard
|
|
to maintain. Refactor the report. The behavior stays the same.
|
|
|
|
# 2. Open questions
|
|
None.
|
|
|
|
# 3. Context
|
|
- Table {{P}}SCRAP exists in package $TMP and contains data.
|
|
Fields: DELIV_ID (INT4, key), METAL (CHAR 4), DELIV_DATE (DATS),
|
|
WEIGHT_KG (DEC 13,3), PRICE_KG (DEC 13,2).
|
|
- The executable program {{P}}SCRAP_PAY exists in package $TMP and is active.
|
|
It has a selection screen and shows an ALV list.
|
|
- The program {{P}}SCRAP_PAY contains the business rules of the payout list.
|
|
Read the code of the program before you change it.
|
|
|
|
# 4. Contract
|
|
- Refactor the executable program {{P}}SCRAP_PAY in package $TMP. The name stays
|
|
the same.
|
|
- The selection screen stays the same:
|
|
- Parameter P_DATE, type DATS, mandatory: the delivery day.
|
|
- Select-option S_METAL for the metal type.
|
|
- The ALV list stays the same. The output table has these columns with these
|
|
names and these value formats:
|
|
- METAL: the metal type.
|
|
- TOTAL_KG: the total weight of the metal in kg, 3 decimals.
|
|
- TOTAL_PAY: the total payout for the metal, 2 decimals.
|
|
- DELIV_CNT: the number of deliveries of the metal.
|
|
|
|
# 5. Business rules
|
|
- The behavior of the program stays the same. The code of the legacy program
|
|
{{P}}SCRAP_PAY defines every rule: which deliveries are included, how the
|
|
totals are calculated, and in which order the lines are shown.
|
|
- The rules of the legacy program are correct. Do not correct, add or remove a
|
|
rule.
|
|
|
|
# 6. Constraints
|
|
- Release target: SAP_BASIS 816 (ABAP Platform 2025).
|
|
- Coding standards: Clean ABAP. Small methods, clear names, no unused code, no
|
|
FORM routine. Read the data of the list with one database access.
|
|
No ATC priority 1 or 2 finding.
|
|
- Out of scope: do not change the table {{P}}SCRAP. Do not change the selection
|
|
screen, the ALV column names or the values of the ALV list.
|
|
|
|
# 7. Acceptance
|
|
- The program {{P}}SCRAP_PAY is active and has no syntax error.
|
|
- The hidden tests pass.
|
|
- Write ABAP Unit tests as local test classes in the program.
|