@abaplint/core 2.119.44 → 2.119.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/build/abaplint.d.ts +360 -5
  2. package/build/src/abap/2_statements/expressions/_select_core.js +9 -7
  3. package/build/src/abap/2_statements/expressions/assign_source.js +9 -3
  4. package/build/src/abap/2_statements/expressions/database_table.js +8 -0
  5. package/build/src/abap/2_statements/expressions/select.js +1 -1
  6. package/build/src/abap/2_statements/expressions/select_cte.js +2 -1
  7. package/build/src/abap/2_statements/expressions/sql_client.js +1 -1
  8. package/build/src/abap/2_statements/expressions/sql_from.js +9 -8
  9. package/build/src/abap/2_statements/expressions/sql_from_source.js +2 -1
  10. package/build/src/abap/2_statements/statements/add.js +2 -1
  11. package/build/src/abap/2_statements/statements/assert.js +2 -1
  12. package/build/src/abap/2_statements/statements/assign.js +8 -3
  13. package/build/src/abap/2_statements/statements/at.js +2 -1
  14. package/build/src/abap/2_statements/statements/authority_check.js +2 -1
  15. package/build/src/abap/2_statements/statements/call.js +2 -1
  16. package/build/src/abap/2_statements/statements/call_function.js +1 -1
  17. package/build/src/abap/2_statements/statements/call_transformation.js +2 -1
  18. package/build/src/abap/2_statements/statements/class_deferred.js +2 -1
  19. package/build/src/abap/2_statements/statements/class_definition_load.js +2 -1
  20. package/build/src/abap/2_statements/statements/commit.js +2 -1
  21. package/build/src/abap/2_statements/statements/commit_entities.js +1 -1
  22. package/build/src/abap/2_statements/statements/create_data.js +1 -1
  23. package/build/src/abap/2_statements/statements/create_object.js +1 -1
  24. package/build/src/abap/2_statements/statements/delete_database.js +2 -1
  25. package/build/src/abap/2_statements/statements/delete_internal.js +3 -1
  26. package/build/src/abap/2_statements/statements/divide.js +2 -1
  27. package/build/src/abap/2_statements/statements/endform.js +2 -2
  28. package/build/src/abap/2_statements/statements/endfunction.js +2 -1
  29. package/build/src/abap/2_statements/statements/endwith.js +1 -1
  30. package/build/src/abap/2_statements/statements/export.js +4 -3
  31. package/build/src/abap/2_statements/statements/form.js +2 -1
  32. package/build/src/abap/2_statements/statements/free.js +2 -1
  33. package/build/src/abap/2_statements/statements/function_module.js +2 -1
  34. package/build/src/abap/2_statements/statements/function_pool.js +2 -1
  35. package/build/src/abap/2_statements/statements/get_reference.js +2 -1
  36. package/build/src/abap/2_statements/statements/get_time.js +2 -1
  37. package/build/src/abap/2_statements/statements/import.js +5 -4
  38. package/build/src/abap/2_statements/statements/insert_database.js +2 -1
  39. package/build/src/abap/2_statements/statements/interface_deferred.js +2 -1
  40. package/build/src/abap/2_statements/statements/interface_load.js +2 -1
  41. package/build/src/abap/2_statements/statements/loop.js +1 -1
  42. package/build/src/abap/2_statements/statements/loop_extract.js +2 -1
  43. package/build/src/abap/2_statements/statements/message.js +2 -1
  44. package/build/src/abap/2_statements/statements/method_def.js +8 -4
  45. package/build/src/abap/2_statements/statements/method_implementation.js +3 -1
  46. package/build/src/abap/2_statements/statements/modify_database.js +2 -1
  47. package/build/src/abap/2_statements/statements/multiply.js +2 -1
  48. package/build/src/abap/2_statements/statements/perform.js +1 -1
  49. package/build/src/abap/2_statements/statements/raise.js +2 -1
  50. package/build/src/abap/2_statements/statements/raise_entity_event.js +2 -1
  51. package/build/src/abap/2_statements/statements/raise_event.js +2 -1
  52. package/build/src/abap/2_statements/statements/read_table.js +3 -2
  53. package/build/src/abap/2_statements/statements/rollback.js +2 -1
  54. package/build/src/abap/2_statements/statements/rollback_entities.js +1 -1
  55. package/build/src/abap/2_statements/statements/set_handler.js +2 -1
  56. package/build/src/abap/2_statements/statements/set_locks.js +1 -1
  57. package/build/src/abap/2_statements/statements/static.js +3 -2
  58. package/build/src/abap/2_statements/statements/subtract.js +2 -1
  59. package/build/src/abap/2_statements/statements/test_injection.js +2 -1
  60. package/build/src/abap/2_statements/statements/test_seam.js +1 -1
  61. package/build/src/abap/2_statements/statements/update_database.js +4 -3
  62. package/build/src/abap/2_statements/statements/wait.js +4 -3
  63. package/build/src/abap/2_statements/statements/with.js +1 -1
  64. package/build/src/abap/5_syntax/_current_scope.js +1 -2
  65. package/build/src/abap/5_syntax/expressions/select.js +15 -3
  66. package/build/src/abap/5_syntax/statements/delete_internal.js +4 -3
  67. package/build/src/abap/5_syntax/statements/loop.js +8 -0
  68. package/build/src/abap/5_syntax/statements/modify_internal.js +7 -0
  69. package/build/src/abap/5_syntax/statements/select_loop.js +1 -1
  70. package/build/src/cds/cds_parser.js +8 -8
  71. package/build/src/config.js +24 -15
  72. package/build/src/ddl/ddl_parser.js +2 -2
  73. package/build/src/registry.js +1 -1
  74. package/build/src/rules/index.js +1 -0
  75. package/build/src/rules/sy_read_restriction.js +152 -0
  76. package/build/src/version.js +2 -65
  77. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.At = void 0;
