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 | 1x 1x 1x 1x 1x 1x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 1x | import {CDSAnnotation, CDSAssociation, CDSComposition, CDSName, CDSType, CDSWithParameters} from ".";
import {Expression, str, seq, star, opt, optPrio, 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"),
alt(externalEntity, staticEntity),
str("{"), body, str("}"),
opt(seq("WITH", "FEDERATED", "DATA", optPrio(alt(
seq("PROVIDED", "AT", "RUNTIME"),
seq("PROVIDED", "BY", CDSName),
)))),
opt(";"),
);
}
}
|