All files / src/bdef/expressions bdef_action.ts

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

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 321x 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 1x  
import {BDEFCardinality, BDEFDefaultFunction, BDEFName, BDEFOptions, BDEFParameter, BDEFResult, BDEFString} from ".";
import {altPrio, Expression, optPrio, seq, starPrio} from "../../abap/2_statements/combi";
import {IStatementRunnable} from "../../abap/2_statements/statement_runnable";
 
/** actions and functions, eg. "static factory action ( features : global ) copy parameter ZPARAM result [1] $self;" */
export class BDEFAction extends Expression {
  public getRunnable(): IStatementRunnable {
    const modifier = altPrio(
      "INTERNAL", "STATIC", "FACTORY", "DEFAULT", "DRAFT", "REPEATABLE", "RECOMMENDATION",
      seq("SAVE", optPrio(BDEFOptions)),
      seq("KEY", BDEFOptions));
 
    const tail = altPrio(
      seq("EXTERNAL", BDEFString),
      seq("AS", BDEFName),
      BDEFParameter,
      BDEFResult,
      BDEFCardinality,
      "OPTIMIZED",
      "EXTENSIBLE",
      "WITH ADDITIONAL IMPLEMENTATION");
 
    return seq(
      starPrio(modifier),
      altPrio("ACTION", "FUNCTION"),
      optPrio(BDEFOptions),
      BDEFName,
      starPrio(tail),
      altPrio(";", BDEFDefaultFunction));
  }
}