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 30 31 32 33 34 35 36 37 38 39 40 | 1x 1x 1x 1x 1x 1x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 25x 1x | import {CDSAnnotation, CDSAssociation, CDSComposition, CDSName, CDSType, CDSWithParameters} from ".";
import {Expression, str, seq, star, opt, optPrio, altPrio, plus, alt, regex} from "../../abap/2_statements/combi";
import {IStatementRunnable} from "../../abap/2_statements/statement_runnable";
export class CDSDefineExternalEntity extends Expression {
public getRunnable(): IStatementRunnable {
const extNameValue = alt(CDSName, regex(/^"(?:[^"]|"")*"$/));
const externalName = seq("EXTERNAL", "NAME", extNameValue);
const nullability = optPrio(alt("NOT NULL", "NULL"));
const field = seq(star(CDSAnnotation), optPrio(str("KEY")), CDSName, ":", CDSType, nullability, optPrio(externalName), ";");
const assocOrComp = seq(star(CDSAnnotation), CDSName, ":", alt(CDSComposition, CDSAssociation), ";");
const body = plus(alt(field, assocOrComp));
const externalEntity = seq(
opt("WRITABLE"),
"EXTERNAL", "ENTITY", CDSName,
opt(externalName),
opt(CDSWithParameters),
);
const staticEntity = seq(
"STATIC", "ENTITY", CDSName,
opt(externalName),
);
return seq(
star(CDSAnnotation),
opt("DEFINE"),
opt("ROOT"),
alt(externalEntity, staticEntity),
str("{"), body, str("}"),
opt(seq("WITH", "FEDERATED", "DATA", optPrio(alt(
seq("PROVIDED", "AT", "RUNTIME"),
seq("PROVIDED", "BY", CDSName),
)), optPrio(seq("ON", "UNLINKED", altPrio("FAIL", "IGNORE"))))),
opt(";"),
);
}
}
|