44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
# 1. Goal
|
|
A driving school shows its lessons together with the instructor of each lesson.
|
|
A report and an OData service read the data. The data must be prepared in the
|
|
database, in a CDS view. The view exposes the instructor data of a lesson
|
|
through an association.
|
|
|
|
# 2. Open questions
|
|
None.
|
|
|
|
# 3. Context
|
|
- Table {{P}}INSTR (instructor), package $TMP. Key: INSTR_ID (CHAR 10).
|
|
Fields: FULL_NAME (CHAR 30), CITY (CHAR 20).
|
|
- Table {{P}}LESSON (lesson), package $TMP. Key: LESSON_ID (CHAR 10).
|
|
Fields: INSTR_ID (CHAR 10), LESSON_DATE (DATS), DURATION (INT4, in minutes),
|
|
FEE (DEC 15,2).
|
|
|
|
# 4. Contract
|
|
- Create the CDS view entity {{P}}I_LESSON_INSTR in package $TMP.
|
|
- Elements, with these names: LESSON_ID (key), INSTR_ID, LESSON_DATE, DURATION,
|
|
FEE, INSTRUCTOR_NAME, INSTRUCTOR_CITY, and the association _INSTRUCTOR.
|
|
- The association _INSTRUCTOR points to the table {{P}}INSTR. Its ON condition
|
|
compares the INSTR_ID of the lesson with the INSTR_ID of the instructor.
|
|
- No authorization check (#NOT_REQUIRED).
|
|
|
|
# 5. Business rules
|
|
1. The view shows one row for each lesson that lasts at least 45 minutes. Do not
|
|
show a lesson that is shorter than 45 minutes.
|
|
2. LESSON_ID, INSTR_ID, LESSON_DATE, DURATION and FEE are the values of the
|
|
lesson.
|
|
3. INSTRUCTOR_NAME is the FULL_NAME of the instructor whose INSTR_ID is the
|
|
INSTR_ID of the lesson. INSTRUCTOR_CITY is the CITY of that instructor.
|
|
4. A lesson whose instructor does not exist is still shown. INSTRUCTOR_NAME and
|
|
INSTRUCTOR_CITY of that lesson are empty.
|
|
|
|
# 6. Constraints
|
|
- Release target: 8.16.
|
|
- Coding standards: Clean ABAP.
|
|
- Out of scope: do not change {{P}}INSTR and {{P}}LESSON.
|
|
|
|
# 7. Acceptance
|
|
- The view is active and has no syntax error.
|
|
- The hidden tests pass.
|
|
- Write ABAP Unit tests with CL_CDS_TEST_ENVIRONMENT in a global test class.
|