Files
2026-10-05 22:08:59 +02:00

2.1 KiB

1. Goal

The mobile bicycle repair service "Bike Doctor" repairs bicycles at the homes of its customers. The office needs a list of the repair jobs of one day. Each line shows the job, the customer, the mechanic, the number of spare parts and the total price of the parts. The office uses the list to check the daily work.

2. Open questions

None.

3. Context

  • Table {{P}}MECH is in package $TMP. It contains the mechanics. Fields: MECH_ID (CHAR 6, key), MECH_NAME (CHAR 40).
  • Table {{P}}JOBHDR is in package $TMP. It contains the repair jobs. Fields: JOB_ID (INT4, key), JOB_DATE (DATS), CUSTOMER (CHAR 40), MECH_ID (CHAR 6).
  • Table {{P}}JOBITM is in package $TMP. It contains the spare parts that the mechanic used for a job. Fields: JOB_ID (INT4, key), ITEM_NO (INT4, key), SPARE_PART (CHAR 20), QTY (INT4), PRICE (DEC 15,2).
  • The three tables contain data.

4. Contract

  • Create the executable program {{P}}REPAIR_LIST in package $TMP.
  • Selection screen:
    • Parameter P_DATE, type DATS, mandatory: the job date to show.
  • Show the result with CL_SALV_TABLE. The output table has these columns with these names: JOB_ID, CUSTOMER, MECHANIC, ITEMS, TOTAL.

5. Business rules

  1. Include a job only if its JOB_DATE is equal to P_DATE.
  2. Include a job only if at least one item of this job is in {{P}}JOBITM.
  3. ITEMS is the number of the items of the job.
  4. TOTAL is the sum of QTY * PRICE over all items of the job.
  5. MECHANIC is the MECH_NAME of the mechanic whose MECH_ID is the MECH_ID of the job.
  6. If no mechanic has this MECH_ID, MECHANIC is the text UNKNOWN.
  7. Show exactly one line for each included job.
  8. Sort the lines by TOTAL, the highest total first. If two lines have the same TOTAL, sort them by JOB_ID, the lowest first.

6. Constraints

  • Release target: SAP_BASIS 816 (ABAP Platform 2025).
  • Coding standards: Clean ABAP. Read each table with one database access.
  • Out of scope: do not change {{P}}MECH, {{P}}JOBHDR and {{P}}JOBITM.

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.