@abaplint/cli 2.119.36 → 2.119.37

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 (2) hide show
  1. package/build/cli.js +445 -65
  2. package/package.json +2 -2
package/build/cli.js CHANGED
@@ -213,6 +213,15 @@ class Lexer {
213
213
  }
214
214
  }
215
215
  }
216
+ if (tok === undefined && this.m === ModeNormal && s.charAt(0) === "\\") {
217
+ const adj = this.stream.nextChar() === "" ? 1 : 0;
218
+ const prevOffset = this.stream.getOffset() - s.length - adj;
219
+ const prevChar = prevOffset >= 0 ? this.stream.getRaw().substr(prevOffset, 1) : "";
220
+ const whiteBeforeBackslash = prevChar === " " || prevChar === "\n" || prevChar === "\t" || prevChar === ":";
221
+ if (!whiteBeforeBackslash) {
222
+ tok = new tokens_1.AssociationName(pos, s);
223
+ }
224
+ }
216
225
  if (tok === undefined) {
217
226
  tok = new tokens_1.Identifier(pos, s);
218
227
  }
@@ -234,6 +243,7 @@ class Lexer {
234
243
  splits[")"] = true;
235
244
  splits["["] = true;
236
245
  splits["]"] = true;
246
+ splits["\\"] = true;
237
247
  splits["\t"] = true;
238
248
  splits["\n"] = true;
239
249
  const bufs = {};
@@ -532,6 +542,24 @@ exports.AbstractToken = AbstractToken;
532
542
 
533
543
  /***/ },
534
544
 
545
+ /***/ "../core/build/src/abap/1_lexer/tokens/association_name.js"
546
+ /*!*****************************************************************!*\
547
+ !*** ../core/build/src/abap/1_lexer/tokens/association_name.js ***!
548
+ \*****************************************************************/
549
+ (__unused_webpack_module, exports, __webpack_require__) {
550
+
551
+ "use strict";
552
+
553
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
554
+ exports.AssociationName = void 0;
555
+ const abstract_token_1 = __webpack_require__(/*! ./abstract_token */ "../core/build/src/abap/1_lexer/tokens/abstract_token.js");
556
+ class AssociationName extends abstract_token_1.AbstractToken {
557
+ }
558
+ exports.AssociationName = AssociationName;
559
+ //# sourceMappingURL=association_name.js.map
560
+
561
+ /***/ },
562
+
535
563
  /***/ "../core/build/src/abap/1_lexer/tokens/at.js"
536
564
  /*!***************************************************!*\
537
565
  !*** ../core/build/src/abap/1_lexer/tokens/at.js ***!
@@ -821,6 +849,7 @@ __exportStar(__webpack_require__(/*! ./string_template_middle */ "../core/build/
821
849
  __exportStar(__webpack_require__(/*! ./colon */ "../core/build/src/abap/1_lexer/tokens/colon.js"), exports);
822
850
  __exportStar(__webpack_require__(/*! ./comment */ "../core/build/src/abap/1_lexer/tokens/comment.js"), exports);
823
851
  __exportStar(__webpack_require__(/*! ./identifier */ "../core/build/src/abap/1_lexer/tokens/identifier.js"), exports);
852
+ __exportStar(__webpack_require__(/*! ./association_name */ "../core/build/src/abap/1_lexer/tokens/association_name.js"), exports);
824
853
  __exportStar(__webpack_require__(/*! ./pragma */ "../core/build/src/abap/1_lexer/tokens/pragma.js"), exports);
825
854
  __exportStar(__webpack_require__(/*! ./punctuation */ "../core/build/src/abap/1_lexer/tokens/punctuation.js"), exports);
826
855
  //# sourceMappingURL=index.js.map
@@ -1595,11 +1624,17 @@ function containsAggregation(children) {
1595
1624
  continue;
1596
1625
  }
1597
1626
  if (child.get() instanceof Expressions.SQLAggregation) {
1598
- return true;
1627
+ if (child.findDirectExpression(Expressions.SQLOver) === undefined) {
1628
+ return true;
1629
+ }
1630
+ continue;
1599
1631
  }
1600
1632
  if (child.get() instanceof Expressions.SQLSetOpGroup) {
1601
1633
  continue;
1602
1634
  }
1635
+ if (child.get() instanceof Expressions.SQLFrom) {
1636
+ continue;
1637
+ }
1603
1638
  if (containsAggregation(child.getChildren())) {
1604
1639
  return true;
1605
1640
  }
@@ -3233,27 +3268,6 @@ exports.AssignSource = AssignSource;
3233
3268
 
3234
3269
  /***/ },
3235
3270
 
3236
- /***/ "../core/build/src/abap/2_statements/expressions/association_name.js"
3237
- /*!***************************************************************************!*\
3238
- !*** ../core/build/src/abap/2_statements/expressions/association_name.js ***!
3239
- \***************************************************************************/
3240
- (__unused_webpack_module, exports, __webpack_require__) {
3241
-
3242
- "use strict";
3243
-
3244
- Object.defineProperty(exports, "__esModule", ({ value: true }));
3245
- exports.AssociationName = void 0;
3246
- const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
3247
- class AssociationName extends combi_1.Expression {
3248
- getRunnable() {
3249
- return (0, combi_1.regex)(/^(\\_[\w]+)+$/);
3250
- }
3251
- }
3252
- exports.AssociationName = AssociationName;
3253
- //# sourceMappingURL=association_name.js.map
3254
-
3255
- /***/ },
3256
-
3257
3271
  /***/ "../core/build/src/abap/2_statements/expressions/attribute_chain.js"
3258
3272
  /*!**************************************************************************!*\
3259
3273
  !*** ../core/build/src/abap/2_statements/expressions/attribute_chain.js ***!
@@ -4294,6 +4308,28 @@ exports.Dynamic = Dynamic;
4294
4308
 
4295
4309
  /***/ },
4296
4310
 
4311
+ /***/ "../core/build/src/abap/2_statements/expressions/eml_entity_path.js"
4312
+ /*!**************************************************************************!*\
4313
+ !*** ../core/build/src/abap/2_statements/expressions/eml_entity_path.js ***!
4314
+ \**************************************************************************/
4315
+ (__unused_webpack_module, exports, __webpack_require__) {
4316
+
4317
+ "use strict";
4318
+
4319
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
4320
+ exports.EMLEntityPath = void 0;
4321
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
4322
+ const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
4323
+ class EMLEntityPath extends combi_1.Expression {
4324
+ getRunnable() {
4325
+ return (0, combi_1.plusPrio)((0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.AssociationName), (0, combi_1.regex)(/^\\[\w]+$/)));
4326
+ }
4327
+ }
4328
+ exports.EMLEntityPath = EMLEntityPath;
4329
+ //# sourceMappingURL=eml_entity_path.js.map
4330
+
4331
+ /***/ },
4332
+
4297
4333
  /***/ "../core/build/src/abap/2_statements/expressions/entity_association.js"
4298
4334
  /*!*****************************************************************************!*\
4299
4335
  !*** ../core/build/src/abap/2_statements/expressions/entity_association.js ***!
@@ -4305,9 +4341,10 @@ exports.Dynamic = Dynamic;
4305
4341
  Object.defineProperty(exports, "__esModule", ({ value: true }));
4306
4342
  exports.EntityAssociation = void 0;
4307
4343
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
4344
+ const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
4308
4345
  class EntityAssociation extends combi_1.Expression {
4309
4346
  getRunnable() {
4310
- return (0, combi_1.regex)(/^[\/\w]+(\\_|\\\\)[\/\_\w\\~]+$/);
4347
+ return (0, combi_1.seq)((0, combi_1.regex)(/^[\/\w]+$/), (0, combi_1.plusPrio)((0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.AssociationName), (0, combi_1.regex)(/^\\[\w]+$/))));
4311
4348
  }
4312
4349
  }
4313
4350
  exports.EntityAssociation = EntityAssociation;
@@ -5049,7 +5086,7 @@ __exportStar(__webpack_require__(/*! ./arith_operator */ "../core/build/src/abap
5049
5086
  __exportStar(__webpack_require__(/*! ./arrow_or_dash */ "../core/build/src/abap/2_statements/expressions/arrow_or_dash.js"), exports);
5050
5087
  __exportStar(__webpack_require__(/*! ./arrow */ "../core/build/src/abap/2_statements/expressions/arrow.js"), exports);
5051
5088
  __exportStar(__webpack_require__(/*! ./assign_source */ "../core/build/src/abap/2_statements/expressions/assign_source.js"), exports);
