# 1. Goal The program {{P}}NEWS_DIST_OLD in package $TMP is the legacy distribution report of a regional newspaper publisher. It shows, for a period, the copies that each newsagent received and returned. The report works, but its source does not meet the current quality standards of the company. Refactor the source of {{P}}NEWS_DIST_OLD in place. The behavior of the program stays the same. # 2. Open questions None. # 3. Context - The executable program {{P}}NEWS_DIST_OLD exists in package $TMP and is active. Its source is the legacy code that you refactor. - The tables {{P}}AGENT and {{P}}DELIV exist in package $TMP and contain data. - Users run the program with the selection screen and read the ALV list. # 4. Contract - Object: the executable program {{P}}NEWS_DIST_OLD in package $TMP. Refactor this program in place. Keep the name. Do not create a new program. - Selection screen, unchanged: - Select-option S_DATE for the delivery date. - Select-option S_DIST for the district. - The program shows the result with CL_SALV_TABLE, as before. - The ALV list keeps these column names: AGENT, NAME, DISTRICT, COPIES, RETURNED, RATE. # 5. Business rules The behavior of the program does not change. The legacy source of {{P}}NEWS_DIST_OLD is the specification of the behavior. Read the source and keep all of it: - the filters of the selection screen, - the set of lines of the list, - the values of the columns, - the sort order of the lines. Do not change the result of the program. # 6. Constraints - Release target: 8.16. - Coding standards: Clean ABAP. - The refactored program has no database access inside a loop. - No method of the program has more than 40 statements. - The program has no ATC finding of priority 1 or 2. - Write ABAP Unit tests as local test classes in the program. - Out of scope: do not change the tables {{P}}AGENT and {{P}}DELIV. Do not change the selection screen names and the ALV column names. # 7. Acceptance - {{P}}NEWS_DIST_OLD is active and has no syntax error. - The result of the program is the same as before the refactoring. - The hidden tests pass. - The local test classes pass.