All files / src/abap/2_statements/statements read_entities.ts

100% Statements 40/40
100% Branches 1/1
100% Functions 1/1
100% Lines 40/40

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 411x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x 1x  
import {IStatement} from "./_statement";
import {seq, ver, tok, plus, alt, optPrio, opt, per, AlsoIn} from "../combi";
import {EMLEntityPath, EntityAssociation, NamespaceSimpleName, SimpleName, Source, Target} from "../expressions";
import {IStatementRunnable} from "../statement_runnable";
import {Release} from "../../../version";
import {WParenLeftW, WParenRightW} from "../../1_lexer/tokens";
 
export class ReadEntities implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const from = seq("FROM", Source);
    const fields = seq("FIELDS", tok(WParenLeftW), plus(SimpleName), tok(WParenRightW), "WITH", Source);
    const all = seq("ALL FIELDS WITH", Source);
    const result = seq("RESULT", Target);
    const failed = seq("FAILED", Target);
    const reported = seq("REPORTED", Target);
 
    const execute = seq("EXECUTE", SimpleName, from);
 
    const foo = seq(opt(seq("BY", EMLEntityPath)),
                    alt(fields, from, all, execute),
                    optPrio(result));
 
    const entity = seq("ENTITY", NamespaceSimpleName,
                       plus(foo));
 
    const s = seq("ENTITIES OF", NamespaceSimpleName,
                  opt("IN LOCAL MODE"),
                  plus(entity),
                  optPrio(seq("LINK", Target)),
                  optPrio(per(failed, reported)));
 
    const byall = seq("BY", EMLEntityPath, all);
    const by = seq("BY", EMLEntityPath, fields);
    const sub = seq(alt(all, fields, from, by, byall), result);
    const single = seq("ENTITY", opt("IN LOCAL MODE"), alt(NamespaceSimpleName, EntityAssociation), plus(sub), optPrio(failed), optPrio(reported));
    return ver(Release.v754, seq("READ", alt(s, single)), {also: AlsoIn.OpenABAP});
  }
 
}