5052
- __exportStar(__webpack_require__(/*! ./association_name */ "../core/build/src/abap/2_statements/expressions/association_name.js"), exports);
5089
+ __exportStar(__webpack_require__(/*! ./eml_entity_path */ "../core/build/src/abap/2_statements/expressions/eml_entity_path.js"), exports);
5053
5090
  __exportStar(__webpack_require__(/*! ./attribute_chain */ "../core/build/src/abap/2_statements/expressions/attribute_chain.js"), exports);
5054
5091
  __exportStar(__webpack_require__(/*! ./attribute_name */ "../core/build/src/abap/2_statements/expressions/attribute_name.js"), exports);
5055
5092
  __exportStar(__webpack_require__(/*! ./behavior_definition_name */ "../core/build/src/abap/2_statements/expressions/behavior_definition_name.js"), exports);
@@ -5188,6 +5225,11 @@ __exportStar(__webpack_require__(/*! ./reduce_body */ "../core/build/src/abap/2_
5188
5225
  __exportStar(__webpack_require__(/*! ./reduce_next */ "../core/build/src/abap/2_statements/expressions/reduce_next.js"), exports);
5189
5226
  __exportStar(__webpack_require__(/*! ./report_name */ "../core/build/src/abap/2_statements/expressions/report_name.js"), exports);
5190
5227
  __exportStar(__webpack_require__(/*! ./select_cte */ "../core/build/src/abap/2_statements/expressions/select_cte.js"), exports);
5228
+ __exportStar(__webpack_require__(/*! ./sql_cte_associations */ "../core/build/src/abap/2_statements/expressions/sql_cte_associations.js"), exports);
5229
+ __exportStar(__webpack_require__(/*! ./sql_cte_hierarchy */ "../core/build/src/abap/2_statements/expressions/sql_cte_hierarchy.js"), exports);
5230
+ __exportStar(__webpack_require__(/*! ./sql_hierarchy_source */ "../core/build/src/abap/2_statements/expressions/sql_hierarchy_source.js"), exports);
5231
+ __exportStar(__webpack_require__(/*! ./sql_hierarchy_accessor */ "../core/build/src/abap/2_statements/expressions/sql_hierarchy_accessor.js"), exports);
5232
+ __exportStar(__webpack_require__(/*! ./sql_hierarchy_aggregate */ "../core/build/src/abap/2_statements/expressions/sql_hierarchy_aggregate.js"), exports);
5191
5233
  __exportStar(__webpack_require__(/*! ./select */ "../core/build/src/abap/2_statements/expressions/select.js"), exports);
5192
5234
  __exportStar(__webpack_require__(/*! ./simple_field_chain */ "../core/build/src/abap/2_statements/expressions/simple_field_chain.js"), exports);
5193
5235
  __exportStar(__webpack_require__(/*! ./simple_field_chain2 */ "../core/build/src/abap/2_statements/expressions/simple_field_chain2.js"), exports);
@@ -5202,6 +5244,9 @@ __exportStar(__webpack_require__(/*! ./source_field_symbol */ "../core/build/src
5202
5244
  __exportStar(__webpack_require__(/*! ./source_field */ "../core/build/src/abap/2_statements/expressions/source_field.js"), exports);
5203
5245
  __exportStar(__webpack_require__(/*! ./source */ "../core/build/src/abap/2_statements/expressions/source.js"), exports);
5204
5246
  __exportStar(__webpack_require__(/*! ./sql_aggregation */ "../core/build/src/abap/2_statements/expressions/sql_aggregation.js"), exports);
5247
+ __exportStar(__webpack_require__(/*! ./sql_association_entry */ "../core/build/src/abap/2_statements/expressions/sql_association_entry.js"), exports);
5248
+ __exportStar(__webpack_require__(/*! ./sql_associations_list */ "../core/build/src/abap/2_statements/expressions/sql_associations_list.js"), exports);
5249
+ __exportStar(__webpack_require__(/*! ./sql_path_segment */ "../core/build/src/abap/2_statements/expressions/sql_path_segment.js"), exports);
5205
5250
  __exportStar(__webpack_require__(/*! ./sql_alias_field */ "../core/build/src/abap/2_statements/expressions/sql_alias_field.js"), exports);
5206
5251
  __exportStar(__webpack_require__(/*! ./sql_arithmetic_operator */ "../core/build/src/abap/2_statements/expressions/sql_arithmetic_operator.js"), exports);
5207
5252
  __exportStar(__webpack_require__(/*! ./sql_arithmetics */ "../core/build/src/abap/2_statements/expressions/sql_arithmetics.js"), exports);
@@ -5240,7 +5285,10 @@ __exportStar(__webpack_require__(/*! ./sql_package_size */ "../core/build/src/ab
5240
5285
  __exportStar(__webpack_require__(/*! ./sql_order_by */ "../core/build/src/abap/2_statements/expressions/sql_order_by.js"), exports);
5241
5286
  __exportStar(__webpack_require__(/*! ./sql_over */ "../core/build/src/abap/2_statements/expressions/sql_over.js"), exports);
5242
5287
  __exportStar(__webpack_require__(/*! ./sql_over */ "../core/build/src/abap/2_statements/expressions/sql_over.js"), exports);
5243
- __exportStar(__webpack_require__(/*! ./sql_path */ "../core/build/src/abap/2_statements/expressions/sql_path.js"), exports);
5288
+ __exportStar(__webpack_require__(/*! ./sql_path_cardinality */ "../core/build/src/abap/2_statements/expressions/sql_path_cardinality.js"), exports);
5289
+ __exportStar(__webpack_require__(/*! ./sql_path_for_column */ "../core/build/src/abap/2_statements/expressions/sql_path_for_column.js"), exports);
5290
+ __exportStar(__webpack_require__(/*! ./sql_path_for_entity */ "../core/build/src/abap/2_statements/expressions/sql_path_for_entity.js"), exports);
5291
+ __exportStar(__webpack_require__(/*! ./sql_path_join_type */ "../core/build/src/abap/2_statements/expressions/sql_path_join_type.js"), exports);
5244
5292
  __exportStar(__webpack_require__(/*! ./sql_privileged_access */ "../core/build/src/abap/2_statements/expressions/sql_privileged_access.js"), exports);
5245
5293
  __exportStar(__webpack_require__(/*! ./sql_set_op */ "../core/build/src/abap/2_statements/expressions/sql_set_op.js"), exports);
5246
5294
  __exportStar(__webpack_require__(/*! ./sql_set_op_group */ "../core/build/src/abap/2_statements/expressions/sql_set_op_group.js"), exports);
@@ -7441,6 +7489,58 @@ exports.SQLAsName = SQLAsName;
7441
7489
 
7442
7490
  /***/ },
7443
7491
 
7492
+ /***/ "../core/build/src/abap/2_statements/expressions/sql_association_entry.js"
7493
+ /*!********************************************************************************!*\
7494
+ !*** ../core/build/src/abap/2_statements/expressions/sql_association_entry.js ***!
7495
+ \********************************************************************************/
7496
+ (__unused_webpack_module, exports, __webpack_require__) {
7497
+
7498
+ "use strict";
7499
+
7500
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
7501
+ exports.SQLAssociationEntry = void 0;
7502
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
7503
+ const sql_as_name_1 = __webpack_require__(/*! ./sql_as_name */ "../core/build/src/abap/2_statements/expressions/sql_as_name.js");
7504
+ const sql_path_for_entity_1 = __webpack_require__(/*! ./sql_path_for_entity */ "../core/build/src/abap/2_statements/expressions/sql_path_for_entity.js");
7505
+ const with_name_1 = __webpack_require__(/*! ./with_name */ "../core/build/src/abap/2_statements/expressions/with_name.js");
7506
+ const database_table_1 = __webpack_require__(/*! ./database_table */ "../core/build/src/abap/2_statements/expressions/database_table.js");
7507
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
7508
+ class SQLAssociationEntry extends combi_1.Expression {
7509
+ getRunnable() {
7510
+ const alias = (0, combi_1.seq)("AS", sql_as_name_1.SQLAsName);
7511
+ const redirected = (0, combi_1.seq)("REDIRECTED TO", with_name_1.WithName, "VIA", database_table_1.DatabaseTable);
7512
+ return (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)(new sql_path_for_entity_1.SQLPathForEntity(), (0, combi_1.optPrio)(alias), (0, combi_1.optPrio)(redirected)));
7513
+ }
7514
+ }
7515
+ exports.SQLAssociationEntry = SQLAssociationEntry;
7516
+ //# sourceMappingURL=sql_association_entry.js.map
7517
+
7518
+ /***/ },
7519
+
7520
+ /***/ "../core/build/src/abap/2_statements/expressions/sql_associations_list.js"
7521
+ /*!********************************************************************************!*\
7522
+ !*** ../core/build/src/abap/2_statements/expressions/sql_associations_list.js ***!
7523
+ \********************************************************************************/
7524
+ (__unused_webpack_module, exports, __webpack_require__) {
7525
+
7526
+ "use strict";
7527
+
7528
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
7529
+ exports.SQLAssociationsList = void 0;
7530
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
7531
+ const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
7532
+ const sql_association_entry_1 = __webpack_require__(/*! ./sql_association_entry */ "../core/build/src/abap/2_statements/expressions/sql_association_entry.js");
7533
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
7534
+ class SQLAssociationsList extends combi_1.Expression {
7535
+ getRunnable() {
7536
+ return (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), new sql_association_entry_1.SQLAssociationEntry(), (0, combi_1.star)((0, combi_1.seq)(",", new sql_association_entry_1.SQLAssociationEntry())), (0, combi_1.tok)(tokens_1.WParenRightW)));
7537
+ }
7538
+ }
7539
+ exports.SQLAssociationsList = SQLAssociationsList;
7540
+ //# sourceMappingURL=sql_associations_list.js.map
7541
+
7542
+ /***/ },
7543
+
7444
7544
  /***/ "../core/build/src/abap/2_statements/expressions/sql_bypassing_buffer.js"
7445
7545
  /*!*******************************************************************************!*\
7446
7546
  !*** ../core/build/src/abap/2_statements/expressions/sql_bypassing_buffer.js ***!
@@ -7483,7 +7583,7 @@ const sql_source_1 = __webpack_require__(/*! ./sql_source */ "../core/build/src/
7483
7583
  class SQLCase extends combi_1.Expression {
7484
7584
  getRunnable() {
7485
7585
  const abap = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), _1.SimpleFieldChain2);
7486
- const field = (0, combi_1.altPrio)(_1.SQLAggregation, SQLCase, _1.SQLFunction, _1.SQLPath, sql_field_name_1.SQLFieldName, constant_1.Constant);
7586
+ const field = (0, combi_1.altPrio)(_1.SQLAggregation, SQLCase, _1.SQLFunction, _1.SQLPathForColumn, sql_field_name_1.SQLFieldName, constant_1.Constant);
7487
7587
  const sub = (0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/", "&&"), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenLeftW)), field, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)));
7488
7588
  const source = (0, combi_1.altPrio)(SQLCase, _1.SQLAggregation, _1.SQLFunction, sql_field_name_1.SQLFieldName, sql_source_1.SQLSource, constant_1.Constant);
7489
7589
  const parenSource = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), source, (0, combi_1.tok)(tokens_1.WParenRightW));
@@ -7515,7 +7615,7 @@ const field_chain_1 = __webpack_require__(/*! ./field_chain */ "../core/build/sr
7515
7615
  class SQLCDSParameters extends combi_1.Expression {
7516
7616
  getRunnable() {
7517
7617
  const param = (0, combi_1.seq)(_1.Field, "=", (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), field_chain_1.FieldChain), _1.Constant));
7518
- return (0, combi_1.seq)("(", param, (0, combi_1.starPrio)((0, combi_1.seq)(",", param)), ")");
7618
+ return (0, combi_1.seq)((0, combi_1.alt)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.tok)(tokens_1.ParenLeftW)), param, (0, combi_1.starPrio)((0, combi_1.seq)(",", param)), (0, combi_1.alt)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.WParenRight)));
7519
7619
  }