4
+ const version_1 = require("../../../version");
4
5
  const combi_1 = require("../combi");
5
6
  const expressions_1 = require("../expressions");
6
7
  class At {
@@ -10,7 +11,7 @@ class At {
10
11
  const atEnd = (0, combi_1.seq)("END OF", field);
11
12
  const group = (0, combi_1.regex)(/^[%\w]+$/);
12
13
  const ret = (0, combi_1.seq)("AT", (0, combi_1.altPrio)(atNew, atEnd, group));
13
- return ret;
14
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
14
15
  }
15
16
  }
16
17
  exports.At = At;
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AuthorityCheck = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class AuthorityCheck {
7
8
  getMatcher() {
8
9
  const field = (0, combi_1.seq)("FIELD", expressions_1.Source);
9
10
  const id = (0, combi_1.seq)("ID", expressions_1.Source, (0, combi_1.alt)(field, "DUMMY"));
10
11
  const ret = (0, combi_1.seq)("AUTHORITY-CHECK OBJECT", expressions_1.Source, (0, combi_1.opt)((0, combi_1.seq)("FOR USER", expressions_1.Source)), (0, combi_1.plus)(id));
11
- return ret;
12
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
12
13
  }
13
14
  }
14
15
  exports.AuthorityCheck = AuthorityCheck;
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Call = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  // method call
7
8
  class Call {
8
9
  getMatcher() {
9
- const call = (0, combi_1.seq)("CALL METHOD", expressions_1.MethodSource, expressions_1.MethodCallBody);
10
+ const call = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("CALL METHOD", expressions_1.MethodSource, expressions_1.MethodCallBody));
10
11
  return (0, combi_1.altPrio)(call, expressions_1.MethodCallChain);
11
12
  }
12
13
  }
@@ -18,7 +18,7 @@ class CallFunction {
18
18
  const ex = (0, combi_1.seq)("EXCEPTION-TABLE", expressions_1.Source);
19
19
  const dynamic = (0, combi_1.alt)((0, combi_1.seq)("PARAMETER-TABLE", expressions_1.Source, (0, combi_1.opt)(ex)), ex);
20
20
  const call = (0, combi_1.seq)("CALL", (0, combi_1.altPrio)("FUNCTION", (0, combi_1.verNotLang)(version_1.LanguageVersion.Cloud, "CUSTOMER-FUNCTION")), expressions_1.FunctionName, (0, combi_1.opt)(options), (0, combi_1.alt)(expressions_1.FunctionParameters, dynamic));
21
- return call;
21
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, call);
22
22
  }
23
23
  }
24
24
  exports.CallFunction = CallFunction;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CallTransformation = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class CallTransformation {
7
8
  getMatcher() {
8
9
  const options = (0, combi_1.seq)("OPTIONS", expressions_1.CallTransformationOptions);
@@ -13,7 +14,7 @@ class CallTransformation {
13
14
  const result2 = (0, combi_1.seq)("XML", expressions_1.Target);
14
15
  const result = (0, combi_1.seq)("RESULT", (0, combi_1.alt)(expressions_1.CallTransformationParameters, result2));
15
16
  const call = (0, combi_1.seq)("CALL TRANSFORMATION", (0, combi_1.alt)(expressions_1.NamespaceSimpleName, expressions_1.Dynamic), (0, combi_1.per)(options, parameters, objects, source, result));
16
- return call;
17
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, call);
17
18
  }
18
19
  }
19
20
  exports.CallTransformation = CallTransformation;
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClassDeferred = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class ClassDeferred {
7
8
  getMatcher() {
8
- return (0, combi_1.seq)("CLASS", expressions_1.ClassName, "DEFINITION DEFERRED", (0, combi_1.optPrio)("PUBLIC"));
9
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("CLASS", expressions_1.ClassName, "DEFINITION DEFERRED", (0, combi_1.optPrio)("PUBLIC")));
9
10
  }
10
11
  }
11
12
  exports.ClassDeferred = ClassDeferred;
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClassDefinitionLoad = void 0;
4
+ const version_1 = require("../../../version");
4
5
  const combi_1 = require("../combi");
5
6
  const expressions_1 = require("../expressions");
6
7
  class ClassDefinitionLoad {
7
8
  getMatcher() {
8
- return (0, combi_1.seq)("CLASS", expressions_1.ClassName, "DEFINITION LOAD");
9
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("CLASS", expressions_1.ClassName, "DEFINITION LOAD"));
9
10
  }
