Pick CDS view(s) — join more than one if you need to — then compose SELECT / WHERE / GROUP BY / HAVING / ORDER BY against their real field names.
⚠️ This only generates reference syntax from field names in this data repo. It does not connect to, validate against, or run anything on a real SAP system — check the output before using it.
Search the shared library plus anything "💾 Save" put in this browser (localStorage). Click a row to load it into the builder.
Already have a query's JSON (from a teammate, a PR, this page's own export)? Paste it here to add it straight to this browser's saved list — no need to rebuild it. Sharing with everyone else is a PR adding the JSON to index/query-library.json (use kind: "variant" + recipeId for thin filter overrides of an existing recipe).
Save and Share link work offline in this browser (localStorage / URL fragment — nothing is sent to GitHub). Share link copies a URL that opens the builder already filled in.
Text in the box above is saved as a plain note (with the title/description you fill in) instead of the builder state below.
Generate JSON exports a PR snippet for index/query-library.json — it does not write to localStorage. Propose tries the Issue bot first (no GitHub login needed); if that fails, opens a GitHub Issue draft (login may be required) and copies markdown to the clipboard. Maintainers review before merge — query shapes and curated CDS snippets both welcome.
Start with a view
Tick fields to include. Pick an aggregate to wrap a field (e.g. SUM), or leave "—" for a plain column. Nothing ticked = SELECT *. Fields show as alias.Field once more than one view is joined.
Fields not ticked here that ARE ticked above with an aggregate are fine; a plain (non-aggregated) SELECT field should usually also be ticked here.
Filters applied after GROUP BY — typically on an aggregate, e.g. COUNT(*) > 1.