Verify sy-subrc Promptly After Data Retrieval and Search
WarningClean ABAP & Modern Syntax#EC PREF_CHECK_SUBRCRemote Enabled
Overview
Check sy-subrc after DB, table and string operations.
ATC Finding Message:
Check sy-subrc after SELECT SINGLE, READ, FIND, SEARCH
Rationale
Statements such as SELECT SINGLE, READ TABLE, FIND, and SEARCH report success through sy-subrc. If intervening statements execute before inspection, sy-subrc is overwritten and failure states are silently ignored. Check sy-subrc immediately after execution.
Non-Compliant
abap
SELECT SINGLE customer_id FROM /dmo/customer
WHERE customer_id = @lv_id
INTO @lv_customer_id.
process_customer( lv_customer_id ).Compliant
abap
SELECT SINGLE customer_id FROM /dmo/customer
WHERE customer_id = @lv_id
INTO @lv_customer_id.
IF sy-subrc = 0.
process_customer( lv_customer_id ).
ENDIF.Configuration & Thresholds
This check can be fine-tuned directly in the ATC Check Variant Editor (CHKV) in Eclipse ADT:
| Parameter Name | Data Type | Default Value | Description & Guidance |
|---|---|---|---|
CHECK_SELECT_SINGLE | Boolean | true | Require sy-subrc check after SELECT SINGLE |
CHECK_READ_TABLE | Boolean | true | Require sy-subrc check after READ TABLE |
CHECK_FIND_SEARCH | Boolean | true | Require sy-subrc check after FIND or SEARCH |
CHECK_ASSIGN | Boolean | true | Require sy-subrc check after dynamic ASSIGN |
Suppression
To suppress findings for this rule, append the pseudo-comment to the statement:
abap
" Standard pseudo-comment:
... "#EC PREF_CHECK_SUBRC
" SAP CI_ prefix format:
... "#EC CI_PREF_CHECK_SUBRCRelated Rules
- Check sy-subrc Promptly After AUTHORITY-CHECK (CWE-862 Authorization Bypass) —
#EC PREF_AUTH_SUBRC - Ensure AUTHORITY-CHECK Precedes Sensitive Business Operations —
#EC PREF_AUTH_CHECK - Provide FAILED and REPORTED in RAP EML Statements (Silent Transaction Failure Prevention) —
#EC NO_UNHANDLED_EML
Technical Details
- Native ATC Class:
ZCL_SKYLINT_PREF_CHECK_SUBRC - Implementation File: zcl_skylint_pref_check_subrc.clas.abap