From 1f05df21cf18cd8b8c48c9620743ff7e384a6a07 Mon Sep 17 00:00:00 2001 From: Dan <16720986+danrega@users.noreply.github.com> Date: Tue, 13 Dec 2022 10:34:21 +0100 Subject: [PATCH] Update 03_ABAP_SQL.md --- 03_ABAP_SQL.md | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/03_ABAP_SQL.md b/03_ABAP_SQL.md index af5e52b..1564b95 100644 --- a/03_ABAP_SQL.md +++ b/03_ABAP_SQL.md @@ -87,7 +87,7 @@ ABAP](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file= conditions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenjoin_condition_glosry.htm "Glossary Entry"). - Note: - Similar to database tables, the columns of such a view form a - flat structure. Hence, the view's name can be used to declare + flat structure. Hence, the view's name can be used, for example, to declare data objects, too. - The views can be accessed by ABAP SQL, especially for reading purposes using `SELECT`. @@ -233,7 +233,7 @@ SELECT FROM source "What db table or view to read from internal tables as targets, the resulting table is a standard table and has an empty key which might have an impact when further processing the internal table entries. Find more information in the - ABAP cheat sheet [Working with Internal Tables](01_Internal_Tables.md). + ABAP cheat sheet [Working with Internal Tables](01_Internal_Tables.md). Apart from `DATA`, you can also make use of the declaration operator [`FINAL`](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenfinal_inline.htm) in newer ABAP releases with which you can create [immutable variables](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenimmutable_variable_glosry.htm).
@@ -261,7 +261,9 @@ SELECT SINGLE FROM dbtab "Alternative syntax without the FIELDS addition "When reading into an existing target variable on the basis of a selected -"set of fields, use a CORRESPONDING addition in the INTO clause +"set of fields, use a CORRESPONDING addition in the INTO clause so as not +"to mess up the read result if not all fields of a structure are present +"in the SELECT list. SELECT SINGLE comp1, comp2, comp3 "Selected set of fields FROM dbtab @@ -393,7 +395,7 @@ target table (provided that there will not be an issue regarding the type). ``` abap SELECT FROM dbtab - FIELDS comp1 AS alias1, comp2 AS alias2, comp3 AS alias3 + FIELDS comp1 AS comp_a, comp2 AS comp_b, comp3 AS comp_b WHERE ... INTO CORRESPONDING FIELDS OF TABLE @itab. ``` @@ -593,7 +595,7 @@ SELECT FROM zdemo_abap_flsch char`X` AS flag, "Typed literal - @upto as num, "Host variable + @upto AS num, "Host variable @( cl_abap_context_info=>get_system_date( ) ) as date "Host expression @@ -716,7 +718,7 @@ SELECT SINGLE "case-sensitive by default (case_sensitive parameter can be specified) "Notes on the result: 1 = found, 0 = not found "Result: 1 - like_regexpr( pcre = '..', "Period that is followed by any character + like_regexpr( pcre = '\..', "Period that is followed by any character value = url ) AS like_regex, "Returns position of a substring in an expression, @@ -728,7 +730,7 @@ SELECT SINGLE "Searches a PCRE pattern, returns offset of match; "many optional parameters: occurrence, case_sensitive, start, group "Result: 21 - locate_regexpr( pcre = '..', "Period followed by any character + locate_regexpr( pcre = '\..', "Period followed by any character value = url, occurrence = 2 ) "2nd occurrence in the string AS locate_regexpr, @@ -747,7 +749,7 @@ SELECT SINGLE "Counts all occurrences of found PCRE patterns "Result: 2 - occurrences_regexpr( pcre = '..', + occurrences_regexpr( pcre = '\..', "Period that is followed by any character value = url ) AS occ_regex, "Replaces the 2nd argument with the 3rd in an expression @@ -757,7 +759,7 @@ SELECT SINGLE "Replaces a found PCRE expression; "more parameters possible: occurrence, case_sensitive, start "Result: http://www#ufthansa#om - replace_regexpr( pcre = '..', + replace_regexpr( pcre = '\..', "Period that is followed by any character value = url, with = '#' ) AS replace_regex, @@ -785,7 +787,7 @@ SELECT SINGLE "Searches for a PCRE expression and returns the matched substring "More parameters possible: occurrence, case_sensitive, start, group "Result:.lu - substring_regexpr( pcre = '...', + substring_regexpr( pcre = '\...', "Period that is followed by any two characters value = url ) AS substring_regexpr, "All lower case letters are transformed to upper case letters @@ -897,7 +899,7 @@ SELECT - [Arithmetic expressions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abensql_arith.htm) to perform arithmetic calculations using the operators `+`, - `-`, [`*]`, `/`, + `-`, `*`, `/`, - [Cast expressions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abensql_cast.htm) to convert the value of operands to a dedicated dictionary type. @@ -1113,6 +1115,7 @@ SELECT FROM dbtab "(Not) between a value range "comp1 BETWEEN 1 AND 10 + "comp1 NOT BETWEEN 1 AND 10 "A character literal has a certain pattern, preceded and "followed by any string. @@ -1131,7 +1134,7 @@ SELECT FROM dbtab "comp1 IS INITIAL "Combination of logical expression using AND, OR and parentheses - "( comp1 = a AND comp2 < b ) OR ( comp3> c AND comp4 <> d ) + "( comp1 = a AND comp2 < b ) OR ( comp3 > c AND comp4 <> d ) INTO TABLE @DATA(itab_where). ``` @@ -1228,8 +1231,7 @@ When used: - Whenever you need intermediate results in a `SELECT` statement and especially if you need them more than once. -- You get the option of selecting directly from a subquery [SELECT - FROM subquery], which is not possible in ABAP SQL. +- You get the option of selecting directly from a subquery (`SELECT FROM subquery`), which is not possible in ABAP SQL. How it works: