Files

106 lines
3.3 KiB
Markdown

# 1. Goal
A recruitment agency scores job applicants. A recruitment program calls one
function module for each applicant. The function module returns a score and a
recommendation.
The score calculation is pure logic. Put this logic in a new global class. The
function module calls this class. Do not put the calculation in the function
module.
# 2. Open questions
None.
# 3. Context
- Function group {{P}}FG_HR exists in package $TMP.
- Function module {{P}}APPL_SAMPLE exists in this group. It shows the
parameter style of the group.
- Create all new objects in package $TMP.
# 4. Contract
## 4.1 Function module {{P}}APPL_SCORE
Create the function module {{P}}APPL_SCORE in function group {{P}}FG_HR.
Use this interface:
```
FUNCTION {{p}}appl_score
IMPORTING
iv_years TYPE i
iv_degree TYPE string
iv_match TYPE i
EXPORTING
ev_score TYPE i
ev_rating TYPE string
EXCEPTIONS
invalid_years
invalid_match
invalid_degree.
```
## 4.2 Class {{P}}APP_SCORER
Create the class {{P}}APP_SCORER. The class is public and final. The class has
a public constructor without parameters.
Public type TY_RESULT has these components:
| Component | Type | Meaning |
|-----------|-----------|---------------------------|
| STATUS | TY_STATUS | Result of the input check |
| SCORE | i | Score from 0 to 100 |
| RATING | string | Recommendation |
TY_STATUS is a character type of length 4. The values of STATUS are 'OK',
'YEAR', 'MATC' and 'DEGR'.
Public method EVALUATE:
```
METHODS evaluate
IMPORTING
iv_years TYPE i
iv_degree TYPE string
iv_match TYPE i
RETURNING
VALUE(rs_result) TYPE ty_result.
```
The method does not raise an exception.
# 5. Business rules
1. Input check. Use this order:
1. If IV_YEARS is less than 0, STATUS is 'YEAR'.
2. Else if IV_MATCH is less than 0 or greater than 100, STATUS is 'MATC'.
3. Else if IV_DEGREE is not 'PHD', 'MAS', 'BAC' or 'VOC', STATUS is 'DEGR'.
4. Else STATUS is 'OK'.
2. If STATUS is not 'OK', SCORE is 0 and RATING is empty.
3. Experience points: 8 points for each full year of experience. The maximum
is 40 points.
4. Education points: 'PHD' gives 30 points, 'MAS' 25 points, 'BAC' 20 points
and 'VOC' 10 points.
5. Skill points: IV_MATCH percent of 30 points. Round the result half up to a
whole number.
6. SCORE is the sum of the experience points, the education points and the
skill points.
7. RATING depends on SCORE:
- SCORE 75 or more: 'INVITE'
- SCORE 50 to 74: 'REVIEW'
- SCORE less than 50: 'REJECT'
8. The function module raises the exception that belongs to STATUS:
- 'YEAR' raises INVALID_YEARS
- 'MATC' raises INVALID_MATCH
- 'DEGR' raises INVALID_DEGREE
For STATUS 'OK' the function module raises no exception. It exports SCORE
and RATING.
# 6. Constraints
- Release target: ABAP Platform 2025 (SAP_BASIS 816).
- Coding standard: Clean ABAP. Each method has less than 40 statements.
- No ATC finding of priority 1 or 2.
- Out of scope: do not change {{P}}APPL_SAMPLE.
# 7. Acceptance
- {{P}}APPL_SCORE and {{P}}APP_SCORER are active and have no syntax error.
- The hidden tests pass.
- Write ABAP Unit tests for the class in local test classes of the class.
- Write ABAP Unit tests for the function module in a global test class.