7520
7620
  }
7521
7621
  exports.SQLCDSParameters = SQLCDSParameters;
@@ -7579,7 +7679,9 @@ class SQLCompare extends combi_1.Expression {
7579
7679
  const arith = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/"), _1.SQLFieldName)), version_1.Version.OpenABAP);
7580
7680
  const paren = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), _1.Source, (0, combi_1.tok)(tokens_1.WParenRightW));
7581
7681
  const at = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), (0, combi_1.altPrio)(_1.SimpleSource3, paren)), version_1.Version.OpenABAP);
7582
- const rett = (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLCase, _1.SQLAggregation, _1.SQLFunction, _1.ConstantString, (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLPath, _1.SQLFieldName), (0, combi_1.optPrio)(arith)), at), (0, combi_1.altPrio)((0, combi_1.seq)(_1.SQLCompareOperator, (0, combi_1.altPrio)(sub, _1.SQLCase, _1.SQLAggregation, _1.SQLFunction, (0, combi_1.seq)(source, (0, combi_1.optPrio)(arith)))), (0, combi_1.seq)((0, combi_1.optPrio)("NOT"), (0, combi_1.altPrio)(_1.SQLIn, like, between)), nul));
7682
+ const lhs = (0, combi_1.altPrio)(_1.SQLCase, _1.SQLAggregation, _1.SQLFunction, _1.ConstantString, (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLPathForColumn, _1.SQLFieldName), (0, combi_1.optPrio)(arith)), at);
7683
+ const rhs = (0, combi_1.altPrio)((0, combi_1.seq)(_1.SQLCompareOperator, (0, combi_1.altPrio)(sub, _1.SQLCase, _1.SQLAggregation, _1.SQLFunction, (0, combi_1.seq)(source, (0, combi_1.optPrio)(arith)))), (0, combi_1.seq)((0, combi_1.optPrio)("NOT"), (0, combi_1.altPrio)(_1.SQLIn, like, between)), nul);
7684
+ const rett = (0, combi_1.seq)(lhs, rhs);
7583
7685
  const exists = (0, combi_1.seq)("EXISTS", (0, combi_1.altPrio)(subSelect, simpleSubSelect));
7584
7686
  return (0, combi_1.altPrio)(exists, _1.Dynamic, rett);
7585
7687
  }
@@ -7638,6 +7740,54 @@ exports.SQLCond = SQLCond;
7638
7740
 
7639
7741
  /***/ },
7640
7742
 
7743
+ /***/ "../core/build/src/abap/2_statements/expressions/sql_cte_associations.js"
7744
+ /*!*******************************************************************************!*\
7745
+ !*** ../core/build/src/abap/2_statements/expressions/sql_cte_associations.js ***!
7746
+ \*******************************************************************************/
7747
+ (__unused_webpack_module, exports, __webpack_require__) {
7748
+
7749
+ "use strict";
7750
+
7751
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
7752
+ exports.SQLCTEAssociations = void 0;
7753
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
7754
+ const sql_associations_list_1 = __webpack_require__(/*! ./sql_associations_list */ "../core/build/src/abap/2_statements/expressions/sql_associations_list.js");
7755
+ const dynamic_1 = __webpack_require__(/*! ./dynamic */ "../core/build/src/abap/2_statements/expressions/dynamic.js");
7756
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
7757
+ class SQLCTEAssociations extends combi_1.Expression {
7758
+ getRunnable() {
7759
+ return (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)("ASSOCIATIONS", (0, combi_1.altPrio)(new sql_associations_list_1.SQLAssociationsList(), dynamic_1.Dynamic)));
7760
+ }
7761
+ }
7762
+ exports.SQLCTEAssociations = SQLCTEAssociations;
7763
+ //# sourceMappingURL=sql_cte_associations.js.map
7764
+
7765
+ /***/ },
7766
+
7767
+ /***/ "../core/build/src/abap/2_statements/expressions/sql_cte_hierarchy.js"
7768
+ /*!****************************************************************************!*\
7769
+ !*** ../core/build/src/abap/2_statements/expressions/sql_cte_hierarchy.js ***!
7770
+ \****************************************************************************/
7771
+ (__unused_webpack_module, exports, __webpack_require__) {
7772
+
7773
+ "use strict";
7774
+
7775
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
7776
+ exports.SQLCTEHierarchy = void 0;
7777
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
7778
+ const sql_as_name_1 = __webpack_require__(/*! ./sql_as_name */ "../core/build/src/abap/2_statements/expressions/sql_as_name.js");
7779
+ const sql_cte_associations_1 = __webpack_require__(/*! ./sql_cte_associations */ "../core/build/src/abap/2_statements/expressions/sql_cte_associations.js");
7780
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
7781
+ class SQLCTEHierarchy extends combi_1.Expression {
7782
+ getRunnable() {
7783
+ return (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)("HIERARCHY", sql_as_name_1.SQLAsName, (0, combi_1.optPrio)((0, combi_1.seq)("WITH", sql_cte_associations_1.SQLCTEAssociations))));
7784
+ }
7785
+ }
7786
+ exports.SQLCTEHierarchy = SQLCTEHierarchy;
7787
+ //# sourceMappingURL=sql_cte_hierarchy.js.map
7788
+
7789
+ /***/ },
7790
+
7641
7791
  /***/ "../core/build/src/abap/2_statements/expressions/sql_field.js"
