diff --git a/01_Internal_Tables.md b/01_Internal_Tables.md index 2ecdd0a..6680749 100644 --- a/01_Internal_Tables.md +++ b/01_Internal_Tables.md @@ -844,9 +844,9 @@ The following code snippets include [`READ TABLE`](https://help.sap.com/doc/abap assigned to the field symbol. ``` abap - READ TABLE itab ASSIGNING ... + READ TABLE itab ASSIGNING ... "The field symbol must have an appropriate type. - READ TABLE itab ASSIGNING FIELD-SYMBOL() ... + READ TABLE itab ASSIGNING FIELD-SYMBOL() ... "The field symbol is created inline. ``` - Reading a line into a [data reference diff --git a/03_ABAP_SQL.md b/03_ABAP_SQL.md index 1a2cc74..c487197 100644 --- a/03_ABAP_SQL.md +++ b/03_ABAP_SQL.md @@ -85,7 +85,7 @@ Find more information in the respective (sub)topics in the ABAP Keyword Document **"Classic"** [DDIC Views](https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abenddic_view_glosry.htm "Glossary Entry") ... -- are the oldest form of views and are not available in SAP BTP ABAP environments. +- are the oldest form of views and are not available in [ABAP Cloud](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_cloud_glosry.htm). - can be accessed by ABAP SQL for read and write operations, however, writing is only supported if the view is created with only one database table. - can only be created in the [ABAP Workbench](https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abenabap_workbench_glosry.htm). @@ -349,9 +349,9 @@ SELECT ds~col1, ds~col2, ds~col3 INTO ... ``` -**Reading data from a database table in another client** (not available in SAP BTP ABAP environments). Note that there are several variants of the `USING ...` addition for switching the [implicit client handling (F1 docu for standard ABAP)](https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abenabap_sql_client_handling.htm) from the current client to other clients. See more information [here (F1 docu for standard ABAP)](https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abapselect_client.htm). +**Reading data from a database table in another client** ([classic ABAP](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenclassic_abap_glosry.htm) only ). Note that there are several variants of the `USING ...` addition for switching the [implicit client handling (F1 docu for standard ABAP)](https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abenabap_sql_client_handling.htm) from the current client to other clients. See more information [here (F1 docu for standard ABAP)](https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abapselect_client.htm). ``` abap -"Some examples; not available in SAP BTP ABAP environments +"Some examples; not available in ABAP for Cloud Development "Replaces the current client with the specified client SELECT * diff --git a/06_Dynamic_Programming.md b/06_Dynamic_Programming.md index fbcb4b7..4782b93 100644 --- a/06_Dynamic_Programming.md +++ b/06_Dynamic_Programming.md @@ -724,7 +724,7 @@ Note that dynamically specifying syntax elements has downsides, too. Consider so "attributes and that are specified dynamically. DATA cl_ref TYPE REF TO cl_some_class. cl_ref = NEW #( ). - ASSIGN cl_ref->(SOME_ATTRIBUTE') TO FIELD-SYMBOL(). + ASSIGN cl_ref->('SOME_ATTRIBUTE') TO FIELD-SYMBOL(). "If ELSE UNASSIGN is specified, no memory area is assigned to "the field symbol. It has the state unassigned after the ASSIGN diff --git a/09_Bits_and_Bytes.md b/09_Bits_and_Bytes.md index 948f460..64fbe12 100644 --- a/09_Bits_and_Bytes.md +++ b/09_Bits_and_Bytes.md @@ -12,7 +12,7 @@ calculation: > **💡 Note**
-> For checking out the code snippets in an SAP BTP ABAP environment, you can use the interface `if_oo_adt_classrun` in a class by implementing the method `if_oo_adt_classrun~main`. +> For checking out the code snippets in [ABAP Cloud](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_cloud_glosry.htm), you can use the interface `if_oo_adt_classrun` in a class by implementing the method `if_oo_adt_classrun~main`. ``` abap DATA num TYPE i. diff --git a/12_AMDP.md b/12_AMDP.md index 2f6e6f6..16548f7 100644 --- a/12_AMDP.md +++ b/12_AMDP.md @@ -425,8 +425,7 @@ IF NOT cl_abap_dbfeatures=>use_features( ENDIF. ``` -This check is not required (and possible) for the SAP BTP ABAP Environment since those -environments are SAP HANA-only anyway and database connections are not +This check is not required (and possible) for [ABAP Cloud](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_cloud_glosry.htm) since it is SAP HANA-only anyway and database connections are not possible. Furthermore, another topic that should be noted is that AMDP does not support [implicit client handling](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_sql_client_handling.htm). diff --git a/14_ABAP_Unit_Tests.md b/14_ABAP_Unit_Tests.md index 83eea05..a3a208e 100644 --- a/14_ABAP_Unit_Tests.md +++ b/14_ABAP_Unit_Tests.md @@ -498,14 +498,15 @@ For more information about evaluating ABAP unit test results, see [here](https:/ ## More Information -- [ABAP Unit in the ABAP Keyword Documentation](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_unit.htm) -- [openSAP course: Writing Testable Code for ABAP](https://open.sap.com/courses/wtc1.OpenSAP+WTC1_W1U5+Writing+Testable+Code+for+ABAPComent) -- Information on the SAP Help Portal: +- openSAP course: [Writing Testable Code for ABAP](https://open.sap.com/courses/wtc1.OpenSAP+WTC1_W1U5+Writing+Testable+Code+for+ABAPComent) +- ABAP Keyword Documentation + - [ABAP Unit](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_unit.htm) + - [Testing repository objects](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abentest_relations.htm) +- SAP Help Portal: - [Unit Testing with ABAP Unit](https://help.sap.com/docs/ABAP_PLATFORM_NEW/c238d694b825421f940829321ffa326a/08c60b52cb85444ea3069779274b43db.html?locale=en-US) - [ABAP Unit](https://help.sap.com/docs/ABAP_PLATFORM_NEW/ba879a6e2ea04d9bb94c7ccd7cdac446/491cfd8926bc14cde10000000a42189b.html?locale=en-US) -- The [ABAP OO Test Double Framework](https://help.sap.com/docs/ABAP_PLATFORM_NEW/c238d694b825421f940829321ffa326a/804c251e9c19426cadd1395978d3f17b.html?locale=en-US) based on class `CL_ABAP_TESTDOUBLE` simplifies and standardizes the creation and configuration of test doubles. -- [Testing repository objects](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abentest_relations.htm) (ABAP Keyword Documentation) -- [Development Guide for the ABAP RESTful Application Programming Model: Testing different artifacts of RAP business objects and related OData services](https://help.sap.com/docs/btp/sap-abap-restful-application-programming-model/test?locale=en-US) + - The [ABAP OO Test Double Framework](https://help.sap.com/docs/ABAP_PLATFORM_NEW/c238d694b825421f940829321ffa326a/804c251e9c19426cadd1395978d3f17b.html?locale=en-US) based on class `CL_ABAP_TESTDOUBLE` simplifies and standardizes the creation and configuration of test doubles. + - Development Guide for the ABAP RESTful Application Programming Model: [Testing different artifacts of RAP business objects and related OData services](https://help.sap.com/docs/btp/sap-abap-restful-application-programming-model/test?locale=en-US)

⬆️ back to top

diff --git a/15_CDS_View_Entities.md b/15_CDS_View_Entities.md index b72acfa..aef7c84 100644 --- a/15_CDS_View_Entities.md +++ b/15_CDS_View_Entities.md @@ -13,10 +13,12 @@ Core data services (CDS) are an infrastructure for defining and consuming semant ## More Information -- [Feature Matrix: Data Modeling with ABAP Core Data Services](https://blogs.sap.com/2022/10/24/feature-matrix-data-modeling-with-abap-core-data-services/) -- [ABAP CDS Cheat Sheet: Amounts and Quantities in ABAP CDS](https://blogs.sap.com/2022/07/07/abap-cds-cheat-sheet-amounts-and-quantities-in-abap-cds/) -- [Section *ABAP - Core Data Services (ABAP CDS)* in the ABAP Keyword Documentation](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abencds.htm) -- [ABAP Data Models Guide](https://blogs.sap.com/2023/05/09/abap-data-models-guide/) +- Blogs: + - [Feature Matrix: Data Modeling with ABAP Core Data Services](https://blogs.sap.com/2022/10/24/feature-matrix-data-modeling-with-abap-core-data-services/) + - [ABAP CDS Cheat Sheet: Amounts and Quantities in ABAP CDS](https://blogs.sap.com/2022/07/07/abap-cds-cheat-sheet-amounts-and-quantities-in-abap-cds/) + - [ABAP Data Models Guide](https://blogs.sap.com/2023/05/09/abap-data-models-guide/) (includes a link to the guide on the SAP Help Portal) +- ABAP Keyword Documentation: [ABAP - Core Data Services (ABAP CDS)](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abencds.htm) + ## Executable Example @@ -24,7 +26,7 @@ Core data services (CDS) are an infrastructure for defining and consuming semant The example covers the following topics: - Operands, expressions, built-in functions, and input parameters in CDS view entities - - Selecting data from CDS view entities using ABAP SQL SELECT statements + - Selecting data from CDS view entities using ABAP SQL `SELECT` statements - Joins - Note: A sample CDS view entity contains multiple joins. You can comment in/out code sections to see the effect. See the notes in the view. - Excursion: Joins in ABAP SQL @@ -34,5 +36,5 @@ The example covers the following topics: - Using exposed associations in ABAP statements Note ... -- the comments in the example CDS view entities (zdemo_abap_cds_ve...) and the [class](./src/zcl_demo_abap_cds_ve.clas.abap). +- the comments in the example CDS view entities (`zdemo_abap_cds_ve...`) and the [class](./src/zcl_demo_abap_cds_ve.clas.abap). - the steps outlined [here](README.md#-getting-started-with-the-examples) about how to import and run the code. diff --git a/17_SAP_LUW.md b/17_SAP_LUW.md index 48e5f76..1694c7f 100644 --- a/17_SAP_LUW.md +++ b/17_SAP_LUW.md @@ -122,7 +122,7 @@ The following bundling techniques are available for classic ABAP. This means tha - Usually contain database modification operations/statements - [`CALL FUNCTION ... IN UPDATE TASK`](https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abapcall_function_update.htm) statements are used to register the update function modules for later execution; the actual execution is triggered by a `COMMIT WORK` statement -- Example of a simple function module that has an importing parameter (a structure that is used to modify a database table). It simply shows a database modifying statement contained in a function module. The code alone does not distinguish it as an update function module. You can open the imported example function modules from the repository. They are marked as update function modules. +- Example of a simple function module that has an importing parameter (a structure that is used to modify a database table). It simply shows a database modifying statement contained in a function module. The code alone does not distinguish it as an update function module. For example, check the example function modules from the imported repository that are used in the executable example. In ADT, right-click a function module and choose *Open with → SAP GUI*. In SAP GUI, choose the *Attributes* tab. The *Update Module* checkbox is selected. ```abap FUNCTION zsome_update_fu_mod IMPORTING @@ -204,7 +204,7 @@ The following bundling techniques are available for classic ABAP. This means tha - Note the [background processing framework (bgPF)](https://help.sap.com/docs/abap-cloud/abap-concepts/background-processing-framework) as a successor technology **Using [subroutines](https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abensubroutine_glosry.htm)** -- Subroutines that are no longer recommended for use can be registered for later execution. +- Subroutines (that are no longer recommended for use ⚠️) can be registered for later execution. - They are registered with the [`PERFORM ... ON COMMIT`](https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abapperform_on_commit.htm) statement. These subroutines are executed when a `COMMIT WORK` statement is called. - An addition is available to control the order of execution. diff --git a/18_Dynpro.md b/18_Dynpro.md index e0ee502..be9946e 100644 --- a/18_Dynpro.md +++ b/18_Dynpro.md @@ -206,7 +206,7 @@ CLASS local_class DEFINITION. ENDCLASS. -CLASS demo IMPLEMENTATION. +CLASS local_class IMPLEMENTATION. ... ENDCLASS. ``` diff --git a/19_ABAP_for_Cloud_Development.md b/19_ABAP_for_Cloud_Development.md index 6783523..6482d19 100644 --- a/19_ABAP_for_Cloud_Development.md +++ b/19_ABAP_for_Cloud_Development.md @@ -18,7 +18,7 @@ It provides references to more detailed information on the topic. - Progamming paradigm for state-of-the-art, cloud-ready and upgrade-stable solutions - Based on a usage type of the [ABAP Platform](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_platform_glosry.htm), where the following restrictions apply: - [ABAP language version](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_version_glosry.htm): - - The available ABAP language version is [ABAP for Cloud Development](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_for_cloud_dev_glosry.htm) that presents a [restricted ABAP language version](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenrestricted_version_glosry.htm) (for example, dynpro-related statements are not allowed). + - The available ABAP language version is [ABAP for Cloud Development](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_for_cloud_dev_glosry.htm) that presents a [restricted ABAP language version](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenrestricted_version_glosry.htm). - [Released APIs](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenreleased_api_glosry.htm): - Access to SAP-delivered repository objects is restricted to objects released for ABAP for Cloud Development - For example, most of the database tables provided by SAP cannot be read directly (although there are abstractions for many that can be accessed). @@ -53,7 +53,7 @@ It provides references to more detailed information on the topic. ![Release contract](./files/release_contract.png) - For deprecated and invalid syntax, see the following code. + For deprecated and invalid syntax in ABAP for Cloud Development, see the following code. For example, create a demo class and insert the code contained in the implementation into the `if_oo_adt_classrun~main` method. You will see several syntax errors. > **💡 Note**
@@ -144,7 +144,7 @@ It provides references to more detailed information on the topic. - For example, in your class, right-click and choose *Run As* → *4 ABAP Test Cockpit With...*. Enter `ABAP_CLOUD_READINESS` in the pop-up window and choose *Ok*. The ATC check run is started. - As a result of the ATC check run (note that it may take a while to complete), the *ATC Problems* tab in ADT should display results. In this case, these are the errors and warnings mentioned above, indicating that the code is not cloud-ready in various places. Double-click on the findings for more detailed information. - d) Develop in clasic ABAP in a cloud-ready manner + d) Develop in classic ABAP in a cloud-ready manner - You have walked through b), created a class, inserted the code from above, and activated the class. The *ABAP Language Version* is maintained as *Standard ABAP* in the *Properties* tab under *General*. - Suppose you want to develop in a cloud-ready manner and use ABAP for Cloud Development, i.e. the restricted ABAP language version, in classic ABAP (e.g. an on-premise ABAP system that allows the unrestricted ABAP language version). - Open the *Properties* tab and choose *General* for this purpose. diff --git a/README.md b/README.md index ab5ed5e..21ca3fb 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ ABAP cheat sheets[^1] ... - provide a **collection of information on selected ABAP topics** in a nutshell for your reference. - focus on **ABAP syntax**. - include **code snippets**. -- are supported by easy-to-consume **demonstration examples** that you can import into your [SAP BTP ABAP environment](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abensap_btp_abap_env_glosry.htm) (*main* branch) or [classic ABAP](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenclassic_abap_glosry.htm) (on-premise ABAP system) (other branches) using [abapGit](https://abapgit.org/) to run and check out ABAP syntax in action in simple contexts. +- are supported by easy-to-consume **demonstration examples** that you can import into your [SAP BTP ABAP environment](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abensap_btp_abap_env_glosry.htm) (*main* branch) or on-premise ABAP system ([classic ABAP](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenclassic_abap_glosry.htm); the repository branches other than *main*) using [abapGit](https://abapgit.org/) to run and check out ABAP syntax in action in simple contexts. - are enriched by links to glossary entries and chapters of the **ABAP Keyword Documentation** (the *F1 help*) for you to deep dive into the respective ABAP topics and get more comprehensive information.
@@ -214,12 +214,10 @@ Use the standalone version of the abapGit report to import the demo examples of - Links to the online version of the ABAP Keyword Documentation for: - **Standard ABAP**: Unrestricted ABAP language scope for [classic ABAP](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenclassic_abap_glosry.htm) → [Online version of the documentation (latest version)](https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abenabap.htm). To access the online documentation for a specific ABAP version, e.g. 7.54, you can select the version from the drop-down list [here](https://help.sap.com/docs/ABAP?locale=en-US) (*latest* is preselected). The *ABAP* link under *Development* will take you to the documentation of choice. - **ABAP for Cloud Development**: Restricted ABAP language scope for developments, for example, in the SAP BTP ABAP environment → [Online version of the documentation](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm) -- Regarding demonstration examples of the ABAP Keyword Documentation in classic ABAP: Have you ever checked out the package `SABAPDEMOS`? This package contains all the examples used in the ABAP Keyword Documentation. To get the context, program names, etc., see the [example page](https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abenabap_examples.htm) (also available in the system-internal SAP GUI version as a node in the topic tree), which summarizes the executable examples. Of course, you can also find the example topics in the context of the individual ABAP Keyword Documentation topic. The example topics are marked with a ⚙️ icon: +- For demonstration examples of the ABAP Keyword Documentation in classic ABAP, see the `SABAPDEMOS` package. This package contains all the examples used in the ABAP Keyword Documentation. For the context, class/program name, etc., see the [example page](https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abenabap_examples.htm), which is also available in the system-internal SAP GUI version as a node in the topic tree and which summarizes the executable examples. Of course, you can also find the example topics in the context of the individual topic of the ABAP keyword documentation. The example topics are marked with a ⚙️ icon: ![](./files/example_topics.png) -- [This blog](https://blogs.sap.com/2021/04/28/video-tutorials-on-how-to-use-the-abap-keyword-documentation-abap-f1-help/) features videos about the ABAP Keyword Documentation in the [SAP Help Portal](https://www.youtube.com/watch?v=a4ckF1XkfG8), [SAP GUI](https://www.youtube.com/watch?v=fsX-085MlD8), and [ADT](https://www.youtube.com/watch?v=hNGEYFpWwh0). -
## ⚠️ Disclaimer diff --git a/src/zcl_demo_abap_amdp.clas.abap b/src/zcl_demo_abap_amdp.clas.abap index 1d5770e..485a660 100644 --- a/src/zcl_demo_abap_amdp.clas.abap +++ b/src/zcl_demo_abap_amdp.clas.abap @@ -11,12 +11,11 @@ * - The purpose is to give you a rough idea about AMDP. Therefore, * the SQLScript code used in the method implementations is * fairly simple. AMDP is not needed in simple cases like these. -* - The example is primarily intended for the SAP BTP ABAP -* environment. For example, in SAP BTP ABAP environment only -* read-only operations are possible. In general, there are more -* syntax options available in the unrestricted ABAP language scope -* in classic ABAP. Check the ABAP Keyword Documentation -* for more details and examples. +* - The example is primarily intended for ABAP Cloud. +* For example, in ABAP Cloud only read-only operations are possible. +* In general, there are more syntax options available in classic +* ABAP. Check the ABAP Keyword Documentation for more details and +* examples. * * ----------------------- GETTING STARTED ----------------------------- * - Open the class with the ABAP development tools for Eclipse (ADT). diff --git a/src/zcl_demo_abap_cloud_excursion.clas.abap b/src/zcl_demo_abap_cloud_excursion.clas.abap index 0af7bc4..ea49e73 100644 --- a/src/zcl_demo_abap_cloud_excursion.clas.abap +++ b/src/zcl_demo_abap_cloud_excursion.clas.abap @@ -168,7 +168,7 @@ CLASS zcl_demo_abap_cloud_excursion IMPLEMENTATION. DATA number TYPE int4. number = lines( future_leap_years ). - out->write( |\nBetween { current_year } and 2050, there are { number } leap years.| ). + out->write( |\nBetween { current_year } and { up_to_year }, there are { number } leap years.| ). "Using a released API as data source of a SELECT statement "Among others, the month names of specified languages are retrieved in the example.