@abaplint/cli 2.119.36 → 2.119.38
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.
- package/build/cli.js +493 -77
- 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
|
-
|
|
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]
|
|
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__(/*! ./
|
|
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__(/*! ./
|
|
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.
|
|
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)(
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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/
|
|
8398
|
-
|
|
8399
|
-
!*** ../core/build/src/abap/2_statements/expressions/
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
8414
|
-
const
|
|
8415
|
-
const
|
|
8416
|
-
|
|
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.
|
|
8420
|
-
//# sourceMappingURL=
|
|
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.
|
|
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.
|
|
14944
|
-
const create3 = (0, combi_1.seq)("CREATE BY", expressions_1.
|
|
14945
|
-
const create4 = (0, combi_1.seq)("CREATE FROM", expressions_1.Source, (0, combi_1.plus)((0, combi_1.seq)("CREATE BY", expressions_1.
|
|
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.
|
|
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.
|
|
15928
|
-
const by = (0, combi_1.seq)("BY", expressions_1.
|
|
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
|
|
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
|
}
|
|
@@ -26567,16 +26933,16 @@ class BasicTypes {
|
|
|
26567
26933
|
options.primaryKey.type = basic_1.TableAccessType.standard;
|
|
26568
26934
|
return new Types.TableType(structure, options);
|
|
26569
26935
|
}
|
|
26570
|
-
else if (typename && (text
|
|
26571
|
-
|| text.startsWith("TYPE TABLE FOR READ ")
|
|
26572
|
-
|| text.startsWith("TYPE TABLE FOR DELETE ")
|
|
26573
|
-
|| text.startsWith("TYPE TABLE FOR UPDATE "))) {
|
|
26936
|
+
else if (typename && this.isRAPTableFor(text)) {
|
|
26574
26937
|
const name = typename.concatTokens();
|
|
26575
26938
|
const ddlsName = this.getRAPBaseEntityName(name);
|
|
26576
26939
|
const type = (_d = this.input.scope.getDDIC().lookupDDLS(ddlsName)) === null || _d === void 0 ? void 0 : _d.type;
|
|
26577
26940
|
if (type) {
|
|
26578
26941
|
return new Types.TableType(basic_1.VoidType.get("RAP-TODO"), options);
|
|
26579
26942
|
}
|
|
26943
|
+
else if (this.isRAPDerivedEntityName(name)) {
|
|
26944
|
+
return Types.VoidType.get(name);
|
|
26945
|
+
}
|
|
26580
26946
|
else if (this.input.scope.getDDIC().inErrorNamespace(ddlsName)) {
|
|
26581
26947
|
return new Types.UnknownType(`DDLS ${ddlsName} not found`);
|
|
26582
26948
|
}
|
|
@@ -26588,7 +26954,7 @@ class BasicTypes {
|
|
|
26588
26954
|
return this.parseType(node, name);
|
|
26589
26955
|
}
|
|
26590
26956
|
parseType(node, qualifiedName) {
|
|
26591
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
26957
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
26592
26958
|
const typeName = node.findFirstExpression(Expressions.TypeName);
|
|
26593
26959
|
let text = (_a = node.findFirstExpression(Expressions.Type)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();
|
|
26594
26960
|
if (text === undefined) {
|
|
@@ -26601,7 +26967,10 @@ class BasicTypes {
|
|
|
26601
26967
|
}
|
|
26602
26968
|
}
|
|
26603
26969
|
if (text === undefined) {
|
|
26604
|
-
text = (_d = node.findFirstExpression(Expressions.
|
|
26970
|
+
text = (_d = node.findFirstExpression(Expressions.TypeStructure)) === null || _d === void 0 ? void 0 : _d.concatTokens().toUpperCase();
|
|
26971
|
+
}
|
|
26972
|
+
if (text === undefined) {
|
|
26973
|
+
text = (_e = node.findFirstExpression(Expressions.FormParamType)) === null || _e === void 0 ? void 0 : _e.concatTokens().toUpperCase();
|
|
26605
26974
|
}
|
|
26606
26975
|
if (text === undefined
|
|
26607
26976
|
&& node.get() instanceof Statements.Parameter
|
|
@@ -26612,8 +26981,11 @@ class BasicTypes {
|
|
|
26612
26981
|
text = "TYPE";
|
|
26613
26982
|
}
|
|
26614
26983
|
let found = undefined;
|
|
26615
|
-
if (
|
|
26616
|
-
|
|
26984
|
+
if (this.isRAPTypeStructure(text)) {
|
|
26985
|
+
return Types.VoidType.get((_f = node.findFirstExpression(Expressions.TypeStructure)) === null || _f === void 0 ? void 0 : _f.concatTokens());
|
|
26986
|
+
}
|
|
26987
|
+
else if (text.startsWith("LIKE LINE OF ")) {
|
|
26988
|
+
const name = (_g = node.findFirstExpression(Expressions.FieldChain)) === null || _g === void 0 ? void 0 : _g.concatTokens();
|
|
26617
26989
|
let e = node.findFirstExpression(Expressions.Type);
|
|
26618
26990
|
if (e === undefined) {
|
|
26619
26991
|
e = node.findFirstExpression(Expressions.FormParamType);
|
|
@@ -26636,7 +27008,7 @@ class BasicTypes {
|
|
|
26636
27008
|
}
|
|
26637
27009
|
}
|
|
26638
27010
|
else if (text.startsWith("LIKE REF TO ")) {
|
|
26639
|
-
const name = (
|
|
27011
|
+
const name = (_h = node.findFirstExpression(Expressions.FieldChain)) === null || _h === void 0 ? void 0 : _h.concatTokens();
|
|
26640
27012
|
const type = this.resolveLikeName(node.findFirstExpression(Expressions.Type), false);
|
|
26641
27013
|
if (type === undefined) {
|
|
26642
27014
|
return new Types.UnknownType("Type error, could not resolve \"" + name + "\", parseType");
|
|
@@ -26727,7 +27099,7 @@ class BasicTypes {
|
|
|
26727
27099
|
}
|
|
26728
27100
|
}
|
|
26729
27101
|
if (text.includes(" WITH INDICATORS ")) {
|
|
26730
|
-
const componentName = (
|
|
27102
|
+
const componentName = (_k = (_j = node.findFirstExpression(Expressions.Type)) === null || _j === void 0 ? void 0 : _j.findDirectExpression(Expressions.ComponentName)) === null || _k === void 0 ? void 0 : _k.concatTokens().toUpperCase();
|
|
26731
27103
|
if (componentName === undefined) {
|
|
26732
27104
|
throw new Error("parseType, componentName expected");
|
|
26733
27105
|
}
|
|
@@ -26753,12 +27125,38 @@ class BasicTypes {
|
|
|
26753
27125
|
getRAPBaseEntityName(name) {
|
|
26754
27126
|
const association = name.indexOf("\\_");
|
|
26755
27127
|
const path = name.indexOf("\\\\");
|
|
26756
|
-
|
|
27128
|
+
const action = name.indexOf("~");
|
|
27129
|
+
if (association === -1 && path === -1 && action === -1) {
|
|
26757
27130
|
return name;
|
|
26758
27131
|
}
|
|
26759
|
-
const
|
|
27132
|
+
const candidates = [association, path, action].filter(i => i !== -1);
|
|
27133
|
+
const splitAt = Math.min(...candidates);
|
|
26760
27134
|
return name.substring(0, splitAt);
|
|
26761
27135
|
}
|
|
27136
|
+
isRAPDerivedEntityName(name) {
|
|
27137
|
+
return name.includes("\\") || name.includes("~");
|
|
27138
|
+
}
|
|
27139
|
+
isRAPTableFor(text) {
|
|
27140
|
+
return text.startsWith("TYPE TABLE FOR ACTION IMPORT ")
|
|
27141
|
+
|| text.startsWith("TYPE TABLE FOR ACTION RESULT ")
|
|
27142
|
+
|| text.startsWith("TYPE TABLE FOR CREATE ")
|
|
27143
|
+
|| text.startsWith("TYPE TABLE FOR DELETE ")
|
|
27144
|
+
|| text.startsWith("TYPE TABLE FOR DETERMINATION ")
|
|
27145
|
+
|| text.startsWith("TYPE TABLE FOR EVENT ")
|
|
27146
|
+
|| text.startsWith("TYPE TABLE FOR FAILED ")
|
|
27147
|
+
|| text.startsWith("TYPE TABLE FOR FAILED EARLY ")
|
|
27148
|
+
|| text.startsWith("TYPE TABLE FOR LOCK ")
|
|
27149
|
+
|| text.startsWith("TYPE TABLE FOR READ ")
|
|
27150
|
+
|| text.startsWith("TYPE TABLE FOR READ IMPORT ")
|
|
27151
|
+
|| text.startsWith("TYPE TABLE FOR READ RESULT ")
|
|
27152
|
+
|| text.startsWith("TYPE TABLE FOR REPORTED EARLY ")
|
|
27153
|
+
|| text.startsWith("TYPE TABLE FOR UPDATE ");
|
|
27154
|
+
}
|
|
27155
|
+
isRAPTypeStructure(text) {
|
|
27156
|
+
return text.startsWith("TYPE STRUCTURE FOR ")
|
|
27157
|
+
|| text.startsWith("TYPE RESPONSE FOR ")
|
|
27158
|
+
|| text.startsWith("TYPE REQUEST FOR CHANGE ");
|
|
27159
|
+
}
|
|
26762
27160
|
// todo, rewrite this method
|
|
26763
27161
|
resolveTypeChain(expr) {
|
|
26764
27162
|
var _a, _b, _c, _d;
|
|
@@ -40397,7 +40795,9 @@ class MoveCorresponding {
|
|
|
40397
40795
|
}
|
|
40398
40796
|
const sourceType = source_1.Source.runSyntax(s, input);
|
|
40399
40797
|
const targetType = target_1.Target.runSyntax(t, input);
|
|
40400
|
-
if (input.scope.getVersion() < version_1.Version.v740sp05
|
|
40798
|
+
if (input.scope.getVersion() < version_1.Version.v740sp05
|
|
40799
|
+
&& input.scope.getVersion() !== version_1.Version.Cloud
|
|
40800
|
+
&& input.scope.getVersion() !== version_1.Version.OpenABAP) {
|
|
40401
40801
|
if (sourceType instanceof basic_1.TableType && sourceType.isWithHeader() === false) {
|
|
40402
40802
|
const message = "MOVE-CORRESPONDING with tables possible from v740sp05";
|
|
40403
40803
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
@@ -45478,6 +45878,10 @@ class SyntaxLogic {
|
|
|
45478
45878
|
this.scope.addList(values);
|
|
45479
45879
|
return true;
|
|
45480
45880
|
}
|
|
45881
|
+
else if (stru instanceof Structures.TestInjection) {
|
|
45882
|
+
// todo: skipped for now
|
|
45883
|
+
return true;
|
|
45884
|
+
}
|
|
45481
45885
|
return false;
|
|
45482
45886
|
}
|
|
45483
45887
|
updateScopeStatement(node) {
|
|
@@ -66163,7 +66567,7 @@ class Registry {
|
|
|
66163
66567
|
}
|
|
66164
66568
|
static abaplintVersion() {
|
|
66165
66569
|
// magic, see build script "version.js"
|
|
66166
|
-
return "2.119.
|
|
66570
|
+
return "2.119.38";
|
|
66167
66571
|
}
|
|
66168
66572
|
getDDICReferences() {
|
|
66169
66573
|
return this.ddicReferences;
|
|
@@ -71805,6 +72209,8 @@ class DangerousStatementConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
|
71805
72209
|
this.exportDynpro = true;
|
|
71806
72210
|
/** Finds instances of dynamic SQL: SELECT, UPDATE, DELETE, INSERT, MODIFY */
|
|
71807
72211
|
this.dynamicSQL = true;
|
|
72212
|
+
/** Ignore dynamic SQL in IF_RAP_QUERY_PROVIDER~SELECT implementations */
|
|
72213
|
+
this.ignoreRAPQueryProvider = true;
|
|
71808
72214
|
}
|
|
71809
72215
|
}
|
|
71810
72216
|
exports.DangerousStatementConf = DangerousStatementConf;
|
|
@@ -71833,9 +72239,19 @@ dynamic SQL can potentially create SQL injection problems`,
|
|
|
71833
72239
|
this.conf = conf;
|
|
71834
72240
|
}
|
|
71835
72241
|
runParsed(file) {
|
|
72242
|
+
var _a;
|
|
71836
72243
|
const issues = [];
|
|
72244
|
+
let ignoreDynamicSQL = false;
|
|
71837
72245
|
for (const statementNode of file.getStatements()) {
|
|
71838
72246
|
const statement = statementNode.get();
|
|
72247
|
+
if (statement instanceof Statements.MethodImplementation) {
|
|
72248
|
+
const methodName = (_a = statementNode.findFirstExpression(Expressions.MethodName)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();
|
|
72249
|
+
ignoreDynamicSQL = this.conf.ignoreRAPQueryProvider === true
|
|
72250
|
+
&& methodName === "IF_RAP_QUERY_PROVIDER~SELECT";
|
|
72251
|
+
}
|
|
72252
|
+
else if (statement instanceof Statements.EndMethod) {
|
|
72253
|
+
ignoreDynamicSQL = false;
|
|
72254
|
+
}
|
|
71839
72255
|
let message = undefined;
|
|
71840
72256
|
if (this.conf.execSQL && statement instanceof Statements.ExecSQL) {
|
|
71841
72257
|
message = "EXEC SQL";
|
|
@@ -71876,7 +72292,7 @@ dynamic SQL can potentially create SQL injection problems`,
|
|
|
71876
72292
|
if (message) {
|
|
71877
72293
|
issues.push(issue_1.Issue.atStatement(file, statementNode, this.getDescription(message), this.getMetadata().key, this.conf.severity));
|
|
71878
72294
|
}
|
|
71879
|
-
if (this.conf.dynamicSQL) {
|
|
72295
|
+
if (this.conf.dynamicSQL && ignoreDynamicSQL === false) {
|
|
71880
72296
|
message = this.findDynamicSQL(statementNode);
|
|
71881
72297
|
if (message) {
|
|
71882
72298
|
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.
|
|
3
|
+
"version": "2.119.38",
|
|
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.
|
|
41
|
+
"@abaplint/core": "^2.119.38",
|
|
42
42
|
"@types/chai": "^4.3.20",
|
|
43
43
|
"@types/minimist": "^1.2.5",
|
|
44
44
|
"@types/mocha": "^10.0.10",
|