51 lines
2.2 KiB
Markdown
51 lines
2.2 KiB
Markdown
# 1. Goal
|
|
Show the work of each taxi driver of a taxi company for a period in an ALV
|
|
list. The dispatcher uses the list to compare the drivers.
|
|
|
|
# 2. Open questions
|
|
None.
|
|
|
|
# 3. Context
|
|
- Table {{P}}DRIVER exists in package $TMP and contains data.
|
|
Fields: DRIVER_ID (CHAR 6, key), DRIVER_NAME (CHAR 40), BASE_CODE (CHAR 6).
|
|
- Table {{P}}TRIP exists in package $TMP and contains data.
|
|
Fields: TRIP_ID (INT4, key), DRIVER_ID (CHAR 6), TRIP_DATE (DATS),
|
|
KM (DEC 7,2), FARE (DEC 15,2).
|
|
- A trip belongs to the driver that has the same DRIVER_ID.
|
|
|
|
# 4. Contract
|
|
- Create the executable program {{P}}TAXI_DAY in package $TMP.
|
|
- Selection screen:
|
|
- Parameter P_FROM, type DATS, mandatory: the first trip date to include.
|
|
- Parameter P_TO, type DATS, mandatory: the last trip date to include.
|
|
- Select-option S_BASE for the base code of the driver.
|
|
- Show the result with CL_SALV_TABLE. The output table has these columns, with
|
|
these names: DRIVER_ID, DRIVER_NAME, BASE_CODE, TRIPS, KM, FARE, AVG_FARE.
|
|
|
|
# 5. Business rules
|
|
1. Include a trip only if TRIP_DATE is on or after P_FROM and on or before
|
|
P_TO.
|
|
2. Include a trip only if the base code of its driver is in S_BASE. An empty
|
|
S_BASE includes every base code.
|
|
3. Ignore a trip if its DRIVER_ID is not in table {{P}}DRIVER.
|
|
4. Show one line for each driver that has at least one included trip.
|
|
5. DRIVER_ID is the identifier of the driver and DRIVER_NAME is the name of
|
|
the driver. BASE_CODE is the base code of the driver.
|
|
6. TRIPS is the number of included trips of the driver.
|
|
7. KM is the sum of the KM of the included trips of the driver.
|
|
8. FARE is the sum of the FARE of the included trips of the driver.
|
|
9. AVG_FARE is FARE divided by TRIPS, rounded to 2 decimal places.
|
|
10. Sort the lines by FARE, the highest fare first. If two drivers have the
|
|
same fare, sort them by DRIVER_ID in ascending order.
|
|
|
|
# 6. Constraints
|
|
- Release target: SAP_BASIS 816 (ABAP Platform 2025).
|
|
- Coding standards: Clean ABAP. Read {{P}}TRIP with one database access and
|
|
{{P}}DRIVER with one database access.
|
|
- Out of scope: do not change {{P}}DRIVER and {{P}}TRIP.
|
|
|
|
# 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.
|