Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
38 lines
1.0 KiB
ABAP
38 lines
1.0 KiB
ABAP
FUNCTION {{p}}donor_check
|
|
IMPORTING
|
|
iv_age TYPE i
|
|
iv_weight TYPE decfloat34
|
|
iv_hb TYPE decfloat34
|
|
iv_days_since_last TYPE i
|
|
RAISING
|
|
{{p}}cx_donor_check.
|
|
|
|
IF iv_age < 0 AND iv_weight < 0 OR iv_hb < 0 OR iv_days_since_last < 0.
|
|
RAISE EXCEPTION TYPE {{p}}cx_donor_check
|
|
EXPORTING
|
|
iv_reason = 'INVALID_INPUT'.
|
|
ELSEIF iv_age < 18.
|
|
RAISE EXCEPTION TYPE {{p}}cx_donor_check
|
|
EXPORTING
|
|
iv_reason = 'TOO_YOUNG'.
|
|
ELSEIF iv_age > 65.
|
|
RAISE EXCEPTION TYPE {{p}}cx_donor_check
|
|
EXPORTING
|
|
iv_reason = 'TOO_OLD'.
|
|
ELSEIF iv_weight < 50.
|
|
RAISE EXCEPTION TYPE {{p}}cx_donor_check
|
|
EXPORTING
|
|
iv_reason = 'UNDERWEIGHT'.
|
|
ELSEIF iv_hb < '12.5'.
|
|
RAISE EXCEPTION TYPE {{p}}cx_donor_check
|
|
EXPORTING
|
|
iv_reason = 'LOW_HB'.
|
|
ELSEIF iv_days_since_last < 56.
|
|
RAISE EXCEPTION TYPE {{p}}cx_donor_check
|
|
EXPORTING
|
|
iv_reason = 'TOO_SOON'
|
|
iv_retry_days = 56 - iv_days_since_last.
|
|
ENDIF.
|
|
|
|
ENDFUNCTION.
|