59 lines
2.4 KiB
Markdown
59 lines
2.4 KiB
Markdown
# 1. Goal
|
|
A well-drilling company drills boreholes for farms and small businesses. The
|
|
company needs one database table that stores every drilling job. A report and an
|
|
OData service will read the jobs later. Therefore the table must be a
|
|
transparent database table in the ABAP Dictionary.
|
|
|
|
# 2. Open questions
|
|
None.
|
|
|
|
# 3. Context
|
|
- Package: $TMP.
|
|
- No source table exists. Create the table from scratch.
|
|
- One row of the table is one drilling job.
|
|
|
|
# 4. Contract
|
|
- Create the transparent database table {{P}}WELL in package $TMP.
|
|
- The table has these fields, with these names:
|
|
client, job_id, site_name, drilled_on, depth_m, depth_unit, price,
|
|
currency_code, permit_no, crew_size.
|
|
- Key fields: client and job_id.
|
|
|
|
# 5. Business rules
|
|
1. client is the client field. Data type abap.clnt. It is a key field and it is
|
|
not null.
|
|
2. job_id is the number of the drilling job. Data type abap.char(10). It is a
|
|
key field and it is not null.
|
|
3. site_name is the name of the drilling site. Data type abap.char(40).
|
|
4. drilled_on is the date of the drilling. Data type abap.dats.
|
|
5. depth_m is the drilled depth. Data type abap.dec(7,2). It is a quantity. The
|
|
unit of measure of the quantity is the value of the field depth_unit of the
|
|
same row.
|
|
6. depth_unit is the unit of depth_m. Data type abap.unit(3).
|
|
7. price is the price of the drilling job. Data type abap.dec(15,2). It is an
|
|
amount. The currency of the amount is the value of the field currency_code of
|
|
the same row.
|
|
8. currency_code is the currency of price. Data type abap.cuky.
|
|
9. permit_no is the permit number of the water authority. Data type
|
|
abap.numc(8).
|
|
10. crew_size is the number of workers on the drilling job. Data type
|
|
abap.int4.
|
|
11. Only client and job_id are key fields. All other fields are not key fields
|
|
and can be empty. Two jobs on the same site are two rows with different
|
|
job_id values.
|
|
|
|
# 6. Constraints
|
|
- Release target: SAP_BASIS 816 (ABAP Platform 2025), client 001.
|
|
- Create the table with a DDL source (define table ...). Do not use the classic
|
|
Dictionary maintenance screens.
|
|
- Coding standard: Clean ABAP. The table must be active and must have no syntax
|
|
error.
|
|
- Out of scope: do not create a CDS view, a report, a function module, or a
|
|
business class in this task.
|
|
|
|
# 7. Acceptance
|
|
- The table {{P}}WELL is active.
|
|
- The hidden tests pass.
|
|
- Write ABAP Unit tests for the table in a global test class in package $TMP.
|
|
Use CL_OSQL_TEST_ENVIRONMENT as the test double.
|