7642
7792
  /*!********************************************************************!*\
7643
7793
  !*** ../core/build/src/abap/2_statements/expressions/sql_field.js ***!
@@ -7653,14 +7803,14 @@ const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/exp
7653
7803
  const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
7654
7804
  const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
7655
7805
  const sql_function_1 = __webpack_require__(/*! ./sql_function */ "../core/build/src/abap/2_statements/expressions/sql_function.js");
7656
- const sql_path_1 = __webpack_require__(/*! ./sql_path */ "../core/build/src/abap/2_statements/expressions/sql_path.js");
7806
+ const sql_path_for_column_1 = __webpack_require__(/*! ./sql_path_for_column */ "../core/build/src/abap/2_statements/expressions/sql_path_for_column.js");
7657
7807
  class SQLField extends combi_1.Expression {
7658
7808
  getRunnable() {
7659
7809
  const atParen = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), _1.SimpleFieldChain2, (0, combi_1.tok)(tokens_1.WParenRightW));
7660
7810
  const abap = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), (0, combi_1.altPrio)(_1.SimpleFieldChain2, atParen)), version_1.Version.OpenABAP);
7661
7811
  const as = (0, combi_1.seq)("AS", _1.SQLAsName);
7662
7812
  const parenFieldName = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFieldName, (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.WParenRight)));
7663
- const fieldNoAgg = (0, combi_1.altPrio)(_1.SQLCase, sql_function_1.SQLFunction, sql_path_1.SQLPath, _1.SQLFieldName, abap, _1.Constant, parenFieldName);
7813
+ const fieldNoAgg = (0, combi_1.altPrio)(_1.SQLCase, sql_function_1.SQLFunction, sql_path_for_column_1.SQLPathForColumn, _1.SQLFieldName, abap, _1.Constant, parenFieldName);
7664
7814
  const field = (0, combi_1.altPrio)(_1.SQLAggregation, fieldNoAgg);
7665
7815
  const parenField = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), field, (0, combi_1.tok)(tokens_1.WParenRightW));
7666
7816
  const parenFieldNoAgg = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), fieldNoAgg, (0, combi_1.tok)(tokens_1.WParenRightW));
@@ -7671,7 +7821,6 @@ class SQLField extends combi_1.Expression {
7671
7821
  const arith = (0, combi_1.altPrio)(arithWithAgg, arithNoAgg);
7672
7822
  const arithSequence = (0, combi_1.seq)((0, combi_1.optPrio)("-"), field, (0, combi_1.optPrio)(arith));
7673
7823
  const parenArithSequence = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.optPrio)("-"), arithSequence, (0, combi_1.tok)(tokens_1.WParenRightW));
7674
- // allows (a-b)*(c-d) — paren groups as operands, defined after parenArithSequence
7675
7824
  const subExtWithAgg = (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/", "&&"), (0, combi_1.altPrio)(parenArithSequence, parenField, field)));
7676
7825
  const subExtNoAgg = (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/", "&&"), (0, combi_1.altPrio)(parenArithSequence, parenFieldNoAgg, fieldNoAgg)));
7677
7826
  const arithExt = (0, combi_1.altPrio)((0, combi_1.ver)(version_1.Version.v754, subExtWithAgg), (0, combi_1.ver)(version_1.Version.v740sp05, subExtNoAgg));
@@ -7751,7 +7900,7 @@ exports.SQLFieldListLoop = void 0;
7751
7900
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
7752
7901
  const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
7753
7902
  const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
7754
- const sql_path_1 = __webpack_require__(/*! ./sql_path */ "../core/build/src/abap/2_statements/expressions/sql_path.js");
7903
+ const sql_path_for_column_1 = __webpack_require__(/*! ./sql_path_for_column */ "../core/build/src/abap/2_statements/expressions/sql_path_for_column.js");
7755
7904
  const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
7756
7905
  // loop must include one field from the database table
7757
7906
  class SQLFieldListLoop extends combi_1.Expression {
@@ -7760,7 +7909,7 @@ class SQLFieldListLoop extends combi_1.Expression {
7760
7909
  const as = (0, combi_1.seq)("AS", _1.SQLAsName);
7761
7910
  const someField = (0, combi_1.seq)(_1.SQLField, comma);
7762
7911
  const abap = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), _1.SimpleFieldChain2), version_1.Version.OpenABAP);
7763
- const fieldList = (0, combi_1.seq)((0, combi_1.star)(someField), (0, combi_1.alt)(_1.SQLFieldName, abap, sql_path_1.SQLPath, _1.Constant), (0, combi_1.optPrio)(as), comma, (0, combi_1.star)(someField));
7912
+ const fieldList = (0, combi_1.seq)((0, combi_1.star)(someField), (0, combi_1.alt)(_1.SQLFieldName, abap, sql_path_for_column_1.SQLPathForColumn, _1.Constant), (0, combi_1.optPrio)(as), comma, (0, combi_1.star)(someField));
7764
7913
  const fields = (0, combi_1.alt)("*", _1.Dynamic, fieldList);
7765
7914
  return fields;
7766
7915
  }
@@ -7783,14 +7932,14 @@ exports.SQLFieldListLoopGreedy = void 0;
7783
7932
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
7784
7933
  const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
7785
7934
  const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
7786
- const sql_path_1 = __webpack_require__(/*! ./sql_path */ "../core/build/src/abap/2_statements/expressions/sql_path.js");
7935
+ const sql_path_for_column_1 = __webpack_require__(/*! ./sql_path_for_column */ "../core/build/src/abap/2_statements/expressions/sql_path_for_column.js");
7787
7936
  const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
7788
7937
  class SQLFieldListLoopGreedy extends combi_1.Expression {
7789
7938
  getRunnable() {
7790
7939
  const comma = (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v740sp05, ",", version_1.Version.OpenABAP));
7791
7940
  const as = (0, combi_1.seq)("AS", _1.SQLAsName);
7792
7941
  const abap = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), _1.SimpleFieldChain2), version_1.Version.OpenABAP);
7793
- const entry = (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLField, abap, sql_path_1.SQLPath, _1.SQLFieldName, _1.Constant), (0, combi_1.optPrio)(as), comma);
7942
+ const entry = (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLField, abap, sql_path_for_column_1.SQLPathForColumn, _1.SQLFieldName, _1.Constant), (0, combi_1.optPrio)(as), comma);
7794
7943
  const fieldList = (0, combi_1.plusPrio)(entry);
7795
7944
  return (0, combi_1.altPrio)("*", _1.Dynamic, fieldList);
7796
7945
  }
@@ -7939,13 +8088,17 @@ const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/exp
7939
8088
  const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
7940
8089
  const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
7941
8090
  const with_name_1 = __webpack_require__(/*! ./with_name */ "../core/build/src/abap/2_statements/expressions/with_name.js");
8091
+ const sql_path_for_entity_1 = __webpack_require__(/*! ./sql_path_for_entity */ "../core/build/src/abap/2_statements/expressions/sql_path_for_entity.js");
8092
+ const sql_hierarchy_source_1 = __webpack_require__(/*! ./sql_hierarchy_source */ "../core/build/src/abap/2_statements/expressions/sql_hierarchy_source.js");
8093
+ const sql_hierarchy_accessor_1 = __webpack_require__(/*! ./sql_hierarchy_accessor */ "../core/build/src/abap/2_statements/expressions/sql_hierarchy_accessor.js");
8094
+ const sql_hierarchy_aggregate_1 = __webpack_require__(/*! ./sql_hierarchy_aggregate */ "../core/build/src/abap/2_statements/expressions/sql_hierarchy_aggregate.js");
7942
8095
  class SQLFromSource extends combi_1.Expression {
7943
8096
  getRunnable() {
7944
8097
  // https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abennews-752-open_sql.htm#!ABAP_MODIFICATION_1@1@
7945
8098
  const tab = (0, combi_1.ver)(version_1.Version.v752, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), _1.FieldChain), version_1.Version.OpenABAP);
7946
8099
  const aas = (0, combi_1.seq)("AS", _1.SQLAsName);
7947
8100
  const privileged = (0, combi_1.ver)(version_1.Version.v752, (0, combi_1.seq)("WITH", _1.SQLPrivilegedAccess));