10
11
  }
11
12
  exports.ClassDefinitionLoad = ClassDefinitionLoad;
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Commit = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class Commit {
7
8
  getMatcher() {
8
9
  const work = (0, combi_1.seq)("WORK", (0, combi_1.opt)("AND WAIT"));
9
- return (0, combi_1.seq)("COMMIT", (0, combi_1.alt)(work, expressions_1.DatabaseConnection));
10
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("COMMIT", (0, combi_1.alt)(work, expressions_1.DatabaseConnection)));
10
11
  }
11
12
  }
12
13
  exports.Commit = Commit;
@@ -10,7 +10,7 @@ class CommitEntities {
10
10
  const reported = (0, combi_1.seq)("REPORTED", expressions_1.Target);
11
11
  const responses = (0, combi_1.seq)("RESPONSES", failed, reported);
12
12
  const s = (0, combi_1.seq)("COMMIT ENTITIES", (0, combi_1.optPrio)("IN SIMULATION MODE"), (0, combi_1.opt)(responses), (0, combi_1.opt)((0, combi_1.seq)("RESPONSE OF", expressions_1.NamespaceSimpleName, (0, combi_1.per)(failed, reported))));
13
- return (0, combi_1.ver)(version_1.Release.v754, s, { also: combi_1.AlsoIn.OpenABAP });
13
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.ver)(version_1.Release.v754, s, { also: combi_1.AlsoIn.OpenABAP }));
14
14
  }
15
15
  }
16
16
  exports.CommitEntities = CommitEntities;
@@ -21,7 +21,7 @@ class CreateData {
21
21
  const key = (0, combi_1.seq)("WITH", (0, combi_1.alt)(def, kdef));
22
22
  const specified = (0, combi_1.seq)((0, combi_1.alt)(type, like), (0, combi_1.opt)(key), (0, combi_1.opt)(initial), (0, combi_1.opt)(length), (0, combi_1.opt)(decimals));
23
23
  const ret = (0, combi_1.seq)("CREATE DATA", expressions_1.Target, (0, combi_1.opt)((0, combi_1.alt)(typeHandle, (0, combi_1.seq)((0, combi_1.opt)(areaHandle), specified))));
24
- return ret;
24
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
25
25
  }
26
26
  }
27
27
  exports.CreateData = CreateData;
@@ -13,7 +13,7 @@ class CreateObject {
13
13
  const area = (0, combi_1.seq)("AREA HANDLE", expressions_1.Source);
14
14
  const type = (0, combi_1.seq)("TYPE", (0, combi_1.altPrio)(expressions_1.ClassName, expressions_1.Dynamic));
15
15
  const ret = (0, combi_1.seq)("CREATE OBJECT", expressions_1.Target, (0, combi_1.optPrio)((0, combi_1.per)(type, (0, combi_1.verNotLang)(version_1.LanguageVersion.Cloud, area))), (0, combi_1.optPrio)((0, combi_1.altPrio)(exporting, ptable)), (0, combi_1.optPrio)((0, combi_1.altPrio)(exceptions, etable)));
16
- return ret;
16
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
17
17
  }
18
18
  }
19
19
  exports.CreateObject = CreateObject;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DeleteDatabase = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  const sql_client_1 = require("../expressions/sql_client");
7
8
  class DeleteDatabase {
8
9
  getMatcher() {
@@ -11,7 +12,7 @@ class DeleteDatabase {
11
12
  const fromSomething = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSourceSimple);
12
13
  const table = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.optPrio)(sql_client_1.SQLClient), (0, combi_1.optPrio)(expressions_1.DatabaseConnection), (0, combi_1.optPrio)(fromSomething));
13
14
  const ret = (0, combi_1.seq)("DELETE", (0, combi_1.altPrio)(from, table));
14
- return ret;
15
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
15
16
  }
16
17
  }
17
18
  exports.DeleteDatabase = DeleteDatabase;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DeleteInternal = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class DeleteInternal {
7
8
  getMatcher() {
8
9
  // todo, is READ and DELETE similar? something can be reused?
@@ -11,7 +12,8 @@ class DeleteInternal {
11
12
  const using = (0, combi_1.seq)("USING KEY", keyName);
12
13
  const from = (0, combi_1.seq)("FROM", expressions_1.Source);
13
14
  const fromTo = (0, combi_1.seq)((0, combi_1.optPrio)(from), (0, combi_1.optPrio)((0, combi_1.seq)("TO", expressions_1.Source)));
14
- const where = (0, combi_1.seq)("WHERE", (0, combi_1.alt)(expressions_1.ComponentCond, expressions_1.Dynamic));
15
+ // WHERE (dynamic) blocked in KeyUser
16
+ const where = (0, combi_1.seq)("WHERE", (0, combi_1.alt)(expressions_1.ComponentCond, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.Dynamic)));
15
17
  const key = (0, combi_1.seq)("WITH TABLE KEY", (0, combi_1.opt)((0, combi_1.seq)(keyName, "COMPONENTS")), (0, combi_1.plus)(expressions_1.ComponentCompare));
16
18
  const table = (0, combi_1.seq)("TABLE", expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), (0, combi_1.seq)((0, combi_1.optPrio)(from), (0, combi_1.optPrio)(using)), key));
