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

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

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 371x 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 1x 1x  
import {IStatement} from "./_statement";
import {LanguageVersion} from "../../../version";
import {seq, opt, optPrio, alt, altPrio, star, ver, verNotLang} from "../combi";
import {SQLSource, DatabaseTable, Dynamic, SQLFieldAndValue, SQLCond, DatabaseConnection, SQLClient, ComponentName, SQLIndicators, SQLMappingFromEntity, SQLDmlOptions} from "../expressions";
import {IStatementRunnable} from "../statement_runnable";
import {Release} from "../../../version";
 
export class UpdateDatabase implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const parameters = seq(SQLFieldAndValue, star(seq(opt(","), SQLFieldAndValue)));
 
    const set = seq("SET",
                    alt(parameters, Dynamic),
                    opt(seq("WHERE", SQLCond)));
 
    const setStructure = seq("INDICATORS SET STRUCTURE", ComponentName);
    const updateIndicators = altPrio(ver(Release.v915, SQLIndicators), ver(Release.v755, setStructure));
 
    const fromTable = seq("FROM",
                          opt("TABLE"),
                          SQLSource,
                          optPrio(updateIndicators),
                          optPrio(SQLMappingFromEntity));
 
    const ret = seq("UPDATE",
                    DatabaseTable,
                    opt(SQLClient),
                    opt(DatabaseConnection),
                    opt(alt(fromTable, set)),
                    optPrio(SQLDmlOptions));
 
    return verNotLang(LanguageVersion.KeyUser, ret);
  }
 
}