7948
- return (0, combi_1.seq)((0, combi_1.altPrio)(with_name_1.WithName, (0, combi_1.seq)(_1.DatabaseTable, (0, combi_1.optPrio)(_1.SQLCDSParameters)), tab), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(aas));
8101
+ return (0, combi_1.seq)((0, combi_1.altPrio)(new sql_hierarchy_aggregate_1.SQLHierarchyAggregate(), new sql_hierarchy_accessor_1.SQLHierarchyAccessor(), new sql_hierarchy_source_1.SQLHierarchySource(), (0, combi_1.seq)(with_name_1.WithName, (0, combi_1.optPrio)(new sql_path_for_entity_1.SQLPathForEntity())), (0, combi_1.seq)(_1.DatabaseTable, (0, combi_1.optPrio)(_1.SQLCDSParameters), (0, combi_1.optPrio)(new sql_path_for_entity_1.SQLPathForEntity())), tab), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(aas));
7949
8102
  }
7950
8103
  }
7951
8104
  exports.SQLFromSource = SQLFromSource;
@@ -8099,6 +8252,112 @@ exports.SQLHaving = SQLHaving;
8099
8252
 
8100
8253
  /***/ },
8101
8254
 
8255
+ /***/ "../core/build/src/abap/2_statements/expressions/sql_hierarchy_accessor.js"
8256
+ /*!*********************************************************************************!*\
8257
+ !*** ../core/build/src/abap/2_statements/expressions/sql_hierarchy_accessor.js ***!
8258
+ \*********************************************************************************/
8259
+ (__unused_webpack_module, exports, __webpack_require__) {
8260
+
8261
+ "use strict";
8262
+
8263
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
8264
+ exports.SQLHierarchyAccessor = void 0;
8265
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
8266
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
8267
+ const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
8268
+ const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
8269
+ class SQLHierarchyAccessor extends combi_1.Expression {
8270
+ getRunnable() {
8271
+ const distanceTo = (0, combi_1.seq)("TO", _1.SQLSource);
8272
+ const distanceFrom = (0, combi_1.seq)("FROM", _1.SQLSource, (0, combi_1.optPrio)(distanceTo));
8273
+ const distance = (0, combi_1.seq)("DISTANCE", (0, combi_1.altPrio)(distanceFrom, distanceTo));
8274
+ const accessor = (0, combi_1.seq)("SOURCE", _1.DatabaseTable, "START", "WHERE", _1.SQLCond, (0, combi_1.optPrio)(distance));
8275
+ const name = (0, combi_1.altPrio)("HIERARCHY_DESCENDANTS", "HIERARCHY_ANCESTORS", "HIERARCHY_SIBLINGS");
8276
+ return (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(name, (0, combi_1.tok)(tokens_1.ParenLeftW), accessor, (0, combi_1.tok)(tokens_1.WParenRightW)));
8277
+ }
8278
+ }
8279
+ exports.SQLHierarchyAccessor = SQLHierarchyAccessor;
8280
+ //# sourceMappingURL=sql_hierarchy_accessor.js.map
8281
+
8282
+ /***/ },
8283
+
8284
+ /***/ "../core/build/src/abap/2_statements/expressions/sql_hierarchy_aggregate.js"
8285
+ /*!**********************************************************************************!*\
8286
+ !*** ../core/build/src/abap/2_statements/expressions/sql_hierarchy_aggregate.js ***!
8287
+ \**********************************************************************************/
8288
+ (__unused_webpack_module, exports, __webpack_require__) {
8289
+
8290
+ "use strict";
8291
+
8292
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
8293
+ exports.SQLHierarchyAggregate = void 0;
8294
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
8295
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
8296
+ const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
8297
+ const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
8298
+ class SQLHierarchyAggregate extends combi_1.Expression {
8299
+ getRunnable() {
8300
+ const startWhere = (0, combi_1.seq)("START", "WHERE", _1.SQLCond);
8301
+ const join = (0, combi_1.seq)("JOIN", _1.DatabaseTable, "ON", _1.SQLCond);
8302
+ const measureItem = (0, combi_1.seq)(_1.SQLAggregation, "AS", _1.SQLAsName);
8303
+ const measures = (0, combi_1.seq)("MEASURES", measureItem, (0, combi_1.star)((0, combi_1.seq)(",", measureItem)));
8304
+ const where = (0, combi_1.seq)("WHERE", _1.SQLCond);
8305
+ const withEntry = (0, combi_1.altPrio)("SUBTOTAL", "BALANCE", (0, combi_1.seq)("NOT", "MATCHED"), "TOTAL");
8306
+ const aggregate = (0, combi_1.seq)("SOURCE", _1.DatabaseTable, (0, combi_1.optPrio)(startWhere), (0, combi_1.optPrio)(join), measures, (0, combi_1.optPrio)(where), (0, combi_1.optPrio)((0, combi_1.seq)("WITH", withEntry, (0, combi_1.star)((0, combi_1.seq)("WITH", withEntry)))));
8307
+ const name = (0, combi_1.altPrio)("HIERARCHY_DESCENDANTS_AGGREGATE", "HIERARCHY_ANCESTORS_AGGREGATE");
8308
+ return (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(name, (0, combi_1.tok)(tokens_1.ParenLeftW), aggregate, (0, combi_1.tok)(tokens_1.WParenRightW)));
8309
+ }
8310
+ }
8311
+ exports.SQLHierarchyAggregate = SQLHierarchyAggregate;
8312
+ //# sourceMappingURL=sql_hierarchy_aggregate.js.map
8313
+
8314
+ /***/ },
8315
+
8316
+ /***/ "../core/build/src/abap/2_statements/expressions/sql_hierarchy_source.js"
8317
+ /*!*******************************************************************************!*\
8318
+ !*** ../core/build/src/abap/2_statements/expressions/sql_hierarchy_source.js ***!
8319
+ \*******************************************************************************/
8320
+ (__unused_webpack_module, exports, __webpack_require__) {
8321
+
8322
+ "use strict";
8323
+
8324
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
8325
+ exports.SQLHierarchySource = void 0;
8326
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
8327
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
8328
+ const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
8329
+ const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
8330
+ class SQLHierarchySource extends combi_1.Expression {
8331
+ getRunnable() {
8332
+ const orderDir = (0, combi_1.optPrio)((0, combi_1.altPrio)("ASCENDING", "DESCENDING"));
8333
+ const orderFieldName = (0, combi_1.regex)(/^(?!(?:DEPTH|MULTIPLE|ORPHAN|CACHE|CYCLE|LOAD|GENERATE|RETAIN|DEPTH)$)(\/\w+\/)?(\*?\w+~(\/\w+\/)?(\w+|\*)|\w+)$/i);
8334
+ const orderField = (0, combi_1.seq)(orderFieldName, orderDir, (0, combi_1.optPrio)(","));
8335
+ const siblingsOrderBy = (0, combi_1.seq)("SIBLINGS", "ORDER", "BY", (0, combi_1.altPrio)("PRIMARY KEY", _1.Dynamic, (0, combi_1.seq)(orderField, (0, combi_1.starPrio)(orderField))));
8336
+ const cache = (0, combi_1.seq)("CACHE", (0, combi_1.altPrio)("FORCE", "OFF", "ON"));
8337
+ const retainNulls = (0, combi_1.seq)("RETAIN", "NULLS", _1.SQLSource);
8338
+ const cycle = (0, combi_1.seq)("CYCLE", (0, combi_1.altPrio)("BREAKUP", "ERROR"));
8339
+ const multipleParents = (0, combi_1.seq)("MULTIPLE", "PARENTS", (0, combi_1.altPrio)((0, combi_1.seq)("NOT", "ALLOWED"), (0, combi_1.seq)("LEAVES", "ONLY"), "ALLOWED"));
8340
+ const orphan = (0, combi_1.seq)("ORPHAN", (0, combi_1.altPrio)("IGNORE", "ERROR", "ROOT"));
8341
+ const depth = (0, combi_1.seq)("DEPTH", _1.SQLSource);
8342
+ const load = (0, combi_1.seq)("LOAD", (0, combi_1.altPrio)("INCREMENTAL", "BULK", _1.SQLSource));
8343
+ const generateSpantree = (0, combi_1.seq)("GENERATE", "SPANTREE");
8344
+ const startWhere = (0, combi_1.seq)("START", "WHERE", _1.SQLCond);
8345
+ const period = (0, combi_1.seq)("PERIOD", "FROM", _1.SQLFieldName, "TO", _1.SQLFieldName);
8346
+ const valid = (0, combi_1.seq)("VALID", "FROM", _1.SQLSource, "TO", _1.SQLSource);
8347
+ const association = (0, combi_1.seq)("CHILD", "TO", "PARENT", "ASSOCIATION", _1.SQLFieldName);
8348
+ const sourceTable = (0, combi_1.seq)((0, combi_1.altPrio)(_1.WithName, _1.DatabaseTable), (0, combi_1.optPrio)((0, combi_1.seq)("AS", _1.SQLAsName)));
8349
+ const levelColumn = _1.SQLFieldName;
8350
+ const levels = (0, combi_1.seq)("LEVELS", (0, combi_1.tok)(tokens_1.WParenLeftW), levelColumn, (0, combi_1.star)((0, combi_1.seq)(",", levelColumn)), (0, combi_1.tok)(tokens_1.WParenRightW));
8351
+ const leveledGenerator = (0, combi_1.seq)(levels, (0, combi_1.optPrio)(siblingsOrderBy), (0, combi_1.optPrio)(cache), (0, combi_1.optPrio)(retainNulls));
8352
+ const generator = (0, combi_1.seq)(association, (0, combi_1.optPrio)((0, combi_1.seq)(period, valid)), startWhere, (0, combi_1.optPrio)(siblingsOrderBy), (0, combi_1.optPrio)(depth), (0, combi_1.optPrio)(multipleParents), (0, combi_1.optPrio)(orphan), (0, combi_1.optPrio)(cache), (0, combi_1.optPrio)(cycle), (0, combi_1.optPrio)(load), (0, combi_1.optPrio)(generateSpantree));
8353
+ return (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)("HIERARCHY", (0, combi_1.tok)(tokens_1.ParenLeftW), "SOURCE", sourceTable, (0, combi_1.altPrio)(leveledGenerator, generator), (0, combi_1.tok)(tokens_1.WParenRightW)));
8354
+ }
8355
+ }
8356
+ exports.SQLHierarchySource = SQLHierarchySource;
8357
+ //# sourceMappingURL=sql_hierarchy_source.js.map
8358
+
8359
+ /***/ },
8360
+
8102
8361
  /***/ "../core/build/src/abap/2_statements/expressions/sql_hints.js"