17
19
  const other = (0, combi_1.seq)(expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), fromTo, key), (0, combi_1.opt)(where));
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Divide = void 0;
4
+ const version_1 = require("../../../version");
4
5
  const combi_1 = require("../combi");
5
6
  const expressions_1 = require("../expressions");
6
7
  class Divide {
7
8
  getMatcher() {
8
9
  const ret = (0, combi_1.seq)("DIVIDE", expressions_1.Target, "BY", expressions_1.Source);
9
- return ret;
10
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
10
11
  }
11
12
  }
12
13
  exports.Divide = Divide;
@@ -2,10 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EndForm = void 0;
4
4
  const combi_1 = require("../combi");
5
+ const version_1 = require("../../../version");
5
6
  class EndForm {
6
7
  getMatcher() {
7
- const ret = (0, combi_1.str)("ENDFORM");
8
- return ret;
8
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.str)("ENDFORM"));
9
9
  }
10
10
  }
11
11
  exports.EndForm = EndForm;
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EndFunction = void 0;
4
4
  const combi_1 = require("../combi");
5
+ const version_1 = require("../../../version");
5
6
  class EndFunction {
6
7
  getMatcher() {
7
- return (0, combi_1.str)("ENDFUNCTION");
8
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.str)("ENDFUNCTION"));
8
9
  }
9
10
  }
10
11
  exports.EndFunction = EndFunction;
@@ -5,7 +5,7 @@ const combi_1 = require("../combi");
5
5
  const version_1 = require("../../../version");
6
6
  class EndWith {
7
7
  getMatcher() {
8
- return (0, combi_1.ver)(version_1.Release.v751, "ENDWITH");
8
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.ver)(version_1.Release.v751, "ENDWITH"));
9
9
  }
10
10
  }
11
11
  exports.EndWith = EndWith;
@@ -4,6 +4,7 @@ exports.Export = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const tokens_1 = require("../../1_lexer/tokens");
6
6
  const expressions_1 = require("../expressions");
7
+ const version_1 = require("../../../version");
7
8
  // todo, cloud, split?
8
9
  class Export {
9
10
  getMatcher() {
@@ -13,10 +14,10 @@ class Export {
13
14
  const using = (0, combi_1.seq)("USING", expressions_1.Source);
14
15
  const cluster = (0, combi_1.seq)(expressions_1.NamespaceSimpleName, (0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.regex)(/^[\w$%\^~]{2}$/), (0, combi_1.tok)(tokens_1.ParenRightW));
15
16
  const buffer = (0, combi_1.seq)("DATA BUFFER", expressions_1.Target);
16
- const memory = (0, combi_1.seq)("MEMORY", (0, combi_1.opt)((0, combi_1.seq)("ID", expressions_1.Source)));
17
+ const memory = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("MEMORY", (0, combi_1.opt)((0, combi_1.seq)("ID", expressions_1.Source))));
17
18
  const table = (0, combi_1.seq)("INTERNAL TABLE", expressions_1.Target);
18
- const shared = (0, combi_1.seq)((0, combi_1.alt)("SHARED MEMORY", "SHARED BUFFER"), cluster, (0, combi_1.per)(from, client, id));
19
- const database = (0, combi_1.seq)("DATABASE", cluster, (0, combi_1.per)(from, client, id, using));
19
+ const shared = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)((0, combi_1.alt)("SHARED MEMORY", "SHARED BUFFER"), cluster, (0, combi_1.per)(from, client, id)));
20
+ const database = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("DATABASE", cluster, (0, combi_1.per)(from, client, id, using)));
20
21
  const target = (0, combi_1.alt)(buffer, memory, database, table, shared);
21
22
  const left = (0, combi_1.alt)(expressions_1.FieldSub, expressions_1.FieldSymbol);
22
23
  const source = (0, combi_1.alt)((0, combi_1.plus)((0, combi_1.altPrio)((0, combi_1.seq)(left, from), left)), expressions_1.Dynamic, expressions_1.Constant);
@@ -3,11 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Form = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class Form {
7
8
  getMatcher() {
8
9
  const parameters = (0, combi_1.seq)((0, combi_1.opt)(expressions_1.FormTables), (0, combi_1.opt)(expressions_1.FormUsing), (0, combi_1.opt)(expressions_1.FormChanging), (0, combi_1.opt)(expressions_1.FormRaising));
9
10
  const ret = (0, combi_1.seq)("FORM", expressions_1.FormName, (0, combi_1.alt)("IMPLEMENTATION", parameters));
10
- return ret;
11
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
11
12
  }
12
13
  }
13
14
  exports.Form = Form;
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Free = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class Free {
7
8
  getMatcher() {
8
9
  const ret = (0, combi_1.seq)("FREE", expressions_1.Target);
9
- return ret;
10
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
10
11
  }
11
12
  }
12
13
  exports.Free = Free;
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FunctionModule = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class FunctionModule {
7
8
  getMatcher() {
8
- return (0, combi_1.seq)("FUNCTION", expressions_1.Field);
9
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FUNCTION", expressions_1.Field));
9
10
  }
10
11
  }
