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

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

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 351x 1x 1x 1x 1x 1x 1x 1x 1x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 42x 1x 1x
import {IStatement} from "./_statement";
import {seq, opt, alt, per, optPrio, altPrio, ver} from "../combi";
import {Target, Source, ExceptionName, MessageSource, SimpleSource3} from "../expressions";
import {IStatementRunnable} from "../statement_runnable";
import {Version} from "../../../version";
 
export class Message implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const s = alt(ver(Version.v740sp02, Source), SimpleSource3);
    const like = seq("DISPLAY LIKE", Source);
    const into = seq("INTO", Target);
    const raising = seq("RAISING", ExceptionName);
 
    const options = per(like, into, raising);
 
    const type = seq("TYPE", Source);
 
    const sou = altPrio(options, Source);
    const sourc = alt(sou,
                      seq(s, sou),
                      seq(s, s, sou),
                      seq(s, s, s, options));
 
    const mwith = seq("WITH", s, opt(sourc));
 
    const foo = seq(MessageSource, opt(options), opt(mwith));
    const text = seq(s, type, optPrio(like), optPrio(raising));
 
    const ret = seq("MESSAGE", altPrio(foo, text));
 
    return ret;
  }
 
}