Files
2026-10-05 18:02:52 +02:00

52 lines
2.3 KiB
Markdown

# 1. Goal
A regional bus company operates depots and routes. Show each route together
with the depot that operates it. A report and an OData service read the routes.
The OData service also reads the stops of a route. It uses the association of
the view in an ABAP SQL path expression.
# 2. Open questions
None.
# 3. Context
- Table {{P}}DEPOT (bus depot), package $TMP. Key: DEPOT_ID (CHAR 4).
Fields: DEPOT_NAME (CHAR 30), CITY (CHAR 20).
- Table {{P}}ROUTE (bus route), package $TMP. Key: ROUTE_ID (CHAR 6).
Fields: DEPOT_ID (CHAR 4), ROUTE_NAME (CHAR 30), DISTANCE_KM (DEC 6,1).
- Table {{P}}STOP (stop of a route), package $TMP. Key: ROUTE_ID (CHAR 6),
STOP_NO (INT4). Fields: STOP_NAME (CHAR 30), DISTANCE_KM (DEC 6,1).
# 4. Contract
- Create the CDS view entity {{P}}I_STOP in package $TMP.
Elements, with these names: ROUTE_ID (key), STOP_NO (key), STOP_NAME,
DISTANCE_KM.
- Create the CDS view entity {{P}}I_ROUTE in package $TMP.
Elements, with these names: ROUTE_ID (key), ROUTE_NAME, DEPOT_NAME, CITY,
DISTANCE_KM, _STOP.
- {{P}}I_ROUTE has the association _STOP. The target of _STOP is the view
entity {{P}}I_STOP. _STOP is an element of {{P}}I_ROUTE, so that ABAP SQL
can use a path expression on _STOP.
- No authorization check (#NOT_REQUIRED).
# 5. Business rules
1. {{P}}I_ROUTE shows one row for each route in {{P}}ROUTE.
2. ROUTE_NAME and DISTANCE_KM are the values of the route.
3. DEPOT_NAME and CITY are the values of the depot of the route. The depot of
a route is the depot with the same DEPOT_ID as the route.
4. A route whose DEPOT_ID is not in {{P}}DEPOT still appears in the view. In
this row DEPOT_NAME and CITY are empty.
5. _STOP links a route to the rows of {{P}}I_STOP that have the same ROUTE_ID
as the route. A route without stops still appears in the view.
6. {{P}}I_STOP shows one row for each row of {{P}}STOP, with the same element
values.
# 6. Constraints
- Release target: SAP_BASIS 816.
- Out of scope: do not change {{P}}DEPOT, {{P}}ROUTE and {{P}}STOP.
- A consumer reads the stops of a route with an ABAP SQL path expression that
uses the association _STOP.
# 7. Acceptance
- The views are active and have no syntax error.
- The hidden tests pass.
- Write ABAP Unit tests with CL_CDS_TEST_ENVIRONMENT in a global test class.