11
12
  exports.FunctionModule = FunctionModule;
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FunctionPool = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class FunctionPool {
7
8
  getMatcher() {
8
9
  const message = (0, combi_1.seq)("MESSAGE-ID", expressions_1.MessageClass);
9
10
  const line = (0, combi_1.seq)("LINE-SIZE", expressions_1.Integer);
10
11
  const no = (0, combi_1.str)("NO STANDARD PAGE HEADING");
11
- return (0, combi_1.seq)("FUNCTION-POOL", expressions_1.IncludeName, (0, combi_1.opt)((0, combi_1.per)(message, line, no)));
12
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FUNCTION-POOL", expressions_1.IncludeName, (0, combi_1.opt)((0, combi_1.per)(message, line, no))));
12
13
  }
13
14
  }
14
15
  exports.FunctionPool = FunctionPool;
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetReference = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class GetReference {
7
8
  getMatcher() {
8
9
  const ret = (0, combi_1.seq)("GET REFERENCE OF", expressions_1.Source, "INTO", expressions_1.Target);
9
- return ret;
10
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
10
11
  }
11
12
  }
12
13
  exports.GetReference = GetReference;
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetTime = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class GetTime {
7
8
  getMatcher() {
8
9
  const options = (0, combi_1.seq)((0, combi_1.alt)("STAMP FIELD", "FIELD"), expressions_1.Target);
9
- return (0, combi_1.seq)("GET TIME", (0, combi_1.opt)(options));
10
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("GET TIME", (0, combi_1.opt)(options)));
10
11
  }
11
12
  }
12
13
  exports.GetTime = GetTime;
@@ -4,6 +4,7 @@ exports.Import = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const tokens_1 = require("../../1_lexer/tokens");
6
6
  const expressions_1 = require("../expressions");
7
+ const version_1 = require("../../../version");
7
8
  class Import {
8
9
  getMatcher() {
9
10
  const dto = (0, combi_1.seq)("TO", expressions_1.Target);
@@ -12,11 +13,11 @@ class Import {
12
13
  const using = (0, combi_1.seq)("USING", expressions_1.Source);
13
14
  const cluster = (0, combi_1.seq)(expressions_1.NamespaceSimpleName, (0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.regex)(/^[\w$%\^]{2}$/), (0, combi_1.tok)(tokens_1.ParenRightW));
14
15
  const buffer = (0, combi_1.seq)("DATA BUFFER", expressions_1.Source);
15
- const memory = (0, combi_1.seq)("MEMORY", (0, combi_1.opt)((0, combi_1.seq)("ID", expressions_1.Source)));
16
+ const memory = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("MEMORY", (0, combi_1.opt)((0, combi_1.seq)("ID", expressions_1.Source))));
16
17
  const table = (0, combi_1.seq)("INTERNAL TABLE", expressions_1.Source);
17
- const shared = (0, combi_1.seq)((0, combi_1.alt)("SHARED MEMORY", "SHARED BUFFER"), cluster, (0, combi_1.per)(dto, client, id));
18
- const database = (0, combi_1.seq)("DATABASE", cluster, (0, combi_1.per)(dto, client, id, using));
19
- const logfile = (0, combi_1.seq)("LOGFILE ID", expressions_1.Source);
18
+ const shared = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)((0, combi_1.alt)("SHARED MEMORY", "SHARED BUFFER"), cluster, (0, combi_1.per)(dto, client, id)));
19
+ const database = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("DATABASE", cluster, (0, combi_1.per)(dto, client, id, using)));
20
+ const logfile = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("LOGFILE ID", expressions_1.Source));
20
21
  const source = (0, combi_1.alt)(buffer, memory, database, table, shared, logfile);
21
22
  const to = (0, combi_1.plus)((0, combi_1.seq)(expressions_1.ComponentChainSimple, (0, combi_1.alt)("TO", "INTO"), expressions_1.Target));
22
23
  const toeq = (0, combi_1.plus)((0, combi_1.seq)((0, combi_1.alt)(expressions_1.ComponentChainSimple, expressions_1.FieldSymbol), "=", expressions_1.Target));
@@ -4,13 +4,14 @@ exports.InsertDatabase = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
6
  const tokens_1 = require("../../1_lexer/tokens");
7
+ const version_1 = require("../../../version");
7
8
  class InsertDatabase {
8
9
  getMatcher() {
9
10
  const sub = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.Select, (0, combi_1.tok)(tokens_1.WParenRightW));
10
11
  const f = (0, combi_1.seq)((0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), "FROM", (0, combi_1.opt)("TABLE"), (0, combi_1.alt)(expressions_1.SQLSource, sub), (0, combi_1.opt)("ACCEPTING DUPLICATE KEYS"));
11
12
  const from = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.opt)((0, combi_1.alt)(f, expressions_1.SQLClient, expressions_1.DatabaseConnection)));
12
13
  const into = (0, combi_1.seq)("INTO", expressions_1.DatabaseTable, (0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), "VALUES", expressions_1.SQLSource);
