Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
2.4 KiB
2.4 KiB
1. Goal
A hospital wants a report about the bed days of its wards. The report shows, for each ward, the number of admissions in a period, the bed days, and the cost of these bed days. The hospital management compares the wards with this report.
2. Open questions
None.
3. Context
- The table {{P}}ADMIT exists in package $TMP. The table contains data. The
fields are:
- ADM_ID: INT4, key. The admission ID.
- WARD: CHAR 4. The ward.
- ADMIT_DATE: DATS. The admission date.
- DISCHARGE_DATE: DATS. The discharge date. The field is initial while the patient is still in the ward.
- DAILY_RATE: DEC 15,2. The cost of one bed day in this ward.
4. Contract
- Create the executable program {{P}}WARD_STAY in package $TMP.
- Selection screen:
- Parameter P_FROM, type DATS, mandatory. The first admission date to include.
- Parameter P_TO, type DATS, mandatory. The last admission date to include.
- Select-option S_WARD for the ward.
- Show the result with CL_SALV_TABLE. The output table has exactly these columns
with these names and types:
- WARD: type {{P}}ADMIT-WARD.
- ADMISSIONS: type I.
- BED_DAYS: type I.
- TOTAL_COST: type {{P}}ADMIT-DAILY_RATE.
5. Business rules
- Include an admission only if ADMIT_DATE is on or after P_FROM, ADMIT_DATE is on or before P_TO, and WARD is in S_WARD.
- The bed days of one admission are DISCHARGE_DATE minus ADMIT_DATE.
- If DISCHARGE_DATE of an admission is initial, use P_TO as the discharge date of this admission.
- The cost of one admission is the bed days of the admission multiplied by DAILY_RATE.
- Show one line for each ward that has at least one included admission.
- ADMISSIONS is the number of included admissions of the ward.
- BED_DAYS is the sum of the bed days of the included admissions of the ward.
- TOTAL_COST is the sum of the costs of the included admissions of the ward.
- Sort the lines by TOTAL_COST, the highest total first.
6. Constraints
- Release target: 7.40 SP05. Do not use ABAP syntax that is newer than 7.40 SP05. Examples of newer syntax are table expressions, FOR or REDUCE in constructor expressions, string aggregation, UNION, and WITH.
- Coding standards: Clean ABAP. Read the admissions with one database access.
- Out of scope: do not change the table {{P}}ADMIT.
7. Acceptance
- The program is active and has no syntax error.
- The hidden tests pass.
- Write ABAP Unit tests as local test classes in the program.