Update
This commit is contained in:
@@ -14,8 +14,11 @@
|
|||||||
- [SQL Operands](#sql-operands)
|
- [SQL Operands](#sql-operands)
|
||||||
- [SQL Expressions](#sql-expressions)
|
- [SQL Expressions](#sql-expressions)
|
||||||
- [Elementary Expressions](#elementary-expressions)
|
- [Elementary Expressions](#elementary-expressions)
|
||||||
- [SQL Functions](#sql-functions)
|
- [Numeric Functions](#numeric-functions)
|
||||||
- [More SQL Expressions](#more-sql-expressions)
|
- [String Functions](#string-functions)
|
||||||
|
- [Special Functions](#special-functions)
|
||||||
|
- [Aggregate Expressions](#aggregate-expressions)
|
||||||
|
- [Arithmetic, Cast, String Expressions, and Case Distinctions](#arithmetic-cast-string-expressions-and-case-distinctions)
|
||||||
- [Window Expressions](#window-expressions)
|
- [Window Expressions](#window-expressions)
|
||||||
- [SQL Conditions](#sql-conditions)
|
- [SQL Conditions](#sql-conditions)
|
||||||
- [Selecting Data by Evaluating the Content of Other Tables](#selecting-data-by-evaluating-the-content-of-other-tables)
|
- [Selecting Data by Evaluating the Content of Other Tables](#selecting-data-by-evaluating-the-content-of-other-tables)
|
||||||
@@ -623,6 +626,7 @@ SELECT FROM zdemo_abap_flsch
|
|||||||
on SQL expressions
|
on SQL expressions
|
||||||
[here](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abapsql_expr.htm)
|
[here](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abapsql_expr.htm)
|
||||||
and the subtopics there.
|
and the subtopics there.
|
||||||
|
- Built-in functions are available in ABAP SQL. The result is a value with the associated dictionary type. The arguments of the functions can cover one or more SQL expressions. Find more information [here](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_sql_builtin_functions.htm).
|
||||||
|
|
||||||
##### Elementary Expressions
|
##### Elementary Expressions
|
||||||
|
|
||||||
@@ -634,15 +638,10 @@ SELECT FROM zdemo_abap_flsch
|
|||||||
- See more information
|
- See more information
|
||||||
[here](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abensql_elem.htm).
|
[here](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abensql_elem.htm).
|
||||||
|
|
||||||
##### SQL Functions
|
##### Numeric Functions
|
||||||
|
|
||||||
- You can use built-in functions in ABAP SQL.
|
[Numeric functions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abensql_arith_func.htm)
|
||||||
- Result: Value with the associated dictionary type.
|
|
||||||
- Arguments of the functions: Cover one or more SQL expressions.
|
|
||||||
- See more information
|
|
||||||
[here](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_sql_builtin_functions.htm).
|
|
||||||
|
|
||||||
Example: [Numeric functions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abensql_arith_func.htm)
|
|
||||||
``` abap
|
``` abap
|
||||||
SELECT SINGLE
|
SELECT SINGLE
|
||||||
carrname,
|
carrname,
|
||||||
@@ -683,7 +682,9 @@ SELECT SINGLE
|
|||||||
|
|
||||||
<p align="right"><a href="#top">⬆️ back to top</a></p>
|
<p align="right"><a href="#top">⬆️ back to top</a></p>
|
||||||
|
|
||||||
Example: [String functions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abensql_string_func.htm)
|
##### String Functions
|
||||||
|
|
||||||
|
[String functions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abensql_string_func.htm)
|
||||||
|
|
||||||
``` abap
|
``` abap
|
||||||
SELECT SINGLE
|
SELECT SINGLE
|
||||||
@@ -804,7 +805,9 @@ SELECT SINGLE
|
|||||||
|
|
||||||
<p align="right"><a href="#top">⬆️ back to top</a></p>
|
<p align="right"><a href="#top">⬆️ back to top</a></p>
|
||||||
|
|
||||||
Example: [Special functions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_sql_special_functions.htm)
|
##### Special Functions
|
||||||
|
|
||||||
|
[Special functions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenabap_sql_special_functions.htm)
|
||||||
|
|
||||||
``` abap
|
``` abap
|
||||||
SELECT SINGLE
|
SELECT SINGLE
|
||||||
@@ -855,6 +858,8 @@ INTO @DATA(special_functions).
|
|||||||
|
|
||||||
<p align="right"><a href="#top">⬆️ back to top</a></p>
|
<p align="right"><a href="#top">⬆️ back to top</a></p>
|
||||||
|
|
||||||
|
##### Aggregate Expressions
|
||||||
|
|
||||||
[Aggregate expressions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abapselect_aggregate.htm)
|
[Aggregate expressions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abapselect_aggregate.htm)
|
||||||
|
|
||||||
- Consist of [aggregate
|
- Consist of [aggregate
|
||||||
@@ -903,7 +908,7 @@ SELECT
|
|||||||
|
|
||||||
<p align="right"><a href="#top">⬆️ back to top</a></p>
|
<p align="right"><a href="#top">⬆️ back to top</a></p>
|
||||||
|
|
||||||
##### More SQL Expressions
|
##### Arithmetic, Cast, String Expressions, and Case Distinctions
|
||||||
|
|
||||||
- [Arithmetic
|
- [Arithmetic
|
||||||
expressions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abensql_arith.htm)
|
expressions](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abensql_arith.htm)
|
||||||
|
|||||||
@@ -582,13 +582,13 @@ is required to access objects and their components. That means objects are not d
|
|||||||
- Using [`CREATE OBJECT`](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abapcreate_object.htm) statements, you can create an object as an instance of a class and assign the reference to the object to an [object reference variable](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenobject_refer_variable_glosry.htm).
|
- Using [`CREATE OBJECT`](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abapcreate_object.htm) statements, you can create an object as an instance of a class and assign the reference to the object to an [object reference variable](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenobject_refer_variable_glosry.htm).
|
||||||
- The instance operator [`NEW`](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenconstructor_expression_new.htm) basically replaces `CREATE OBJECT` statements.
|
- The instance operator [`NEW`](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenconstructor_expression_new.htm) basically replaces `CREATE OBJECT` statements.
|
||||||
- However, `CREATE OBJECT` statements are still required and they are the only option for creating objects dynamically (`NEW` is not possible in that context) as shown further down.
|
- However, `CREATE OBJECT` statements are still required and they are the only option for creating objects dynamically (`NEW` is not possible in that context) as shown further down.
|
||||||
- Note the use of the built-in generic ABAP type `object` (`TYPE REF TO object`) that is used for the generic typing of object references. It is for any object type. `object` stands for the root class of the inheritance hierarchy. More information: [Generic ABAP Types](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenbuilt_in_types_generic.htm)
|
- In the example, note the the built-in generic ABAP type `object` (`TYPE REF TO object`) that is used for the generic typing of object references. It is for any object type. `object` stands for the root class of the inheritance hierarchy. More information: [Generic ABAP Types](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenbuilt_in_types_generic.htm)
|
||||||
- Find more information in the [ABAP Keyword Documentation](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abapcreate_object.htm) and the [ABAP Object Orientation](04_ABAP_Object_Orientation.md) cheat sheet
|
- Find more information in the [ABAP Keyword Documentation](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abapcreate_object.htm) and the [ABAP Object Orientation](04_ABAP_Object_Orientation.md) cheat sheet
|
||||||
|
|
||||||
```abap
|
```abap
|
||||||
DATA oref_a TYPE REF TO zcl_some_class.
|
DATA oref_a TYPE REF TO zcl_some_class.
|
||||||
oref_a = NEW #( ).
|
oref_a = NEW #( ).
|
||||||
"Using Inline declaration
|
"Using inline declaration
|
||||||
DATA(oref_b) = NEW zcl_some_class( ).
|
DATA(oref_b) = NEW zcl_some_class( ).
|
||||||
"Generic type
|
"Generic type
|
||||||
DATA oref_c TYPE REF TO object.
|
DATA oref_c TYPE REF TO object.
|
||||||
|
|||||||
@@ -43,11 +43,14 @@ The following links take you to the source code of the cheat sheet artifacts to
|
|||||||
|
|
||||||
## More Information
|
## More Information
|
||||||
|
|
||||||
|
- [ABAP Data Models Guide](https://help.sap.com/docs/abap-cloud/abap-data-models/abap-data-models)
|
||||||
|
- [ABAP Core Data Services in the ABAP Keyword Documentation](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abencds.htm)
|
||||||
|
- [ABAP CDS Development Tools: User Guide](https://help.sap.com/docs/abap-cloud/abap-cds-tools-user-guide/about-abap-cds-development-tools-user-guide?version=sap_btp)
|
||||||
|
- [ABAP CDS Feature Tables](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abencds_language_elements.htm)
|
||||||
|
- [ABAP CDS Glossary](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abencds_glossary.htm)
|
||||||
- Blogs:
|
- 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/)
|
- [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 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
|
## Executable Example
|
||||||
|
|||||||
174
21_XML_JSON.md
174
21_XML_JSON.md
@@ -11,7 +11,7 @@
|
|||||||
- [CALL TRANSFORMATION Syntax](#call-transformation-syntax)
|
- [CALL TRANSFORMATION Syntax](#call-transformation-syntax)
|
||||||
- [Working with JSON](#working-with-json)
|
- [Working with JSON](#working-with-json)
|
||||||
- [Excursions](#excursions)
|
- [Excursions](#excursions)
|
||||||
- [Serializing and Deserializing Instances of Classes](#serializing-and-deserializing-instances-of-classes)
|
- [Serializing and Deserializing Objects](#serializing-and-deserializing-objects)
|
||||||
- [Converting string \<-\> xstring](#converting-string---xstring)
|
- [Converting string \<-\> xstring](#converting-string---xstring)
|
||||||
- [Compressing and Decompressing Binary Data](#compressing-and-decompressing-binary-data)
|
- [Compressing and Decompressing Binary Data](#compressing-and-decompressing-binary-data)
|
||||||
- [More Information](#more-information)
|
- [More Information](#more-information)
|
||||||
@@ -676,19 +676,110 @@ xco_cp_json=>data->from_string( json_created_xco )->apply( VALUE #(
|
|||||||
|
|
||||||
## Excursions
|
## Excursions
|
||||||
|
|
||||||
### Serializing and Deserializing Instances of Classes
|
### Serializing and Deserializing Objects
|
||||||
|
|
||||||
For serializing instances of classes, find more information [here](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenasxml_class_instances.htm) in the ABAP Keyword Documentation. The classes must implement the `IF_SERIALIZABLE_OBJECT` interface.
|
- To serialize and deserialize objects (i.e. instances of classes), you can use `CALL TRANSFORMATION` statements. As a prerequisite, the classes must implement the `IF_SERIALIZABLE_OBJECT` interface.
|
||||||
|
- Find more information and examples [here](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenasxml_class_instances.htm) in the ABAP Keyword Documentation.
|
||||||
|
|
||||||
Expand the following collapsible section to view the code of an example. To try it out, create a demo class named `zcl_some_class` and paste the code into it. After activation, choose *F9* in ADT to execute the class. This example is set up to display the results in the console.
|
|
||||||
|
Expand the following collapsible section to view the code of two simplified examples. To try them out, create a demo class named `zcl_some_class` and paste the code into it. After activation, choose *F9* in ADT to execute the class. The examples are set up to display output in the console.
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Expand to view the details</summary>
|
<summary>Expand to view the details</summary>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
|
|
||||||
When running the class, three instances of this class are created, and two instance attributes are assigned values for output purposes. The current UTC timestamp
|
- When the class runs, it creates three instances, and three instance attributes are assigned values for each instance: the current UTC timestamp, a random number, and a UUID.
|
||||||
and a random number are retrieved and assigned. Then, the instances are serialized.
|
- These instances are then serialized and subsequently deserialized.
|
||||||
The instances are deserialized again, and the instance attributes are accessed. Their values are stored in an internal table, which is then displayed.
|
- The instance attributes are accessed, and their values are stored in an internal table and displayed.
|
||||||
|
|
||||||
|
|
||||||
|
**Example 1:**
|
||||||
|
|
||||||
|
- The example class implements the `IF_SERIALIZABLE_OBJECT` interface, using the standard behavior to serialize and deserialize all instance attributes (i.e. the helper methods mentioned below are not implemented).
|
||||||
|
- The values of of all deserialized instance attributes are displayed.
|
||||||
|
|
||||||
|
```abap
|
||||||
|
CLASS zcl_some_class DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC .
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
INTERFACES: if_oo_adt_classrun,
|
||||||
|
if_serializable_object.
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
DATA timestamp TYPE utclong.
|
||||||
|
DATA random_number TYPE i.
|
||||||
|
DATA uuid TYPE sysuuid_x16.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS zcl_some_class IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD if_oo_adt_classrun~main.
|
||||||
|
|
||||||
|
DATA serialized_obj_tab TYPE string_table.
|
||||||
|
TYPES: BEGIN OF deserialized_obj_struc,
|
||||||
|
timestamp TYPE utclong,
|
||||||
|
random_number TYPE i,
|
||||||
|
uuid TYPE sysuuid_x16,
|
||||||
|
END OF deserialized_obj_struc.
|
||||||
|
DATA deserialized_obj_tab TYPE TABLE OF deserialized_obj_struc WITH EMPTY KEY.
|
||||||
|
|
||||||
|
"Creating objects, assigning values to instance attributes, and serializing objects
|
||||||
|
DO 3 TIMES.
|
||||||
|
DATA(oref) = NEW zcl_some_class( ).
|
||||||
|
oref->timestamp = utclong_current( ).
|
||||||
|
oref->random_number = cl_abap_random_int=>create( seed = cl_abap_random=>seed( )
|
||||||
|
min = 1
|
||||||
|
max = 100 )->get_next( ).
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
oref->uuid = cl_system_uuid=>create_uuid_x16_static( ) .
|
||||||
|
CATCH cx_uuid_error.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
DATA serialized_obj TYPE string.
|
||||||
|
CALL TRANSFORMATION id SOURCE obj = oref
|
||||||
|
RESULT XML serialized_obj.
|
||||||
|
|
||||||
|
APPEND serialized_obj TO serialized_obj_tab.
|
||||||
|
ENDDO.
|
||||||
|
|
||||||
|
"Deserializing objects
|
||||||
|
LOOP AT serialized_obj_tab INTO DATA(wa).
|
||||||
|
DATA deserialized_obj TYPE REF TO zcl_some_class.
|
||||||
|
CALL TRANSFORMATION id SOURCE XML wa
|
||||||
|
RESULT obj = deserialized_obj.
|
||||||
|
|
||||||
|
"Addressing instance attributes after deserialization
|
||||||
|
DATA(deserialized_timestamp) = deserialized_obj->timestamp.
|
||||||
|
DATA(deserialized_random_number) = deserialized_obj->random_number.
|
||||||
|
DATA(deserialized_uuid) = deserialized_obj->uuid.
|
||||||
|
|
||||||
|
"Adding deserialized instance attribute values to an internal table
|
||||||
|
APPEND VALUE #( timestamp = deserialized_timestamp
|
||||||
|
random_number = deserialized_random_number
|
||||||
|
uuid = deserialized_uuid
|
||||||
|
) TO deserialized_obj_tab.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
out->write( deserialized_obj_tab ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example 2:**
|
||||||
|
|
||||||
|
- The example class implements the `IF_SERIALIZABLE_OBJECT` interface, along with the `SERIALIZE_HELPER` and `DESERIALIZE_HELPER` methods.
|
||||||
|
- These methods allow you to modify the standard behavior. Both methods must be implemented together, or not at all. If neither is implemented, the standard behavior applies.
|
||||||
|
- The methods must be declared as private instance methods. The `SERIALIZE_HELPER` method only has output parameters, while `DESERIALIZE_HELPER` only has input parameters. Any parameter specified for the `SERIALIZE_HELPER` method must have an identically named and typed parameter in the `DESERIALIZE_HELPER` method.
|
||||||
|
- For example, you can implement these methods if you want to exclude certain attributes from (de)serialization.
|
||||||
|
- In the given example, one of the instance attributes is excluded from (de)serialization. As a result, the output only includes initial values for one of the attributes.
|
||||||
|
|
||||||
|
|
||||||
```abap
|
```abap
|
||||||
@@ -699,32 +790,19 @@ CLASS zcl_some_class DEFINITION
|
|||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
INTERFACES: if_oo_adt_classrun,
|
INTERFACES: if_oo_adt_classrun,
|
||||||
if_serializable_object.
|
if_serializable_object.
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
DATA timestamp TYPE utclong.
|
DATA timestamp TYPE utclong.
|
||||||
DATA random_number TYPE i.
|
DATA random_number TYPE i.
|
||||||
DATA serialized_obj_tab TYPE TABLE OF xstring WITH EMPTY KEY.
|
DATA uuid TYPE sysuuid_x16.
|
||||||
|
|
||||||
TYPES: BEGIN OF deserialized_obj_struc,
|
|
||||||
timestamp TYPE utclong,
|
|
||||||
random_number TYPE i,
|
|
||||||
END OF deserialized_obj_struc.
|
|
||||||
DATA deserialized_obj_tab TYPE TABLE OF deserialized_obj_struc WITH EMPTY KEY.
|
|
||||||
|
|
||||||
METHODS:
|
METHODS:
|
||||||
"The following method can only have output parameters.
|
|
||||||
"For each output parameter of the serialize_helper method, you must specify
|
|
||||||
"an identically named input parameter of the deserialize_helper method
|
|
||||||
"with the same type.
|
|
||||||
"The example uses two instance attributes that are specified in the private
|
|
||||||
"visibility section.
|
|
||||||
serialize_helper EXPORTING timestamp TYPE utclong
|
serialize_helper EXPORTING timestamp TYPE utclong
|
||||||
random_number TYPE i,
|
random_number TYPE i,
|
||||||
"This method can only have input parameters.
|
|
||||||
deserialize_helper IMPORTING timestamp TYPE utclong
|
deserialize_helper IMPORTING timestamp TYPE utclong
|
||||||
random_number TYPE i.
|
random_number TYPE i.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
@@ -733,11 +811,15 @@ CLASS zcl_some_class IMPLEMENTATION.
|
|||||||
|
|
||||||
METHOD if_oo_adt_classrun~main.
|
METHOD if_oo_adt_classrun~main.
|
||||||
|
|
||||||
"For demonstration purposes, 3 instances of the class are created and serialized.
|
DATA serialized_obj_tab TYPE string_table.
|
||||||
"Two instance attributes are assigned values for output purposes (the current UTC timestamp
|
TYPES: BEGIN OF deserialized_obj_struc,
|
||||||
"and a random number are retrieved and assigned). The assigned values are also serialized and
|
timestamp TYPE utclong,
|
||||||
"can be addressed after deserialization. The serialized instances of the class are added to an
|
random_number TYPE i,
|
||||||
"internal table which is processed below.
|
uuid TYPE sysuuid_x16,
|
||||||
|
END OF deserialized_obj_struc.
|
||||||
|
DATA deserialized_obj_tab TYPE TABLE OF deserialized_obj_struc WITH EMPTY KEY.
|
||||||
|
|
||||||
|
"Creating objects, assigning values to instance attributes, and serializing objects
|
||||||
DO 3 TIMES.
|
DO 3 TIMES.
|
||||||
DATA(oref) = NEW zcl_some_class( ).
|
DATA(oref) = NEW zcl_some_class( ).
|
||||||
oref->timestamp = utclong_current( ).
|
oref->timestamp = utclong_current( ).
|
||||||
@@ -745,47 +827,51 @@ CLASS zcl_some_class IMPLEMENTATION.
|
|||||||
min = 1
|
min = 1
|
||||||
max = 100 )->get_next( ).
|
max = 100 )->get_next( ).
|
||||||
|
|
||||||
DATA serialized_obj TYPE xstring.
|
TRY.
|
||||||
|
oref->uuid = cl_system_uuid=>create_uuid_x16_static( ) .
|
||||||
|
CATCH cx_uuid_error.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
DATA serialized_obj TYPE string.
|
||||||
CALL TRANSFORMATION id SOURCE obj = oref
|
CALL TRANSFORMATION id SOURCE obj = oref
|
||||||
RESULT XML serialized_obj.
|
RESULT XML serialized_obj.
|
||||||
|
|
||||||
APPEND serialized_obj TO serialized_obj_tab.
|
APPEND serialized_obj TO serialized_obj_tab.
|
||||||
ENDDO.
|
ENDDO.
|
||||||
|
|
||||||
"Deserializing instances of classes from above
|
"Deserializing objects
|
||||||
"For output purposes, the values of the instance attributes are added to an
|
|
||||||
"internal table.
|
|
||||||
LOOP AT serialized_obj_tab INTO DATA(wa).
|
LOOP AT serialized_obj_tab INTO DATA(wa).
|
||||||
DATA deserialized_oref TYPE REF TO zcl_some_class.
|
DATA deserialized_obj TYPE REF TO zcl_some_class.
|
||||||
CALL TRANSFORMATION id SOURCE XML wa
|
CALL TRANSFORMATION id SOURCE XML wa
|
||||||
RESULT obj = deserialized_oref.
|
RESULT obj = deserialized_obj.
|
||||||
|
|
||||||
"Addressing instance attributes after deserialization
|
"Addressing instance attributes after deserialization
|
||||||
DATA(deserialized_timestamp) = deserialized_oref->timestamp.
|
DATA(deserialized_timestamp) = deserialized_obj->timestamp.
|
||||||
DATA(deserialized_random_number) = deserialized_oref->random_number.
|
DATA(deserialized_random_number) = deserialized_obj->random_number.
|
||||||
|
DATA(deserialized_uuid) = deserialized_obj->uuid.
|
||||||
|
|
||||||
|
"Adding deserialized instance attribute values to an internal table
|
||||||
APPEND VALUE #( timestamp = deserialized_timestamp
|
APPEND VALUE #( timestamp = deserialized_timestamp
|
||||||
random_number = deserialized_random_number
|
random_number = deserialized_random_number
|
||||||
|
uuid = deserialized_uuid
|
||||||
) TO deserialized_obj_tab.
|
) TO deserialized_obj_tab.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
"The output is intended to visualize the deserialized instance of a class
|
|
||||||
"and the values of its instance attributes that should differ from line to
|
|
||||||
"line.
|
|
||||||
out->write( deserialized_obj_tab ).
|
out->write( deserialized_obj_tab ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD serialize_helper.
|
||||||
|
timestamp = me->timestamp.
|
||||||
|
random_number = me->random_number.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD deserialize_helper.
|
METHOD deserialize_helper.
|
||||||
me->timestamp = timestamp.
|
me->timestamp = timestamp.
|
||||||
me->random_number = random_number.
|
me->random_number = random_number.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD serialize_helper.
|
|
||||||
timestamp = me->timestamp.
|
|
||||||
random_number = me->random_number.
|
|
||||||
ENDMETHOD.
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|||||||
@@ -841,7 +841,7 @@ ENDIF.
|
|||||||
## Time and Date
|
## Time and Date
|
||||||
|
|
||||||
> **💡 Note**<br>
|
> **💡 Note**<br>
|
||||||
> In [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), do not use the date and time-related system fields such as `sy-datum` and `sy-uzeit`, and others. User-related time and date values (such as `sy-timlo` and `sy-datlo`) can be retrieved using the XCO library. For code snippets, see the [Date, Time, and Time Stamp](23_Date_and_Time.md) cheat sheet.
|
> In [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), do not use the date and time-related system fields such as `sy-datum` and `sy-uzeit`, and others. User-related time and date values can be retrieved using the XCO library. For code snippets, see the [Date, Time, and Time Stamp](23_Date_and_Time.md) cheat sheet.
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -1363,7 +1363,7 @@ CLASS zcl_demo_test IMPLEMENTATION.
|
|||||||
out->write( comp_res3 ).
|
out->write( comp_res3 ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
CATCH cx_abap_diff INTO DATA(error3).
|
CATCH cx_abap_diff INTO DATA(error3).
|
||||||
out->write( error2->get_text( ) ).
|
out->write( error3->get_text( ) ).
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|||||||
Reference in New Issue
Block a user