13
- return (0, combi_1.seq)("INSERT", (0, combi_1.alt)(from, into));
14
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("INSERT", (0, combi_1.alt)(from, into)));
14
15
  }
15
16
  }
16
17
  exports.InsertDatabase = InsertDatabase;
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InterfaceDeferred = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class InterfaceDeferred {
7
8
  getMatcher() {
8
- return (0, combi_1.seq)("INTERFACE", expressions_1.InterfaceName, "DEFERRED", (0, combi_1.opt)("PUBLIC"));
9
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("INTERFACE", expressions_1.InterfaceName, "DEFERRED", (0, combi_1.opt)("PUBLIC")));
9
10
  }
10
11
  }
11
12
  exports.InterfaceDeferred = InterfaceDeferred;
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InterfaceLoad = void 0;
4
+ const version_1 = require("../../../version");
4
5
  const combi_1 = require("../combi");
5
6
  const expressions_1 = require("../expressions");
6
7
  class InterfaceLoad {
7
8
  getMatcher() {
8
- return (0, combi_1.seq)("INTERFACE", expressions_1.InterfaceName, "LOAD");
9
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("INTERFACE", expressions_1.InterfaceName, "LOAD"));
9
10
  }
10
11
  }
11
12
  exports.InterfaceLoad = InterfaceLoad;
@@ -7,7 +7,7 @@ const version_1 = require("../../../version");
7
7
  const loop_group_by_1 = require("../expressions/loop_group_by");
8
8
  class Loop {
9
9
  getMatcher() {
10
- const where = (0, combi_1.seq)("WHERE", (0, combi_1.alt)(expressions_1.ComponentCond, expressions_1.Dynamic));
10
+ const where = (0, combi_1.seq)("WHERE", (0, combi_1.alt)(expressions_1.ComponentCond, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.Dynamic)));
11
11
  const group = (0, combi_1.ver)(version_1.Release.v740sp08, (0, combi_1.seq)("GROUP BY", loop_group_by_1.LoopGroupBy), { also: combi_1.AlsoIn.OpenABAP });
12
12
  const step = (0, combi_1.ver)(version_1.Release.v757, (0, combi_1.seq)("STEP", expressions_1.Source));
13
13
  const from = (0, combi_1.seq)("FROM", expressions_1.Source);
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LoopExtract = void 0;
4
4
  const combi_1 = require("../combi");
5
+ const version_1 = require("../../../version");
5
6
  class LoopExtract {
6
7
  getMatcher() {
7
- return (0, combi_1.str)("LOOP");
8
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.str)("LOOP"));
8
9
  }
9
10
  }
10
11
  exports.LoopExtract = LoopExtract;
@@ -8,7 +8,8 @@ class Message {
8
8
  getMatcher() {
9
9
  const like = (0, combi_1.seq)("DISPLAY LIKE", expressions_1.Source);
10
10
  const into = (0, combi_1.seq)("INTO", expressions_1.Target);
11
- const raising = (0, combi_1.seq)("RAISING", expressions_1.ExceptionName);
11
+ // RAISING addition blocked in KeyUser
12
+ const raising = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("RAISING", expressions_1.ExceptionName));
12
13
  const options = (0, combi_1.per)(like, into, raising);
13
14
  const type = (0, combi_1.seq)("TYPE", expressions_1.Source);
14
15
  const sou = (0, combi_1.altPrio)(options, expressions_1.MessageSourceSource);
@@ -7,8 +7,10 @@ const expressions_1 = require("../expressions");
7
7
  class MethodDef {
8
8
  getMatcher() {
9
9
  const def = (0, combi_1.ver)(version_1.Release.v740sp08, (0, combi_1.seq)("DEFAULT", (0, combi_1.altPrio)("FAIL", "IGNORE")), { also: combi_1.AlsoIn.OpenABAP });
10
- const parameters = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("FINAL", def, expressions_1.Abstract)), (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefChanging), (0, combi_1.optPrio)(expressions_1.MethodDefReturning), (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, expressions_1.MethodDefExceptions)));
11
- const testing = (0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), "FOR TESTING", (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, expressions_1.MethodDefExceptions)));
10
+ const parameters = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("FINAL", def, expressions_1.Abstract)), (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefChanging), (0, combi_1.optPrio)(expressions_1.MethodDefReturning),
11
+ // Old-style EXCEPTIONS blocked in KeyUser
12
+ (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.MethodDefExceptions))));
13
+ const testing = (0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), "FOR TESTING", (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.MethodDefExceptions))));
12
14
  const result = (0, combi_1.seq)("RESULT", expressions_1.MethodParamName);
13
15
  const link = (0, combi_1.seq)("LINK", expressions_1.MethodParamName);
14
16
  const full = (0, combi_1.seq)("FULL", expressions_1.MethodParamName);
