Released vs. Unreleased Objects
What it is
Released objects carry a stability contract and are callable from ABAP Cloud; unreleased objects (most classic tables, BAPIs, function modules) carry no contract and are blocked by the Cloud Development language version.
Why it matters for Clean Core
This distinction is the practical core of every migration: every unreleased dependency in your custom code is a finding that needs a released successor before the code is cloud-ready.
Common pitfall
Direct table reads. `SELECT … FROM mara` is the canonical unreleased pattern — the released path is the I_Product CDS view (or the relevant released API). 'It selects fine in SE16' tells you nothing about its release state.