8103
8362
  /*!********************************************************************!*\
8104
8363
  !*** ../core/build/src/abap/2_statements/expressions/sql_hints.js ***!
@@ -8394,30 +8653,136 @@ exports.SQLPackageSize = SQLPackageSize;
8394
8653
 
8395
8654
  /***/ },
8396
8655
 
8397
- /***/ "../core/build/src/abap/2_statements/expressions/sql_path.js"
8398
- /*!*******************************************************************!*\
8399
- !*** ../core/build/src/abap/2_statements/expressions/sql_path.js ***!
8400
- \*******************************************************************/
8656
+ /***/ "../core/build/src/abap/2_statements/expressions/sql_path_cardinality.js"
8657
+ /*!*******************************************************************************!*\
8658
+ !*** ../core/build/src/abap/2_statements/expressions/sql_path_cardinality.js ***!
8659
+ \*******************************************************************************/
8660
+ (__unused_webpack_module, exports, __webpack_require__) {
8661
+
8662
+ "use strict";
8663
+
8664
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
8665
+ exports.SQLPathCardinality = void 0;
8666
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
8667
+ const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
8668
+ class SQLPathCardinality extends combi_1.Expression {
8669
+ getRunnable() {
8670
+ const exact = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.regex)(/^\d+$/), (0, combi_1.tok)(tokens_1.WParenRightW));
8671
+ const many = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), "*", (0, combi_1.tok)(tokens_1.WParenRightW));
8672
+ return (0, combi_1.altPrio)(exact, many);
8673
+ }
8674
+ }
8675
+ exports.SQLPathCardinality = SQLPathCardinality;
8676
+ //# sourceMappingURL=sql_path_cardinality.js.map
8677
+
8678
+ /***/ },
8679
+
8680
+ /***/ "../core/build/src/abap/2_statements/expressions/sql_path_for_column.js"
8681
+ /*!******************************************************************************!*\
8682
+ !*** ../core/build/src/abap/2_statements/expressions/sql_path_for_column.js ***!
8683
+ \******************************************************************************/
8401
8684
  (__unused_webpack_module, exports, __webpack_require__) {
8402
8685
 
8403
8686
  "use strict";
8404
8687
 
8405
8688
  Object.defineProperty(exports, "__esModule", ({ value: true }));
8406
- exports.SQLPath = void 0;
8689
+ exports.SQLPathForColumn = void 0;
8407
8690
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
8408
8691
  const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
8409
- const association_name_1 = __webpack_require__(/*! ./association_name */ "../core/build/src/abap/2_statements/expressions/association_name.js");
8692
+ const sql_path_segment_1 = __webpack_require__(/*! ./sql_path_segment */ "../core/build/src/abap/2_statements/expressions/sql_path_segment.js");
8693
+ const field_1 = __webpack_require__(/*! ./field */ "../core/build/src/abap/2_statements/expressions/field.js");
8694
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
8695
+ class SQLPathForColumn extends combi_1.Expression {
8696
+ getRunnable() {
8697
+ const tablePrefix = (0, combi_1.regex)(/^(\/\w+\/)?\w+~$/);
8698
+ const withPrefix = (0, combi_1.seq)(tablePrefix, (0, combi_1.plus)(new sql_path_segment_1.SQLPathSegment(true)), (0, combi_1.tok)(tokens_1.Dash), field_1.Field);
8699
+ const standalone = (0, combi_1.seq)((0, combi_1.plus)(new sql_path_segment_1.SQLPathSegment()), (0, combi_1.tok)(tokens_1.Dash), field_1.Field);
8700
+ return (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.altPrio)(withPrefix, standalone));
8701
+ }
8702
+ }
8703
+ exports.SQLPathForColumn = SQLPathForColumn;
8704
+ //# sourceMappingURL=sql_path_for_column.js.map
8705
+
8706
+ /***/ },
8707
+
8708
+ /***/ "../core/build/src/abap/2_statements/expressions/sql_path_for_entity.js"
8709
+ /*!******************************************************************************!*\
8710
+ !*** ../core/build/src/abap/2_statements/expressions/sql_path_for_entity.js ***!
8711
+ \******************************************************************************/
8712
+ (__unused_webpack_module, exports, __webpack_require__) {
8713
+
8714
+ "use strict";
8715
+
8716
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
8717
+ exports.SQLPathForEntity = void 0;
8718
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
8719
+ const sql_path_segment_1 = __webpack_require__(/*! ./sql_path_segment */ "../core/build/src/abap/2_statements/expressions/sql_path_segment.js");
8720
+ const database_table_1 = __webpack_require__(/*! ./database_table */ "../core/build/src/abap/2_statements/expressions/database_table.js");
8721
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
8722
+ class SQLPathForEntity extends combi_1.Expression {
8723
+ getRunnable() {
8724
+ return (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.optPrio)(database_table_1.DatabaseTable), (0, combi_1.plus)(new sql_path_segment_1.SQLPathSegment())));
8725
+ }
8726
+ }
8727
+ exports.SQLPathForEntity = SQLPathForEntity;
8728
+ //# sourceMappingURL=sql_path_for_entity.js.map
8729
+
8730
+ /***/ },
8731
+
8732
+ /***/ "../core/build/src/abap/2_statements/expressions/sql_path_join_type.js"
8733
+ /*!*****************************************************************************!*\
8734
+ !*** ../core/build/src/abap/2_statements/expressions/sql_path_join_type.js ***!
8735
+ \*****************************************************************************/
8736
+ (__unused_webpack_module, exports, __webpack_require__) {
8737
+
8738
+ "use strict";
8739
+
8740
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
8741
+ exports.SQLPathJoinType = void 0;
8742
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
8743
+ class SQLPathJoinType extends combi_1.Expression {
8744
+ getRunnable() {
8745
+ return (0, combi_1.altPrio)("EXACT ONE TO ONE", "ONE TO ONE", "MANY TO MANY", "MANY TO ONE", "ONE TO MANY", "LEFT OUTER", "RIGHT OUTER", "INNER");
8746
+ }
8747
+ }
8748
+ exports.SQLPathJoinType = SQLPathJoinType;
8749
+ //# sourceMappingURL=sql_path_join_type.js.map
8750
+
8751
+ /***/ },
8752
+
8753
+ /***/ "../core/build/src/abap/2_statements/expressions/sql_path_segment.js"
8754
+ /*!***************************************************************************!*\
8755
+ !*** ../core/build/src/abap/2_statements/expressions/sql_path_segment.js ***!
8756
+ \***************************************************************************/
8757
+ (__unused_webpack_module, exports, __webpack_require__) {
8758
+
8759
+ "use strict";
8760
+
8761
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
8762
+ exports.SQLPathSegment = void 0;
8763
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
8764
+ const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
8765
+ const sql_cds_parameters_1 = __webpack_require__(/*! ./sql_cds_parameters */ "../core/build/src/abap/2_statements/expressions/sql_cds_parameters.js");
8410
8766
  const sql_cond_1 = __webpack_require__(/*! ./sql_cond */ "../core/build/src/abap/2_statements/expressions/sql_cond.js");
8411
- class SQLPath extends combi_1.Expression {
8767
+ const sql_path_cardinality_1 = __webpack_require__(/*! ./sql_path_cardinality */ "../core/build/src/abap/2_statements/expressions/sql_path_cardinality.js");
8768
+ const sql_path_join_type_1 = __webpack_require__(/*! ./sql_path_join_type */ "../core/build/src/abap/2_statements/expressions/sql_path_join_type.js");
8769
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
8770
+ class SQLPathSegment extends combi_1.Expression {
8771
+ constructor(nws = false) {
8772
+ super();
8773
+ this.nws = nws;
8774
+ }
8412
8775
  getRunnable() {
8413
- // todo, only from version?
8414
- const condition = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.BracketLeftW), "ONE TO ONE WHERE", sql_cond_1.SQLCond, (0, combi_1.tok)(tokens_1.WBracketRight));
8415
- const ret = (0, combi_1.seq)(association_name_1.AssociationName, (0, combi_1.optPrio)(condition), (0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/\w+/));
8416
- return ret;
8776
+ const filter = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.BracketLeftW), (0, combi_1.optPrio)(sql_path_cardinality_1.SQLPathCardinality), (0, combi_1.optPrio)(sql_path_join_type_1.SQLPathJoinType), (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.optPrio)("WHERE"), sql_cond_1.SQLCond)), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WBracketRightW), (0, combi_1.tok)(tokens_1.WBracketRight))));
8777
+ const params = (0, combi_1.ver)(version_1.Version.v751, sql_cds_parameters_1.SQLCDSParameters);
8778
+ const name = this.nws
8779
+ ? (0, combi_1.tok)(tokens_1.AssociationName)
8780
+ : (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.AssociationName), (0, combi_1.regex)(/^\\[\w]+$/));
8781
+ return (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)(name, (0, combi_1.optPrio)((0, combi_1.altPrio)((0, combi_1.seq)(params, (0, combi_1.optPrio)(filter)), filter))));
8417
8782
  }