@@ -19,8 +21,10 @@ class MethodDef {
19
21
  (0, combi_1.seq)("TABLE FUNCTION", expressions_1.NamespaceSimpleName), // todo, this is only from version something
20
22
  (0, combi_1.seq)("VALIDATE ON SAVE IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("MODIFY", (0, combi_1.opt)("IMPORTING"), (0, combi_1.plus)((0, combi_1.seq)(expressions_1.MethodParamName, modify))), (0, combi_1.seq)("PRECHECK IMPORTING", expressions_1.MethodParamName, modify), (0, combi_1.seq)("DETERMINATION", expressions_1.TypeName, "IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("VALIDATION", expressions_1.TypeName, "IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("NUMBERING IMPORTING", expressions_1.MethodParamName, modify), (0, combi_1.seq)("READ IMPORTING", expressions_1.MethodParamName, (0, combi_1.altPrio)(forRead, forfunction)), (0, combi_1.seq)("FEATURES IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.NamespaceSimpleName, "FOR", expressions_1.NamespaceSimpleName, result), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR CREATE", expressions_1.TypeName, expressions_1.MethodParamName, "FOR UPDATE", expressions_1.TypeName, expressions_1.MethodParamName, "FOR DELETE", expressions_1.TypeName), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR READ", expressions_1.TypeName, result), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR UPDATE", expressions_1.TypeName), (0, combi_1.seq)((0, combi_1.alt)("BEHAVIOR", "LOCK"), "IMPORTING", expressions_1.MethodParamName, "FOR LOCK", expressions_1.TypeName), (0, combi_1.seq)("DETERMINE", (0, combi_1.alt)("ON MODIFY", "ON SAVE"), "IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("GLOBAL AUTHORIZATION IMPORTING REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)("GLOBAL FEATURES IMPORTING REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)((0, combi_1.seq)((0, combi_1.opt)("INSTANCE"), "AUTHORIZATION IMPORTING"), expressions_1.MethodParamName, "REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)("INSTANCE FEATURES IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result));
21
23
  // todo, this is only from version something
22
- const amdp = (0, combi_1.seq)("AMDP OPTIONS", (0, combi_1.optPrio)("READ-ONLY"), "CDS SESSION CLIENT", (0, combi_1.alt)("CURRENT", "DEPENDENT"), (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising));
23
- const ret = (0, combi_1.seq)((0, combi_1.altPrio)("CLASS-METHODS", "METHODS"), expressions_1.MethodName, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), (0, combi_1.optPrio)(def), expressions_1.EventHandler), parameters, testing, (0, combi_1.seq)("FOR", behavior), amdp, "NOT AT END OF MODE", (0, combi_1.optPrio)(expressions_1.Redefinition)));
24
+ // AMDP OPTIONS clause blocked in KeyUser
25
+ const amdp = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("AMDP OPTIONS", (0, combi_1.optPrio)("READ-ONLY"), "CDS SESSION CLIENT", (0, combi_1.alt)("CURRENT", "DEPENDENT"), (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising)));
26
+ // FOR DDL OBJECT / FOR TABLE FUNCTION / FOR SCALAR FUNCTION blocked in KeyUser
27
+ const ret = (0, combi_1.seq)((0, combi_1.altPrio)("CLASS-METHODS", "METHODS"), expressions_1.MethodName, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), (0, combi_1.optPrio)(def), expressions_1.EventHandler), parameters, testing, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FOR", behavior)), amdp, "NOT AT END OF MODE", (0, combi_1.optPrio)(expressions_1.Redefinition)));
24
28
  return ret;
25
29
  }
26
30
  }
@@ -3,13 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MethodImplementation = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class MethodImplementation {
7
8
  getMatcher() {
8
9
  const name = (0, combi_1.regex)(/[\w~]+/);
9
10
  const kernel = (0, combi_1.seq)("KERNEL MODULE", (0, combi_1.plus)(name), (0, combi_1.optPrio)((0, combi_1.altPrio)("FAIL", "IGNORE")));
10
11
  const using = (0, combi_1.seq)("USING", (0, combi_1.plus)(expressions_1.SimpleFieldChain));
11
12
  const database = (0, combi_1.seq)("DATABASE", (0, combi_1.alt)("PROCEDURE", "FUNCTION", "GRAPH WORKSPACE"), "FOR HDB", expressions_1.Language, (0, combi_1.opt)("OPTIONS READ-ONLY"), (0, combi_1.opt)(using));
12
- const by = (0, combi_1.seq)("BY", (0, combi_1.alt)(kernel, database));
13
+ // BY DATABASE and BY KERNEL both blocked in KeyUser
14
+ const by = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("BY", (0, combi_1.alt)(kernel, database)));
13
15
  return (0, combi_1.seq)("METHOD", expressions_1.MethodName, (0, combi_1.optPrio)(by));
14
16
  }
15
17
  }
@@ -3,11 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ModifyDatabase = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class ModifyDatabase {
7
8
  getMatcher() {
8
9
  const from = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSource);
9
10
  const options = (0, combi_1.per)(expressions_1.DatabaseConnection, from, expressions_1.SQLClient);
10
- return (0, combi_1.seq)("MODIFY", expressions_1.DatabaseTable, options);
11
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("MODIFY", expressions_1.DatabaseTable, options));
11
12
  }
12
13
  }
13
14
  exports.ModifyDatabase = ModifyDatabase;
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Multiply = void 0;
4
+ const version_1 = require("../../../version");
4
5
  const combi_1 = require("../combi");
