Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import {CDSElement, CDSComposition, CDSGroupBy, CDSSource, CDSWhere, CDSHaving} from ".";
import {Expression, seq, str, opt, optPrio, starPrio, star, altPrio, alt} from "../../abap/2_statements/combi";
import {IStatementRunnable} from "../../abap/2_statements/statement_runnable";
import {CDSAssociation} from "./cds_association";
import {CDSJoin} from "./cds_join";
export class CDSSelect extends Expression {
public getRunnable(): IStatementRunnable {
const fields = seq(star(seq(CDSElement, ",")), CDSElement);
const distinct = str("DISTINCT");
const elementList = seq(CDSElement, starPrio(seq(",", CDSElement)));
const elements = seq(str("{"), altPrio("*", elementList), str("}"));
return seq("SELECT",
optPrio(distinct),
opt(alt("*", fields)),
"FROM",
CDSSource,
star(CDSJoin),
star(alt(CDSComposition, CDSAssociation)),
opt(elements),
optPrio(CDSWhere),
optPrio(CDSGroupBy),
optPrio(CDSHaving),
optPrio(seq("UNION", optPrio("ALL"), CDSSelect)));
}
} |