8418
8783
  }
8419
- exports.SQLPath = SQLPath;
8420
- //# sourceMappingURL=sql_path.js.map
8784
+ exports.SQLPathSegment = SQLPathSegment;
8785
+ //# sourceMappingURL=sql_path_segment.js.map
8421
8786
 
8422
8787
  /***/ },
8423
8788
 
@@ -11174,7 +11539,7 @@ class CommitEntities {
11174
11539
  const reported = (0, combi_1.seq)("REPORTED", expressions_1.Target);
11175
11540
  const responses = (0, combi_1.seq)("RESPONSES", failed, reported);
11176
11541
  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))));
11177
- return (0, combi_1.ver)(version_1.Version.v754, s);
11542
+ return (0, combi_1.ver)(version_1.Version.v754, s, version_1.Version.OpenABAP);
11178
11543
  }
11179
11544
  }
11180
11545
  exports.CommitEntities = CommitEntities;
@@ -11514,7 +11879,7 @@ class CreateData {
11514
11879
  const initial = (0, combi_1.seq)("INITIAL SIZE", expressions_1.Source);
11515
11880
  const decimals = (0, combi_1.seq)("DECIMALS", expressions_1.Source);
11516
11881
  const uniq = (0, combi_1.alt)("UNIQUE", "NON-UNIQUE");
11517
- const emptyKey = (0, combi_1.ver)(version_1.Version.v740sp02, "EMPTY KEY");
11882
+ const emptyKey = (0, combi_1.ver)(version_1.Version.v740sp02, "EMPTY KEY", version_1.Version.OpenABAP);
11518
11883
  const def = (0, combi_1.seq)((0, combi_1.opt)(uniq), (0, combi_1.alt)("DEFAULT KEY", emptyKey));
11519
11884
  const kdef = (0, combi_1.seq)((0, combi_1.opt)(uniq), "KEY", (0, combi_1.alt)((0, combi_1.plus)(expressions_1.Field), expressions_1.Dynamic));
11520
11885
  const key = (0, combi_1.seq)("WITH", (0, combi_1.alt)(def, kdef));
@@ -12273,7 +12638,7 @@ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_st
12273
12638
  const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
12274
12639
  class EndTestSeam {
12275
12640
  getMatcher() {
12276
- return (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.str)("END-TEST-SEAM"));
12641
+ return (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.str)("END-TEST-SEAM"), version_1.Version.OpenABAP);
12277
12642
  }
12278
12643
  }
12279
12644
  exports.EndTestSeam = EndTestSeam;
@@ -13586,7 +13951,7 @@ class GetPermissions {
13586
13951
  const type = (0, combi_1.altPrio)("GLOBAL AUTHORIZATION", "INSTANCE");
13587
13952
  const from = (0, combi_1.seq)("FROM", expressions_1.Source);
13588
13953
  const s = (0, combi_1.seq)("GET PERMISSIONS ONLY", type, "ENTITY", expressions_1.SimpleName, (0, combi_1.optPrio)(from), "REQUEST", expressions_1.Source, "RESULT", expressions_1.Target, "FAILED", expressions_1.Target, "REPORTED", expressions_1.Target);
13589
- return (0, combi_1.ver)(version_1.Version.v754, s);
13954
+ return (0, combi_1.ver)(version_1.Version.v754, s, version_1.Version.OpenABAP);
13590
13955
  }
13591
13956
  }
13592
13957
  exports.GetPermissions = GetPermissions;
@@ -14925,7 +15290,7 @@ class ModifyEntities {
14925
15290
  getMatcher() {
14926
15291
  const withh = (0, combi_1.seq)("WITH", expressions_1.Source);
14927
15292
  const fieldsWith = (0, combi_1.seq)("FIELDS (", (0, combi_1.plus)(expressions_1.SimpleName), ")", withh);
14928
- const by = (0, combi_1.seq)("BY", expressions_1.AssociationName);
15293
+ const by = (0, combi_1.seq)("BY", expressions_1.EMLEntityPath);
14929
15294
  const relating = (0, combi_1.seq)("RELATING TO", expressions_1.NamespaceSimpleName, "BY", expressions_1.NamespaceSimpleName);
14930
15295
  const execute = (0, combi_1.seq)("EXECUTE", expressions_1.NamespaceSimpleName, "FROM", expressions_1.Source);
14931
15296
  const create = (0, combi_1.seq)("CREATE", (0, combi_1.opt)(by), "FROM", expressions_1.Source, (0, combi_1.opt)(relating));
@@ -14940,9 +15305,9 @@ class ModifyEntities {
14940
15305
  const reported = (0, combi_1.seq)("REPORTED", expressions_1.Target);
14941
15306
  const end = (0, combi_1.optPrio)((0, combi_1.per)(failed, result, mapped, reported));
14942
15307
  const entities = (0, combi_1.seq)((0, combi_1.optPrio)("AUGMENTING"), "ENTITIES OF", expressions_1.NamespaceSimpleName, (0, combi_1.opt)("IN LOCAL MODE"), (0, combi_1.plusPrio)((0, combi_1.seq)("ENTITY", expressions_1.NamespaceSimpleName, (0, combi_1.plus)(operation))));
14943
- const create2 = (0, combi_1.seq)("CREATE", fieldsWith, (0, combi_1.opt)((0, combi_1.seq)("CREATE BY", expressions_1.AssociationName, fieldsWith)));
14944
- const create3 = (0, combi_1.seq)("CREATE BY", expressions_1.AssociationName, fieldsWith);
14945
- const create4 = (0, combi_1.seq)("CREATE FROM", expressions_1.Source, (0, combi_1.plus)((0, combi_1.seq)("CREATE BY", expressions_1.AssociationName, "FROM", expressions_1.Source)));
15308
+ const create2 = (0, combi_1.seq)("CREATE", fieldsWith, (0, combi_1.opt)((0, combi_1.seq)("CREATE BY", expressions_1.EMLEntityPath, fieldsWith)));
15309
+ const create3 = (0, combi_1.seq)("CREATE BY", expressions_1.EMLEntityPath, fieldsWith);
15310
+ const create4 = (0, combi_1.seq)("CREATE FROM", expressions_1.Source, (0, combi_1.plus)((0, combi_1.seq)("CREATE BY", expressions_1.EMLEntityPath, "FROM", expressions_1.Source)));
14946
15311
  const entity = (0, combi_1.seq)("ENTITY", (0, combi_1.opt)("IN LOCAL MODE"), (0, combi_1.alt)(expressions_1.NamespaceSimpleName, expressions_1.EntityAssociation), (0, combi_1.alt)(execute, create, updateFields, deleteFrom, updateSetFields, updateFrom, create2, create3, create4));
14947
15312
  return (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)("MODIFY", (0, combi_1.alt)(entities, entity), end), version_1.Version.OpenABAP);
14948
15313
  }
@@ -15921,11 +16286,11 @@ class ReadEntities {
15921
16286
  const result = (0, combi_1.seq)("RESULT", expressions_1.Target);
15922
16287
  const failed = (0, combi_1.seq)("FAILED", expressions_1.Target);
15923
16288
  const reported = (0, combi_1.seq)("REPORTED", expressions_1.Target);
15924
- const foo = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.seq)("BY", expressions_1.AssociationName)), (0, combi_1.alt)(fields, from, all), (0, combi_1.optPrio)(result));
16289
+ const foo = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.seq)("BY", expressions_1.EMLEntityPath)), (0, combi_1.alt)(fields, from, all), (0, combi_1.optPrio)(result));
15925
16290
  const entity = (0, combi_1.seq)("ENTITY", expressions_1.NamespaceSimpleName, (0, combi_1.plus)(foo));