5
6
  const expressions_1 = require("../expressions");
6
7
  class Multiply {
7
8
  getMatcher() {
8
9
  const ret = (0, combi_1.seq)("MULTIPLY", expressions_1.Target, "BY", expressions_1.Source);
9
- return ret;
10
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
10
11
  }
11
12
  }
12
13
  exports.Multiply = Multiply;
@@ -50,7 +50,7 @@ class Perform {
50
50
  const normal = (0, combi_1.seq)((0, combi_1.opt)(found), (0, combi_1.opt)(expressions_1.PerformTables), (0, combi_1.opt)(expressions_1.PerformUsing), (0, combi_1.opt)(expressions_1.PerformChanging), (0, combi_1.opt)(found), (0, combi_1.opt)(commit));
51
51
  const of = (0, combi_1.seq)("OF", (0, combi_1.plus)(Expressions.FormName));
52
52
  const ret = (0, combi_1.seq)("PERFORM", (0, combi_1.alt)(short, full), (0, combi_1.altPrio)(of, normal));
53
- return ret;
53
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
54
54
  }
55
55
  }
56
56
  exports.Perform = Perform;
@@ -12,7 +12,8 @@ class Raise {
12
12
  const from = (0, combi_1.seq)("TYPE", expressions_1.ClassName, (0, combi_1.opt)((0, combi_1.alt)((0, combi_1.ver)(version_1.Release.v750, (0, combi_1.alt)(mess, messid), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v752, "USING MESSAGE"))), (0, combi_1.optPrio)(exporting));
13
13
  const pre = (0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.optPrio)("RESUMABLE"), "EXCEPTION"), "SHORTDUMP");
14
14
  const clas = (0, combi_1.seq)(pre, (0, combi_1.altPrio)(from, (0, combi_1.ver)(version_1.Release.v752, expressions_1.Source, { also: combi_1.AlsoIn.OpenABAP }), expressions_1.SimpleSource2));
15
- const ret = (0, combi_1.seq)("RAISE", (0, combi_1.altPrio)(clas, expressions_1.ExceptionName));
15
+ // Old form "RAISE exception_name" blocked in KeyUser
16
+ const ret = (0, combi_1.seq)("RAISE", (0, combi_1.altPrio)(clas, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.ExceptionName)));
16
17
  return ret;
17
18
  }
18
19
  }
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RaiseEntityEvent = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class RaiseEntityEvent {
7
8
  getMatcher() {
8
- return (0, combi_1.seq)("RAISE ENTITY EVENT", expressions_1.EventName, "FROM", expressions_1.Source);
9
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("RAISE ENTITY EVENT", expressions_1.EventName, "FROM", expressions_1.Source));
9
10
  }
10
11
  }
11
12
  exports.RaiseEntityEvent = RaiseEntityEvent;
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RaiseEvent = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class RaiseEvent {
7
8
  getMatcher() {
8
9
  const exporting = (0, combi_1.seq)("EXPORTING", expressions_1.ParameterListS);
9
- return (0, combi_1.seq)("RAISE EVENT", expressions_1.EventName, (0, combi_1.opt)(exporting));
10
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("RAISE EVENT", expressions_1.EventName, (0, combi_1.opt)(exporting)));
10
11
  }
11
12
  }
12
13
  exports.RaiseEvent = RaiseEvent;
@@ -9,9 +9,10 @@ class ReadTable {
9
9
  getMatcher() {
10
10
  const comparing = (0, combi_1.seq)("COMPARING", (0, combi_1.alt)((0, combi_1.plus)(expressions_1.FieldSub), (0, combi_1.plus)(expressions_1.Dynamic)));
11
11
  const index = (0, combi_1.seq)("INDEX", expressions_1.Source);
12
- const components = (0, combi_1.seq)((0, combi_1.alt)(expressions_1.Field, expressions_1.Dynamic), "COMPONENTS", expressions_1.ComponentCompareSimple);
12
+ // Dynamic key name or dynamic component name blocked in KeyUser
13
+ const components = (0, combi_1.seq)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.alt)(expressions_1.Field, expressions_1.Dynamic)), "COMPONENTS", expressions_1.ComponentCompareSimple);
13
14
  const key = (0, combi_1.seq)((0, combi_1.altPrio)("WITH KEY", "WITH TABLE KEY"), (0, combi_1.alt)(expressions_1.ComponentCompareSimple, components, (0, combi_1.seq)((0, combi_1.optPrio)("="), expressions_1.Source)));
14
- const using = (0, combi_1.seq)("USING KEY", (0, combi_1.alt)(expressions_1.Field, expressions_1.Dynamic));
15
+ const using = (0, combi_1.seq)("USING KEY", (0, combi_1.alt)(expressions_1.Field, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.Dynamic)));
15
16
  const from = (0, combi_1.seq)("FROM", expressions_1.Source);
16
17
  const transporting = (0, combi_1.seq)("TRANSPORTING", (0, combi_1.altPrio)("ALL FIELDS", "NO FIELDS", transporting_fields_1.TransportingFields));
17
18
  const common = [expressions_1.ReadTableTarget, comparing, "CASTING", transporting, "BINARY SEARCH"];