All files / src/abap/2_statements/expressions type_table_key.ts

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

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 311x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
import {seq, opt, alt, ver, Expression, altPrio, plus, optPrio, failStar} from "../combi";
import {FieldSub, Field} from ".";
import {Version} from "../../../version";
import {IStatementRunnable} from "../statement_runnable";
 
export class TypeTableKey extends Expression {
  public getRunnable(): IStatementRunnable {
 
    const uniqueness = alt("NON-UNIQUE", "UNIQUE");
    const defaultKey = "DEFAULT KEY";
    const emptyKey = ver(Version.v740sp02, "EMPTY KEY");
 
    const components = plus(alt(seq("WITH", failStar()), FieldSub));
 
    const further = seq(alt("WITHOUT", "WITH"), "FURTHER SECONDARY KEYS");
 
    const key = seq("WITH",
                    opt(uniqueness),
                    altPrio(defaultKey, emptyKey,
                            seq(opt(alt("SORTED", "HASHED")),
                                "KEY",
                                alt(seq(Field, "COMPONENTS", components),
                                    components))),
                    optPrio(further),
                    optPrio("READ-ONLY"));
 
    return key;
  }
 
}