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

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

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 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 156x 1x 1x
import {IStatement} from "./_statement";
import {seq, alt, opt, altPrio, optPrio, plus, per, ver, failStar} from "../combi";
import {Field, Source, Dynamic, FieldSub, ComponentCompareSimple, ReadTableTarget, SimpleSource2} from "../expressions";
import {IStatementRunnable} from "../statement_runnable";
import {Version} from "../../../version";
 
export class ReadTable implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const comparing = seq("COMPARING", alt(plus(FieldSub), Dynamic));
 
    const index = seq("INDEX", Source);
 
    const components = seq(alt(Field, Dynamic), "COMPONENTS", ComponentCompareSimple);
 
    const key = seq(altPrio("WITH KEY", "WITH TABLE KEY"),
                    alt(ComponentCompareSimple,
                        components,
                        seq(optPrio("="), Source)));
 
    const using = seq("USING KEY", alt(Field, Dynamic));
 
    const from = seq("FROM", Source);
 
    const fields = plus(alt(seq("INTO", failStar()), FieldSub));
 
    const perm = per(alt(index, key, from),
                     ReadTableTarget,
                     using,
                     comparing,
                     "CASTING",
                     "TRANSPORTING ALL FIELDS",
                     seq("TRANSPORTING", altPrio(Dynamic, fields)),
                     "BINARY SEARCH");
 
    return seq("READ TABLE",
               alt(ver(Version.v740sp02, Source), SimpleSource2),
               opt(perm));
  }
 
}