Skip to content

Commit db27ef3

Browse files
authored
Merge pull request #35 from abap2UI5-renamed/create-pull-request/patch
Automatic Update
2 parents 16d384e + 2e0c14a commit db27ef3

25 files changed

+833
-11
lines changed
+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
CLASS zabap2ui5_cl_srt_aunit DEFINITION
2+
PUBLIC
3+
FOR TESTING
4+
FINAL
5+
CREATE PUBLIC .
6+
7+
PUBLIC SECTION.
8+
CLASS-METHODS serialize_deserialize IMPORTING variable TYPE any.
9+
PROTECTED SECTION.
10+
PRIVATE SECTION.
11+
ENDCLASS.
12+
13+
14+
15+
CLASS zabap2ui5_cl_srt_aunit IMPLEMENTATION.
16+
17+
METHOD serialize_deserialize.
18+
" Serialize: both type and value at the same time.
19+
FIELD-SYMBOLS <variable1> TYPE any.
20+
DATA rtti1 TYPE REF TO cl_abap_typedescr.
21+
DATA srtti1 TYPE REF TO zabap2ui5_cl_srt_typedescr.
22+
DATA xstring TYPE xstring.
23+
DATA srtti2 TYPE REF TO zabap2ui5_cl_srt_typedescr.
24+
DATA temp1 TYPE REF TO cl_abap_datadescr.
25+
DATA rtti2 LIKE temp1.
26+
DATA ref_variable2 TYPE REF TO data.
27+
FIELD-SYMBOLS <variable2> TYPE any.
28+
ASSIGN variable TO <variable1>.
29+
30+
rtti1 = cl_abap_typedescr=>describe_by_data( <variable1> ).
31+
32+
srtti1 = zabap2ui5_cl_srt_typedescr=>create_by_data_object( <variable1> ).
33+
34+
CALL TRANSFORMATION id
35+
SOURCE srtti = srtti1
36+
dobj = <variable1>
37+
RESULT XML xstring
38+
OPTIONS data_refs = 'heap-or-create'.
39+
40+
" Deserialize: (1) the type, to create the variable (2) then the value.
41+
42+
CALL TRANSFORMATION id
43+
SOURCE XML xstring
44+
RESULT srtti = srtti2.
45+
46+
temp1 ?= srtti2->get_rtti( ).
47+
48+
rtti2 = temp1.
49+
50+
CREATE DATA ref_variable2 TYPE HANDLE rtti2.
51+
52+
ASSIGN ref_variable2->* TO <variable2>.
53+
CALL TRANSFORMATION id
54+
SOURCE XML xstring
55+
RESULT dobj = <variable2>.
56+
57+
cl_abap_unit_assert=>assert_equals( exp = rtti1 act = rtti2 ).
58+
cl_abap_unit_assert=>assert_equals( exp = <variable1> act = <variable2> ).
59+
ENDMETHOD.
60+
61+
ENDCLASS.
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<VSEOCLASS>
6+
<CLSNAME>ZABAP2UI5_CL_SRT_AUNIT</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>Test class</DESCRIPT>
9+
<CATEGORY>05</CATEGORY>
10+
<STATE>1</STATE>
11+
<CLSCCINCL>X</CLSCCINCL>
12+
<FIXPT>X</FIXPT>
13+
<UNICODE>X</UNICODE>
14+
</VSEOCLASS>
15+
</asx:values>
16+
</asx:abap>
17+
</abapGit>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"! <p class="shorttext synchronized" lang="en">Serializable RTTI class</p>
2+
CLASS zabap2ui5_cl_srt_classdescr DEFINITION
3+
PUBLIC
4+
INHERITING FROM zabap2ui5_cl_srt_objectdescr
5+
CREATE PUBLIC.
6+
7+
PUBLIC SECTION.
8+
9+
DATA class_kind LIKE cl_abap_classdescr=>class_kind.
10+
DATA create_visibility LIKE cl_abap_classdescr=>create_visibility.
11+
12+
METHODS constructor
13+
IMPORTING
14+
!rtti TYPE REF TO cl_abap_classdescr.
15+
PROTECTED SECTION.
16+
PRIVATE SECTION.
17+
ENDCLASS.
18+
19+
20+
CLASS zabap2ui5_cl_srt_classdescr IMPLEMENTATION.
21+
METHOD constructor.
22+
super->constructor( rtti ).
23+
class_kind = rtti->class_kind.
24+
create_visibility = rtti->create_visibility.
25+
ENDMETHOD.
26+
ENDCLASS.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<VSEOCLASS>
6+
<CLSNAME>ZABAP2UI5_CL_SRT_CLASSDESCR</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>Serializable RTTI class</DESCRIPT>
9+
<STATE>1</STATE>
10+
<CLSCCINCL>X</CLSCCINCL>
11+
<FIXPT>X</FIXPT>
12+
<UNICODE>X</UNICODE>
13+
</VSEOCLASS>
14+
</asx:values>
15+
</asx:abap>
16+
</abapGit>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"! <p class="shorttext synchronized" lang="en">Serializable RTTI complex type</p>
2+
CLASS zabap2ui5_cl_srt_complexdescr DEFINITION
3+
PUBLIC
4+
INHERITING FROM zabap2ui5_cl_srt_datadescr
5+
CREATE PUBLIC .
6+
7+
PUBLIC SECTION.
8+
PROTECTED SECTION.
9+
PRIVATE SECTION.
10+
ENDCLASS.
11+
12+
13+
14+
CLASS zabap2ui5_cl_srt_complexdescr IMPLEMENTATION.
15+
ENDCLASS.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<VSEOCLASS>
6+
<CLSNAME>ZABAP2UI5_CL_SRT_COMPLEXDESCR</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>Serializable RTTI complex type</DESCRIPT>
9+
<STATE>1</STATE>
10+
<CLSCCINCL>X</CLSCCINCL>
11+
<FIXPT>X</FIXPT>
12+
<UNICODE>X</UNICODE>
13+
</VSEOCLASS>
14+
</asx:values>
15+
</asx:abap>
16+
</abapGit>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"! <p class="shorttext synchronized" lang="en">Serializable RTTI data object</p>
2+
CLASS zabap2ui5_cl_srt_datadescr DEFINITION
3+
PUBLIC
4+
INHERITING FROM zabap2ui5_cl_srt_typedescr
5+
CREATE PUBLIC .
6+
7+
PUBLIC SECTION.
8+
PROTECTED SECTION.
9+
PRIVATE SECTION.
10+
ENDCLASS.
11+
12+
13+
14+
CLASS zabap2ui5_cl_srt_datadescr IMPLEMENTATION.
15+
ENDCLASS.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<VSEOCLASS>
6+
<CLSNAME>ZABAP2UI5_CL_SRT_DATADESCR</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>Serializable RTTI data object</DESCRIPT>
9+
<STATE>1</STATE>
10+
<CLSCCINCL>X</CLSCCINCL>
11+
<FIXPT>X</FIXPT>
12+
<UNICODE>X</UNICODE>
13+
</VSEOCLASS>
14+
</asx:values>
15+
</asx:abap>
16+
</abapGit>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
"! <p class="shorttext synchronized" lang="en">Serializable RTTI elementary type</p>
2+
CLASS zabap2ui5_cl_srt_elemdescr DEFINITION
3+
PUBLIC
4+
INHERITING FROM zabap2ui5_cl_srt_datadescr
5+
CREATE PUBLIC.
6+
7+
PUBLIC SECTION.
8+
9+
DATA edit_mask LIKE cl_abap_elemdescr=>edit_mask.
10+
DATA help_id LIKE cl_abap_elemdescr=>help_id.
11+
DATA output_length LIKE cl_abap_elemdescr=>output_length.
12+
13+
METHODS constructor
14+
IMPORTING
15+
!rtti TYPE REF TO cl_abap_elemdescr.
16+
17+
METHODS get_rtti
18+
REDEFINITION.
19+
PROTECTED SECTION.
20+
METHODS get_rtti_by_type_kind
21+
IMPORTING
22+
i_type_kind LIKE cl_abap_typedescr=>type_kind
23+
RETURNING
24+
VALUE(rtti) TYPE REF TO cl_abap_typedescr.
25+
PRIVATE SECTION.
26+
ENDCLASS.
27+
28+
29+
30+
CLASS zabap2ui5_cl_srt_elemdescr IMPLEMENTATION.
31+
32+
33+
METHOD constructor.
34+
super->constructor( rtti ).
35+
36+
edit_mask = rtti->edit_mask.
37+
help_id = rtti->help_id.
38+
output_length = rtti->output_length.
39+
ENDMETHOD.
40+
41+
42+
METHOD get_rtti.
43+
rtti = super->get_rtti( ).
44+
IF rtti IS BOUND.
45+
RETURN.
46+
ENDIF.
47+
48+
IF is_ddic_type = abap_true
49+
AND technical_type = abap_false.
50+
" If XML transformations are used, they may be based on
51+
" the data element, for instance XSDBOOLEAN will convert "true"
52+
" into "X" during deserialization.
53+
rtti = cl_abap_typedescr=>describe_by_name( absolute_name ).
54+
ELSE.
55+
rtti = get_rtti_by_type_kind( type_kind ).
56+
ENDIF.
57+
ENDMETHOD.
58+
59+
60+
METHOD get_rtti_by_type_kind.
61+
DATA l_length TYPE i.
62+
63+
CASE i_type_kind.
64+
WHEN cl_abap_typedescr=>typekind_num.
65+
l_length = length / cl_abap_char_utilities=>charsize.
66+
rtti = cl_abap_elemdescr=>get_n( l_length ).
67+
WHEN cl_abap_typedescr=>typekind_char.
68+
l_length = length / cl_abap_char_utilities=>charsize.
69+
rtti = cl_abap_elemdescr=>get_c( l_length ).
70+
WHEN cl_abap_typedescr=>typekind_string.
71+
rtti = cl_abap_elemdescr=>get_string( ).
72+
WHEN cl_abap_typedescr=>typekind_xstring.
73+
rtti = cl_abap_elemdescr=>get_xstring( ).
74+
WHEN cl_abap_typedescr=>typekind_int.
75+
rtti = cl_abap_elemdescr=>get_i( ).
76+
WHEN cl_abap_typedescr=>typekind_float.
77+
rtti = cl_abap_elemdescr=>get_f( ).
78+
WHEN cl_abap_typedescr=>typekind_date.
79+
rtti = cl_abap_elemdescr=>get_d( ).
80+
WHEN cl_abap_typedescr=>typekind_time.
81+
rtti = cl_abap_elemdescr=>get_t( ).
82+
WHEN cl_abap_typedescr=>typekind_hex.
83+
rtti = cl_abap_elemdescr=>get_x( length ).
84+
WHEN cl_abap_typedescr=>typekind_packed.
85+
rtti = cl_abap_elemdescr=>get_p( p_length = length
86+
p_decimals = decimals ).
87+
WHEN cl_abap_typedescr=>typekind_decfloat16.
88+
rtti = cl_abap_elemdescr=>get_decfloat16( ).
89+
WHEN cl_abap_typedescr=>typekind_decfloat34.
90+
rtti = cl_abap_elemdescr=>get_decfloat34( ).
91+
WHEN OTHERS.
92+
RAISE EXCEPTION TYPE zabap2ui5_cx_srt.
93+
ENDCASE.
94+
ENDMETHOD.
95+
ENDCLASS.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<VSEOCLASS>
6+
<CLSNAME>ZABAP2UI5_CL_SRT_ELEMDESCR</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>Serializable RTTI elementary type</DESCRIPT>
9+
<STATE>1</STATE>
10+
<CLSCCINCL>X</CLSCCINCL>
11+
<FIXPT>X</FIXPT>
12+
<UNICODE>X</UNICODE>
13+
</VSEOCLASS>
14+
</asx:values>
15+
</asx:abap>
16+
</abapGit>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"! <p class="shorttext synchronized" lang="en">Serializable RTTI interface</p>
2+
CLASS zabap2ui5_cl_srt_intfdescr DEFINITION
3+
PUBLIC
4+
INHERITING FROM zabap2ui5_cl_srt_objectdescr
5+
CREATE PUBLIC.
6+
7+
PUBLIC SECTION.
8+
9+
DATA intf_kind LIKE cl_abap_intfdescr=>intf_kind.
10+
11+
METHODS constructor
12+
IMPORTING
13+
!rtti TYPE REF TO cl_abap_intfdescr.
14+
PROTECTED SECTION.
15+
PRIVATE SECTION.
16+
ENDCLASS.
17+
18+
19+
CLASS zabap2ui5_cl_srt_intfdescr IMPLEMENTATION.
20+
METHOD constructor.
21+
super->constructor( rtti ).
22+
intf_kind = rtti->intf_kind.
23+
ENDMETHOD.
24+
ENDCLASS.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<VSEOCLASS>
6+
<CLSNAME>ZABAP2UI5_CL_SRT_INTFDESCR</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>Serializable RTTI interface</DESCRIPT>
9+
<STATE>1</STATE>
10+
<CLSCCINCL>X</CLSCCINCL>
11+
<FIXPT>X</FIXPT>
12+
<UNICODE>X</UNICODE>
13+
</VSEOCLASS>
14+
</asx:values>
15+
</asx:abap>
16+
</abapGit>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"! <p class="shorttext synchronized" lang="en">Serializable RTTI object type</p>
2+
class zabap2ui5_cl_srt_objectdescr definition
3+
public
4+
inheriting from zabap2ui5_cl_srt_typedescr
5+
create public .
6+
7+
public section.
8+
9+
data INTERFACES like CL_ABAP_OBJECTDESCR=>INTERFACES .
10+
data TYPES like CL_ABAP_OBJECTDESCR=>TYPES .
11+
data ATTRIBUTES like CL_ABAP_OBJECTDESCR=>ATTRIBUTES .
12+
data METHODS like CL_ABAP_OBJECTDESCR=>METHODS .
13+
data EVENTS like CL_ABAP_OBJECTDESCR=>EVENTS .
14+
15+
methods CONSTRUCTOR
16+
importing
17+
!RTTI type ref to CL_ABAP_OBJECTDESCR .
18+
PROTECTED SECTION.
19+
PRIVATE SECTION.
20+
ENDCLASS.
21+
22+
23+
24+
CLASS zabap2ui5_cl_srt_objectdescr IMPLEMENTATION.
25+
26+
27+
METHOD constructor.
28+
super->constructor( rtti ).
29+
30+
interfaces = rtti->interfaces.
31+
types = rtti->types.
32+
attributes = rtti->attributes.
33+
methods = rtti->methods.
34+
events = rtti->events.
35+
36+
READ TABLE interfaces WITH KEY name = 'IF_SERIALIZABLE_OBJECT' TRANSPORTING NO FIELDS.
37+
IF sy-subrc <> 0.
38+
not_serializable = abap_true.
39+
ENDIF.
40+
ENDMETHOD.
41+
ENDCLASS.

0 commit comments

Comments
 (0)