15926
16291
  const s = (0, combi_1.seq)("ENTITIES OF", expressions_1.NamespaceSimpleName, (0, combi_1.opt)("IN LOCAL MODE"), (0, combi_1.plus)(entity), (0, combi_1.optPrio)((0, combi_1.seq)("LINK", expressions_1.Target)), (0, combi_1.optPrio)((0, combi_1.per)(failed, reported)));
15927
- const byall = (0, combi_1.seq)("BY", expressions_1.AssociationName, all);
15928
- const by = (0, combi_1.seq)("BY", expressions_1.AssociationName, fields);
16292
+ const byall = (0, combi_1.seq)("BY", expressions_1.EMLEntityPath, all);
16293
+ const by = (0, combi_1.seq)("BY", expressions_1.EMLEntityPath, fields);
15929
16294
  const sub = (0, combi_1.seq)((0, combi_1.alt)(all, fields, from, by, byall), result);
15930
16295
  const single = (0, combi_1.seq)("ENTITY", (0, combi_1.opt)("IN LOCAL MODE"), (0, combi_1.alt)(expressions_1.NamespaceSimpleName, expressions_1.EntityAssociation), (0, combi_1.plus)(sub), (0, combi_1.optPrio)(failed), (0, combi_1.optPrio)(reported));
15931
16296
  return (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)("READ", (0, combi_1.alt)(s, single)), version_1.Version.OpenABAP);
@@ -17683,7 +18048,7 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/s
17683
18048
  const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
17684
18049
  class TestSeam {
17685
18050
  getMatcher() {
17686
- return (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)("TEST-SEAM", expressions_1.TestSeamName));
18051
+ return (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)("TEST-SEAM", expressions_1.TestSeamName), version_1.Version.OpenABAP);
17687
18052
  }
17688
18053
  }
17689
18054
  exports.TestSeam = TestSeam;
@@ -18403,7 +18768,8 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/s
18403
18768
  const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
18404
18769
  class With {
18405
18770
  getMatcher() {
18406
- const cte = (0, combi_1.seq)(expressions_1.WithName, "AS", (0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.SelectCTE, (0, combi_1.tok)(tokens_1.WParenRightW));
18771
+ const exposing = (0, combi_1.optPrio)((0, combi_1.seq)("WITH", (0, combi_1.altPrio)(new expressions_1.SQLCTEHierarchy(), expressions_1.SQLCTEAssociations)));
18772
+ const cte = (0, combi_1.seq)(expressions_1.WithName, "AS", (0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.SelectCTE, (0, combi_1.tok)(tokens_1.WParenRightW), exposing);
18407
18773
  return (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)("WITH", cte, (0, combi_1.star)((0, combi_1.seq)(",", cte)), expressions_1.Select));
18408
18774
  }
18409
18775
  }
@@ -40397,7 +40763,9 @@ class MoveCorresponding {
40397
40763
  }
40398
40764
  const sourceType = source_1.Source.runSyntax(s, input);
40399
40765
  const targetType = target_1.Target.runSyntax(t, input);
40400
- if (input.scope.getVersion() < version_1.Version.v740sp05 && input.scope.getVersion() !== version_1.Version.Cloud) {
40766
+ if (input.scope.getVersion() < version_1.Version.v740sp05
40767
+ && input.scope.getVersion() !== version_1.Version.Cloud
40768
+ && input.scope.getVersion() !== version_1.Version.OpenABAP) {
40401
40769
  if (sourceType instanceof basic_1.TableType && sourceType.isWithHeader() === false) {
40402
40770
  const message = "MOVE-CORRESPONDING with tables possible from v740sp05";
40403
40771
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
@@ -66163,7 +66531,7 @@ class Registry {
66163
66531
  }
66164
66532
  static abaplintVersion() {
66165
66533
  // magic, see build script "version.js"
66166
- return "2.119.36";
66534
+ return "2.119.37";
66167
66535
  }
66168
66536
  getDDICReferences() {
66169
66537
  return this.ddicReferences;
@@ -71805,6 +72173,8 @@ class DangerousStatementConf extends _basic_rule_config_1.BasicRuleConfig {
71805
72173
  this.exportDynpro = true;
71806
72174
  /** Finds instances of dynamic SQL: SELECT, UPDATE, DELETE, INSERT, MODIFY */
71807
72175
  this.dynamicSQL = true;
72176
+ /** Ignore dynamic SQL in IF_RAP_QUERY_PROVIDER~SELECT implementations */
72177
+ this.ignoreRAPQueryProvider = true;
71808
72178
  }
71809
72179
  }
71810
72180
  exports.DangerousStatementConf = DangerousStatementConf;
@@ -71833,9 +72203,19 @@ dynamic SQL can potentially create SQL injection problems`,
71833
72203
  this.conf = conf;
71834
72204
  }
71835
72205
  runParsed(file) {
72206
+ var _a;
71836
72207
  const issues = [];
72208
+ let ignoreDynamicSQL = false;
71837
72209
  for (const statementNode of file.getStatements()) {
71838
72210
  const statement = statementNode.get();
72211
+ if (statement instanceof Statements.MethodImplementation) {
72212
+ const methodName = (_a = statementNode.findFirstExpression(Expressions.MethodName)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();
72213
+ ignoreDynamicSQL = this.conf.ignoreRAPQueryProvider === true
72214
+ && methodName === "IF_RAP_QUERY_PROVIDER~SELECT";
72215
+ }
72216
+ else if (statement instanceof Statements.EndMethod) {
72217
+ ignoreDynamicSQL = false;
72218
+ }
71839
72219
  let message = undefined;
71840
72220
  if (this.conf.execSQL && statement instanceof Statements.ExecSQL) {
71841
72221
  message = "EXEC SQL";
@@ -71876,7 +72256,7 @@ dynamic SQL can potentially create SQL injection problems`,
71876
72256
  if (message) {
71877
72257
  issues.push(issue_1.Issue.atStatement(file, statementNode, this.getDescription(message), this.getMetadata().key, this.conf.severity));
71878
72258
  }
71879
- if (this.conf.dynamicSQL) {
72259
+ if (this.conf.dynamicSQL && ignoreDynamicSQL === false) {
71880
72260
  message = this.findDynamicSQL(statementNode);
71881
72261
  if (message) {
71882
72262
  issues.push(issue_1.Issue.atStatement(file, statementNode, this.getDescription(message), this.getMetadata().key, this.conf.severity));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.119.36",
3
+ "version": "2.119.37",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "homepage": "https://abaplint.org",
40
40
  "devDependencies": {
41
- "@abaplint/core": "^2.119.36",
41
+ "@abaplint/core": "^2.119.37",
42
42
  "@types/chai": "^4.3.20",
43
43
  "@types/minimist": "^1.2.5",
44
44
  "@types/mocha": "^10.0.10",