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

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

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 391x 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 1x 1x
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";
import {TransportingFields} from "../expressions/transporting_fields";
 
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",
                     seq("TRANSPORTING", altPrio("ALL FIELDS", "NO FIELDS", TransportingFields)),
                     "BINARY SEARCH");
 
    return seq("READ TABLE",
               alt(SimpleSource2, ver(Version.v740sp02, Source)),
               opt(perm));
  }
 
}