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

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

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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 541x 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 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
import {seq, Expression, altPrio, alt, optPrio, ver} from "../combi";
import {EntityAssociation, EventName, NamespaceSimpleName, Source, TypeName} from ".";
import {IStatementRunnable} from "../statement_runnable";
import {Release} from "../../../version";
import {derivedTypesAlt} from "./_derived_types";
 
export class TypeStructure extends Expression {
  public getRunnable(): IStatementRunnable {
    const entity = alt(TypeName, EntityAssociation);
 
    const derivedTypes = derivedTypesAlt(
      ver(Release.v779, seq("FUNCTION REQUEST", entity)),
      ver(Release.v779, seq("ACTION REQUEST", entity)),
 
      seq("ACTION IMPORT", Source),
 
      ver(Release.v781, seq("GLOBAL AUTHORIZATION REQUEST", entity)),
      ver(Release.v781, seq("GLOBAL AUTHORIZATION RESULT", entity)),
      ver(Release.v781, seq("GLOBAL FEATURES REQUEST", entity)),
      ver(Release.v781, seq("GLOBAL FEATURES RESULT", entity)),
 
      ver(Release.v780, seq("AUTHORIZATION REQUEST", entity)),
      ver(Release.v776, seq("FEATURES REQUEST", entity)),
 
      seq("PERMISSIONS REQUEST", NamespaceSimpleName),
      ver(Release.v780, seq("PERMISSIONS RESULT", entity)),
 
      seq("READ LINK", EntityAssociation),
 
      seq("HIERARCHY", NamespaceSimpleName),
      seq("EVENT", EventName),
    );
 
    const structure = ver(Release.v774, seq("STRUCTURE FOR", derivedTypes));
 
    const response = ver(Release.v776, seq("RESPONSE FOR", altPrio(
      seq("FAILED EARLY", NamespaceSimpleName),
      seq("FAILED LATE", NamespaceSimpleName),
      seq("FAILED", NamespaceSimpleName),
      seq("MAPPED EARLY", NamespaceSimpleName),
      seq("MAPPED LATE", NamespaceSimpleName),
      seq("MAPPED", NamespaceSimpleName),
      seq("REPORTED EARLY", NamespaceSimpleName),
      seq("REPORTED LATE", NamespaceSimpleName),
      seq("REPORTED", NamespaceSimpleName),
    )));
 
    const request = ver(Release.v778, seq("REQUEST FOR", alt("CHANGE", "DELETE"), NamespaceSimpleName));
 
    return seq("TYPE", altPrio(structure, response, request), optPrio("VALUE IS INITIAL"));
  }
 
}