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

100% Statements 12/12
100% Branches 0/0
100% Functions 1/1
100% Lines 12/12

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     92x   92x   92x   92x         92x   92x   92x                 92x          
import {IStatement} from "./_statement";
import {seq, alt, opt, altPrio, optPrio, plus, per, ver} 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 perm = per(alt(index, key, from),
                     ReadTableTarget,
                     using,
                     comparing,
                     "CASTING",
                     "TRANSPORTING ALL FIELDS",
                     seq("TRANSPORTING", altPrio(Dynamic, plus(Field))),
                     "BINARY SEARCH");
 
    return seq("READ TABLE",
               alt(ver(Version.v740sp02, Source), SimpleSource2),
               opt(perm));
  }
 
}