mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 02:58:20 +08:00
srtti added (#1720)
* fix (#1718) (#1719) * add srtti * update * Create srtti_mirror.yaml * Update srtti_mirror.yaml * update github actions * update * update
This commit is contained in:
parent
dc2d98dc9a
commit
9392449034
|
@ -25,8 +25,8 @@ jobs:
|
|||
run: |
|
||||
git clone https://github.com/abap2UI5/ajson_mirror.git
|
||||
ls -l
|
||||
rm src/01/00/01/z*
|
||||
cp ajson_mirror/src/z* src/01/00/01/
|
||||
rm src/00/01/z*
|
||||
cp ajson_mirror/src/z* src/00/01/
|
||||
rm -rf ajson_mirror
|
||||
git status
|
||||
- name: Open PR
|
43
.github/workflows/mirror_srtti.yaml
vendored
Normal file
43
.github/workflows/mirror_srtti.yaml
vendored
Normal file
|
@ -0,0 +1,43 @@
|
|||
name: ajson mirror
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 0 * * 1'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
pr_ajson_changes:
|
||||
# Origin repo only
|
||||
permissions:
|
||||
contents: write # for peter-evans/create-pull-request to create branch
|
||||
pull-requests: write # for peter-evans/create-pull-request to create a PR
|
||||
if: github.repository == 'abap2UI5/abap2UI5'
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
- name: run
|
||||
run: |
|
||||
git clone https://github.com/abap2UI5/srtti_mirror.git
|
||||
ls -l
|
||||
rm src/00/02/z*
|
||||
cp srtti_mirror/src/z* src/00/02/
|
||||
rm -rf srtti_mirror
|
||||
git status
|
||||
- name: Open PR
|
||||
uses: peter-evans/create-pull-request@v3
|
||||
with:
|
||||
title: ajson, Automatic Update
|
||||
branch: automatic/ajson
|
||||
body: |
|
||||
Automatic update from mirror
|
||||
https://github.com/abap2UI5/ajson_mirror
|
||||
|
||||
Make manual change to trigger CI
|
||||
|
||||
Note: manual changes might be overwritten when the branch updates, so keep changes small, and merge fast
|
61
src/00/02/z2ui5_cl_srt_aunit.clas.abap
Normal file
61
src/00/02/z2ui5_cl_srt_aunit.clas.abap
Normal file
|
@ -0,0 +1,61 @@
|
|||
CLASS z2ui5_cl_srt_aunit DEFINITION
|
||||
PUBLIC
|
||||
FOR TESTING
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
CLASS-METHODS serialize_deserialize IMPORTING variable TYPE any.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_srt_aunit IMPLEMENTATION.
|
||||
|
||||
METHOD serialize_deserialize.
|
||||
" Serialize: both type and value at the same time.
|
||||
FIELD-SYMBOLS <variable1> TYPE any.
|
||||
DATA rtti1 TYPE REF TO cl_abap_typedescr.
|
||||
DATA srtti1 TYPE REF TO z2ui5_cl_srt_typedescr.
|
||||
DATA xstring TYPE xstring.
|
||||
DATA srtti2 TYPE REF TO z2ui5_cl_srt_typedescr.
|
||||
DATA temp1 TYPE REF TO cl_abap_datadescr.
|
||||
DATA rtti2 LIKE temp1.
|
||||
DATA ref_variable2 TYPE REF TO data.
|
||||
FIELD-SYMBOLS <variable2> TYPE any.
|
||||
ASSIGN variable TO <variable1>.
|
||||
|
||||
rtti1 = cl_abap_typedescr=>describe_by_data( <variable1> ).
|
||||
|
||||
srtti1 = z2ui5_cl_srt_typedescr=>create_by_data_object( <variable1> ).
|
||||
|
||||
CALL TRANSFORMATION id
|
||||
SOURCE srtti = srtti1
|
||||
dobj = <variable1>
|
||||
RESULT XML xstring
|
||||
OPTIONS data_refs = 'heap-or-create'.
|
||||
|
||||
" Deserialize: (1) the type, to create the variable (2) then the value.
|
||||
|
||||
CALL TRANSFORMATION id
|
||||
SOURCE XML xstring
|
||||
RESULT srtti = srtti2.
|
||||
|
||||
temp1 ?= srtti2->get_rtti( ).
|
||||
|
||||
rtti2 = temp1.
|
||||
|
||||
CREATE DATA ref_variable2 TYPE HANDLE rtti2.
|
||||
|
||||
ASSIGN ref_variable2->* TO <variable2>.
|
||||
CALL TRANSFORMATION id
|
||||
SOURCE XML xstring
|
||||
RESULT dobj = <variable2>.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = rtti1 act = rtti2 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = <variable1> act = <variable2> ).
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
17
src/00/02/z2ui5_cl_srt_aunit.clas.xml
Normal file
17
src/00/02/z2ui5_cl_srt_aunit.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_SRT_AUNIT</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Test class</DESCRIPT>
|
||||
<CATEGORY>05</CATEGORY>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
26
src/00/02/z2ui5_cl_srt_classdescr.clas.abap
Normal file
26
src/00/02/z2ui5_cl_srt_classdescr.clas.abap
Normal file
|
@ -0,0 +1,26 @@
|
|||
"! <p class="shorttext synchronized" lang="en">Serializable RTTI class</p>
|
||||
CLASS z2ui5_cl_srt_classdescr DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM z2ui5_cl_srt_objectdescr
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
DATA class_kind LIKE cl_abap_classdescr=>class_kind.
|
||||
DATA create_visibility LIKE cl_abap_classdescr=>create_visibility.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!rtti TYPE REF TO cl_abap_classdescr.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS z2ui5_cl_srt_classdescr IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
super->constructor( rtti ).
|
||||
class_kind = rtti->class_kind.
|
||||
create_visibility = rtti->create_visibility.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/00/02/z2ui5_cl_srt_classdescr.clas.xml
Normal file
16
src/00/02/z2ui5_cl_srt_classdescr.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_SRT_CLASSDESCR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Serializable RTTI class</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
15
src/00/02/z2ui5_cl_srt_complexdescr.clas.abap
Normal file
15
src/00/02/z2ui5_cl_srt_complexdescr.clas.abap
Normal file
|
@ -0,0 +1,15 @@
|
|||
"! <p class="shorttext synchronized" lang="en">Serializable RTTI complex type</p>
|
||||
CLASS z2ui5_cl_srt_complexdescr DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM z2ui5_cl_srt_datadescr
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_srt_complexdescr IMPLEMENTATION.
|
||||
ENDCLASS.
|
16
src/00/02/z2ui5_cl_srt_complexdescr.clas.xml
Normal file
16
src/00/02/z2ui5_cl_srt_complexdescr.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_SRT_COMPLEXDESCR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Serializable RTTI complex type</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
15
src/00/02/z2ui5_cl_srt_datadescr.clas.abap
Normal file
15
src/00/02/z2ui5_cl_srt_datadescr.clas.abap
Normal file
|
@ -0,0 +1,15 @@
|
|||
"! <p class="shorttext synchronized" lang="en">Serializable RTTI data object</p>
|
||||
CLASS z2ui5_cl_srt_datadescr DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM z2ui5_cl_srt_typedescr
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_srt_datadescr IMPLEMENTATION.
|
||||
ENDCLASS.
|
16
src/00/02/z2ui5_cl_srt_datadescr.clas.xml
Normal file
16
src/00/02/z2ui5_cl_srt_datadescr.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_SRT_DATADESCR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Serializable RTTI data object</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
95
src/00/02/z2ui5_cl_srt_elemdescr.clas.abap
Normal file
95
src/00/02/z2ui5_cl_srt_elemdescr.clas.abap
Normal file
|
@ -0,0 +1,95 @@
|
|||
"! <p class="shorttext synchronized" lang="en">Serializable RTTI elementary type</p>
|
||||
CLASS z2ui5_cl_srt_elemdescr DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM z2ui5_cl_srt_datadescr
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
DATA edit_mask LIKE cl_abap_elemdescr=>edit_mask.
|
||||
DATA help_id LIKE cl_abap_elemdescr=>help_id.
|
||||
DATA output_length LIKE cl_abap_elemdescr=>output_length.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!rtti TYPE REF TO cl_abap_elemdescr.
|
||||
|
||||
METHODS get_rtti
|
||||
REDEFINITION.
|
||||
PROTECTED SECTION.
|
||||
METHODS get_rtti_by_type_kind
|
||||
IMPORTING
|
||||
i_type_kind LIKE cl_abap_typedescr=>type_kind
|
||||
RETURNING
|
||||
VALUE(rtti) TYPE REF TO cl_abap_typedescr.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_srt_elemdescr IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
super->constructor( rtti ).
|
||||
|
||||
edit_mask = rtti->edit_mask.
|
||||
help_id = rtti->help_id.
|
||||
output_length = rtti->output_length.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_rtti.
|
||||
rtti = super->get_rtti( ).
|
||||
IF rtti IS BOUND.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF is_ddic_type = abap_true
|
||||
AND technical_type = abap_false.
|
||||
" If XML transformations are used, they may be based on
|
||||
" the data element, for instance XSDBOOLEAN will convert "true"
|
||||
" into "X" during deserialization.
|
||||
rtti = cl_abap_typedescr=>describe_by_name( absolute_name ).
|
||||
ELSE.
|
||||
rtti = get_rtti_by_type_kind( type_kind ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_rtti_by_type_kind.
|
||||
DATA l_length TYPE i.
|
||||
|
||||
CASE i_type_kind.
|
||||
WHEN cl_abap_typedescr=>typekind_num.
|
||||
l_length = length / cl_abap_char_utilities=>charsize.
|
||||
rtti = cl_abap_elemdescr=>get_n( l_length ).
|
||||
WHEN cl_abap_typedescr=>typekind_char.
|
||||
l_length = length / cl_abap_char_utilities=>charsize.
|
||||
rtti = cl_abap_elemdescr=>get_c( l_length ).
|
||||
WHEN cl_abap_typedescr=>typekind_string.
|
||||
rtti = cl_abap_elemdescr=>get_string( ).
|
||||
WHEN cl_abap_typedescr=>typekind_xstring.
|
||||
rtti = cl_abap_elemdescr=>get_xstring( ).
|
||||
WHEN cl_abap_typedescr=>typekind_int.
|
||||
rtti = cl_abap_elemdescr=>get_i( ).
|
||||
WHEN cl_abap_typedescr=>typekind_float.
|
||||
rtti = cl_abap_elemdescr=>get_f( ).
|
||||
WHEN cl_abap_typedescr=>typekind_date.
|
||||
rtti = cl_abap_elemdescr=>get_d( ).
|
||||
WHEN cl_abap_typedescr=>typekind_time.
|
||||
rtti = cl_abap_elemdescr=>get_t( ).
|
||||
WHEN cl_abap_typedescr=>typekind_hex.
|
||||
rtti = cl_abap_elemdescr=>get_x( length ).
|
||||
WHEN cl_abap_typedescr=>typekind_packed.
|
||||
rtti = cl_abap_elemdescr=>get_p( p_length = length
|
||||
p_decimals = decimals ).
|
||||
WHEN cl_abap_typedescr=>typekind_decfloat16.
|
||||
rtti = cl_abap_elemdescr=>get_decfloat16( ).
|
||||
WHEN cl_abap_typedescr=>typekind_decfloat34.
|
||||
rtti = cl_abap_elemdescr=>get_decfloat34( ).
|
||||
WHEN OTHERS.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_srt.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
17
src/00/02/z2ui5_cl_srt_elemdescr.clas.xml
Normal file
17
src/00/02/z2ui5_cl_srt_elemdescr.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_SRT_ELEMDESCR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Serializable RTTI elementary type</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
24
src/00/02/z2ui5_cl_srt_intfdescr.clas.abap
Normal file
24
src/00/02/z2ui5_cl_srt_intfdescr.clas.abap
Normal file
|
@ -0,0 +1,24 @@
|
|||
"! <p class="shorttext synchronized" lang="en">Serializable RTTI interface</p>
|
||||
CLASS z2ui5_cl_srt_intfdescr DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM z2ui5_cl_srt_objectdescr
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
DATA intf_kind LIKE cl_abap_intfdescr=>intf_kind.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!rtti TYPE REF TO cl_abap_intfdescr.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS z2ui5_cl_srt_intfdescr IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
super->constructor( rtti ).
|
||||
intf_kind = rtti->intf_kind.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/00/02/z2ui5_cl_srt_intfdescr.clas.xml
Normal file
16
src/00/02/z2ui5_cl_srt_intfdescr.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_SRT_INTFDESCR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Serializable RTTI interface</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
41
src/00/02/z2ui5_cl_srt_objectdescr.clas.abap
Normal file
41
src/00/02/z2ui5_cl_srt_objectdescr.clas.abap
Normal file
|
@ -0,0 +1,41 @@
|
|||
"! <p class="shorttext synchronized" lang="en">Serializable RTTI object type</p>
|
||||
class z2ui5_cl_srt_objectdescr definition
|
||||
public
|
||||
inheriting from z2ui5_cl_srt_typedescr
|
||||
create public .
|
||||
|
||||
public section.
|
||||
|
||||
data INTERFACES like CL_ABAP_OBJECTDESCR=>INTERFACES .
|
||||
data TYPES like CL_ABAP_OBJECTDESCR=>TYPES .
|
||||
data ATTRIBUTES like CL_ABAP_OBJECTDESCR=>ATTRIBUTES .
|
||||
data METHODS like CL_ABAP_OBJECTDESCR=>METHODS .
|
||||
data EVENTS like CL_ABAP_OBJECTDESCR=>EVENTS .
|
||||
|
||||
methods CONSTRUCTOR
|
||||
importing
|
||||
!RTTI type ref to CL_ABAP_OBJECTDESCR .
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_srt_objectdescr IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
super->constructor( rtti ).
|
||||
|
||||
interfaces = rtti->interfaces.
|
||||
types = rtti->types.
|
||||
attributes = rtti->attributes.
|
||||
methods = rtti->methods.
|
||||
events = rtti->events.
|
||||
|
||||
READ TABLE interfaces WITH KEY name = 'IF_SERIALIZABLE_OBJECT' TRANSPORTING NO FIELDS.
|
||||
IF sy-subrc <> 0.
|
||||
not_serializable = abap_true.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/00/02/z2ui5_cl_srt_objectdescr.clas.xml
Normal file
16
src/00/02/z2ui5_cl_srt_objectdescr.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_SRT_OBJECTDESCR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Serializable RTTI object type</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
42
src/00/02/z2ui5_cl_srt_refdescr.clas.abap
Normal file
42
src/00/02/z2ui5_cl_srt_refdescr.clas.abap
Normal file
|
@ -0,0 +1,42 @@
|
|||
"! <p class="shorttext synchronized" lang="en">Serializable RTTI reference</p>
|
||||
CLASS z2ui5_cl_srt_refdescr DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM z2ui5_cl_srt_datadescr
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
DATA referenced_type TYPE REF TO z2ui5_cl_srt_typedescr.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!rtti TYPE REF TO cl_abap_refdescr.
|
||||
|
||||
METHODS get_rtti
|
||||
REDEFINITION.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS z2ui5_cl_srt_refdescr IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
super->constructor( rtti ).
|
||||
CREATE OBJECT referenced_type TYPE z2ui5_cl_srt_typedescr
|
||||
EXPORTING rtti = rtti->get_referenced_type( ).
|
||||
IF referenced_type->not_serializable = abap_true.
|
||||
not_serializable = abap_true.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_rtti.
|
||||
IF referenced_type->type_kind = cl_abap_typedescr=>typekind_data.
|
||||
rtti = cl_abap_refdescr=>get_ref_to_data( ).
|
||||
ELSEIF referenced_type->absolute_name = '\CLASS=OBJECT'.
|
||||
rtti = cl_abap_refdescr=>get_ref_to_object( ).
|
||||
ELSE.
|
||||
rtti = referenced_type->get_rtti( ).
|
||||
ENDIF.
|
||||
rtti = cl_abap_refdescr=>create( rtti ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/00/02/z2ui5_cl_srt_refdescr.clas.xml
Normal file
16
src/00/02/z2ui5_cl_srt_refdescr.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_SRT_REFDESCR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Serializable RTTI reference</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
84
src/00/02/z2ui5_cl_srt_structdescr.clas.abap
Normal file
84
src/00/02/z2ui5_cl_srt_structdescr.clas.abap
Normal file
|
@ -0,0 +1,84 @@
|
|||
"! <p class="shorttext synchronized" lang="en">Serializable RTTI structure</p>
|
||||
CLASS z2ui5_cl_srt_structdescr DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM z2ui5_cl_srt_complexdescr
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF sabap_componentdescr,
|
||||
name TYPE string,
|
||||
type TYPE REF TO z2ui5_cl_srt_datadescr,
|
||||
as_include TYPE abap_bool,
|
||||
suffix TYPE string,
|
||||
END OF sabap_componentdescr.
|
||||
TYPES sabap_component_tab TYPE STANDARD TABLE OF sabap_componentdescr WITH DEFAULT KEY.
|
||||
|
||||
DATA struct_kind LIKE cl_abap_structdescr=>struct_kind READ-ONLY.
|
||||
DATA components TYPE sabap_component_tab READ-ONLY.
|
||||
DATA has_include LIKE cl_abap_structdescr=>has_include READ-ONLY.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!rtti TYPE REF TO cl_abap_structdescr.
|
||||
|
||||
METHODS get_rtti
|
||||
REDEFINITION.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS z2ui5_cl_srt_structdescr IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
DATA components_rtti TYPE abap_component_tab.
|
||||
DATA scomponent TYPE sabap_componentdescr.
|
||||
DATA scomponent_rtti TYPE REF TO z2ui5_cl_srt_datadescr.
|
||||
|
||||
FIELD-SYMBOLS <component> TYPE abap_componentdescr.
|
||||
|
||||
super->constructor( rtti ).
|
||||
|
||||
struct_kind = rtti->struct_kind.
|
||||
has_include = rtti->has_include.
|
||||
|
||||
components_rtti = rtti->get_components( ).
|
||||
|
||||
LOOP AT components_rtti ASSIGNING <component>.
|
||||
|
||||
CLEAR scomponent.
|
||||
scomponent-name = <component>-name.
|
||||
|
||||
scomponent_rtti ?= z2ui5_cl_srt_datadescr=>create_by_rtti( <component>-type ).
|
||||
scomponent-type = scomponent_rtti.
|
||||
scomponent-as_include = <component>-as_include.
|
||||
scomponent-suffix = <component>-suffix.
|
||||
|
||||
APPEND scomponent TO components.
|
||||
IF scomponent-type->not_serializable = abap_true.
|
||||
not_serializable = abap_true.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_rtti.
|
||||
DATA components_rtti TYPE cl_abap_structdescr=>component_table.
|
||||
DATA component_rtti TYPE abap_componentdescr.
|
||||
|
||||
FIELD-SYMBOLS <component> TYPE sabap_componentdescr.
|
||||
|
||||
CLEAR components_rtti.
|
||||
LOOP AT components ASSIGNING <component>.
|
||||
|
||||
CLEAR component_rtti.
|
||||
component_rtti-name = <component>-name.
|
||||
component_rtti-type ?= <component>-type->get_rtti( ).
|
||||
component_rtti-as_include = <component>-as_include.
|
||||
component_rtti-suffix = <component>-suffix.
|
||||
|
||||
APPEND component_rtti TO components_rtti.
|
||||
ENDLOOP.
|
||||
rtti = cl_abap_structdescr=>create( components_rtti ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/00/02/z2ui5_cl_srt_structdescr.clas.xml
Normal file
16
src/00/02/z2ui5_cl_srt_structdescr.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_SRT_STRUCTDESCR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Serializable RTTI structure</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
70
src/00/02/z2ui5_cl_srt_tabledescr.clas.abap
Normal file
70
src/00/02/z2ui5_cl_srt_tabledescr.clas.abap
Normal file
|
@ -0,0 +1,70 @@
|
|||
"! <p class="shorttext synchronized" lang="en">Serializable RTTI table</p>
|
||||
CLASS z2ui5_cl_srt_tabledescr DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM z2ui5_cl_srt_complexdescr
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
DATA key LIKE cl_abap_tabledescr=>key.
|
||||
DATA initial_size LIKE cl_abap_tabledescr=>initial_size.
|
||||
DATA key_defkind LIKE cl_abap_tabledescr=>key_defkind.
|
||||
DATA has_unique_key LIKE cl_abap_tabledescr=>has_unique_key.
|
||||
DATA table_kind LIKE cl_abap_tabledescr=>table_kind.
|
||||
DATA line_type TYPE REF TO z2ui5_cl_srt_datadescr.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!rtti TYPE REF TO cl_abap_tabledescr.
|
||||
|
||||
METHODS get_rtti
|
||||
REDEFINITION.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS z2ui5_cl_srt_tabledescr IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
super->constructor( rtti ).
|
||||
key = rtti->key.
|
||||
initial_size = rtti->initial_size.
|
||||
key_defkind = rtti->key_defkind.
|
||||
has_unique_key = rtti->has_unique_key.
|
||||
table_kind = rtti->table_kind.
|
||||
|
||||
line_type ?= z2ui5_cl_srt_typedescr=>create_by_rtti( rtti->get_table_line_type( ) ).
|
||||
IF line_type->not_serializable = abap_true.
|
||||
not_serializable = abap_true.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_rtti.
|
||||
DATA lt_empty_key TYPE abap_keydescr_tab.
|
||||
DATA lo_data_rtti TYPE REF TO cl_abap_datadescr.
|
||||
DATA lo_error TYPE REF TO cx_sy_table_creation.
|
||||
|
||||
FIELD-SYMBOLS <lt_key> TYPE abap_keydescr_tab.
|
||||
|
||||
CLEAR lt_empty_key.
|
||||
CASE key_defkind.
|
||||
WHEN cl_abap_tabledescr=>keydefkind_user.
|
||||
ASSIGN key TO <lt_key>.
|
||||
WHEN OTHERS.
|
||||
ASSIGN lt_empty_key TO <lt_key>.
|
||||
ENDCASE.
|
||||
TRY.
|
||||
|
||||
lo_data_rtti ?= line_type->get_rtti( ).
|
||||
rtti = cl_abap_tabledescr=>create( p_line_type = lo_data_rtti
|
||||
p_table_kind = table_kind
|
||||
p_unique = has_unique_key
|
||||
p_key = <lt_key>
|
||||
p_key_kind = key_defkind ).
|
||||
|
||||
CATCH cx_sy_table_creation INTO lo_error.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_srt
|
||||
EXPORTING previous = lo_error.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
17
src/00/02/z2ui5_cl_srt_tabledescr.clas.xml
Normal file
17
src/00/02/z2ui5_cl_srt_tabledescr.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_SRT_TABLEDESCR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Serializable RTTI table</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
117
src/00/02/z2ui5_cl_srt_typedescr.clas.abap
Normal file
117
src/00/02/z2ui5_cl_srt_typedescr.clas.abap
Normal file
|
@ -0,0 +1,117 @@
|
|||
"! <p class="shorttext synchronized" lang="en">Serializable RTTI any type</p>
|
||||
CLASS z2ui5_cl_srt_typedescr DEFINITION
|
||||
PUBLIC
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES if_serializable_object.
|
||||
|
||||
DATA absolute_name LIKE cl_abap_typedescr=>absolute_name READ-ONLY.
|
||||
DATA type_kind LIKE cl_abap_typedescr=>type_kind READ-ONLY.
|
||||
DATA length LIKE cl_abap_typedescr=>length READ-ONLY.
|
||||
DATA decimals LIKE cl_abap_typedescr=>decimals READ-ONLY.
|
||||
DATA kind LIKE cl_abap_typedescr=>kind READ-ONLY.
|
||||
"! True if it's an object type which doesn't implement the interface IF_SERIALIZABLE_OBJECT
|
||||
DATA not_serializable TYPE abap_bool READ-ONLY.
|
||||
DATA is_ddic_type TYPE abap_bool READ-ONLY.
|
||||
"! True if the absolute name is %_T...
|
||||
DATA technical_type TYPE abap_bool READ-ONLY.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!rtti TYPE REF TO cl_abap_typedescr.
|
||||
METHODS get_rtti
|
||||
RETURNING
|
||||
VALUE(rtti) TYPE REF TO cl_abap_typedescr.
|
||||
CLASS-METHODS create_by_rtti
|
||||
IMPORTING
|
||||
!rtti TYPE REF TO cl_abap_typedescr
|
||||
RETURNING
|
||||
VALUE(srtti) TYPE REF TO z2ui5_cl_srt_typedescr.
|
||||
CLASS-METHODS create_by_data_object
|
||||
IMPORTING
|
||||
!data_object TYPE any
|
||||
RETURNING
|
||||
VALUE(srtti) TYPE REF TO z2ui5_cl_srt_typedescr.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS z2ui5_cl_srt_typedescr IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
absolute_name = rtti->absolute_name.
|
||||
type_kind = rtti->type_kind.
|
||||
length = rtti->length.
|
||||
decimals = rtti->decimals.
|
||||
kind = rtti->kind.
|
||||
is_ddic_type = rtti->is_ddic_type( ).
|
||||
IF rtti->absolute_name CP '\TYPE=%_T*'.
|
||||
technical_type = abap_true.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD create_by_data_object.
|
||||
srtti = create_by_rtti( cl_abap_typedescr=>describe_by_data( data_object ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD create_by_rtti.
|
||||
DATA elem_rtti TYPE REF TO cl_abap_elemdescr.
|
||||
DATA struct_rtti TYPE REF TO cl_abap_structdescr.
|
||||
DATA table_rtti TYPE REF TO cl_abap_tabledescr.
|
||||
DATA ref_rtti TYPE REF TO cl_abap_refdescr.
|
||||
DATA class_rtti TYPE REF TO cl_abap_classdescr.
|
||||
DATA intf_rtti TYPE REF TO cl_abap_intfdescr.
|
||||
|
||||
CASE rtti->kind.
|
||||
WHEN cl_abap_typedescr=>kind_elem.
|
||||
|
||||
elem_rtti ?= rtti.
|
||||
CREATE OBJECT srtti TYPE z2ui5_cl_srt_elemdescr
|
||||
EXPORTING rtti = elem_rtti.
|
||||
|
||||
WHEN cl_abap_typedescr=>kind_struct.
|
||||
|
||||
struct_rtti ?= rtti.
|
||||
CREATE OBJECT srtti TYPE z2ui5_cl_srt_structdescr
|
||||
EXPORTING rtti = struct_rtti.
|
||||
|
||||
WHEN cl_abap_typedescr=>kind_table.
|
||||
|
||||
table_rtti ?= rtti.
|
||||
CREATE OBJECT srtti TYPE z2ui5_cl_srt_tabledescr
|
||||
EXPORTING rtti = table_rtti.
|
||||
|
||||
WHEN cl_abap_typedescr=>kind_ref.
|
||||
|
||||
ref_rtti ?= rtti.
|
||||
CREATE OBJECT srtti TYPE z2ui5_cl_srt_refdescr
|
||||
EXPORTING rtti = ref_rtti.
|
||||
|
||||
WHEN cl_abap_typedescr=>kind_class.
|
||||
|
||||
class_rtti ?= rtti.
|
||||
CREATE OBJECT srtti TYPE z2ui5_cl_srt_classdescr
|
||||
EXPORTING rtti = class_rtti.
|
||||
|
||||
WHEN cl_abap_typedescr=>kind_intf.
|
||||
|
||||
intf_rtti ?= rtti.
|
||||
CREATE OBJECT srtti TYPE z2ui5_cl_srt_intfdescr
|
||||
EXPORTING rtti = intf_rtti.
|
||||
|
||||
WHEN OTHERS.
|
||||
" Unsupported (new ABAP features in the future)
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_srt.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_rtti.
|
||||
" default behavior
|
||||
IF technical_type = abap_false.
|
||||
rtti = cl_abap_typedescr=>describe_by_name( absolute_name ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
17
src/00/02/z2ui5_cl_srt_typedescr.clas.xml
Normal file
17
src/00/02/z2ui5_cl_srt_typedescr.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_SRT_TYPEDESCR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Serializable RTTI any type</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
35
src/00/02/z2ui5_cx_srt.clas.abap
Normal file
35
src/00/02/z2ui5_cx_srt.clas.abap
Normal file
|
@ -0,0 +1,35 @@
|
|||
class z2ui5_cx_srt definition
|
||||
public
|
||||
inheriting from CX_NO_CHECK
|
||||
final
|
||||
create public .
|
||||
|
||||
public section.
|
||||
|
||||
interfaces IF_T100_MESSAGE .
|
||||
|
||||
methods CONSTRUCTOR
|
||||
importing
|
||||
!TEXTID like IF_T100_MESSAGE=>T100KEY optional
|
||||
!PREVIOUS like PREVIOUS optional .
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cx_srt IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor ##ADT_SUPPRESS_GENERATION.
|
||||
CALL METHOD super->constructor
|
||||
EXPORTING
|
||||
previous = previous.
|
||||
CLEAR me->textid.
|
||||
IF textid IS INITIAL.
|
||||
if_t100_message~t100key = if_t100_message=>default_textid.
|
||||
ELSE.
|
||||
if_t100_message~t100key = textid.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
17
src/00/02/z2ui5_cx_srt.clas.xml
Normal file
17
src/00/02/z2ui5_cx_srt.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CX_SRT</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>General exception</DESCRIPT>
|
||||
<CATEGORY>40</CATEGORY>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -71,7 +71,7 @@ CLASS z2ui5_cl_util DEFINITION
|
|||
v4 TYPE string,
|
||||
timestampl TYPE timestampl,
|
||||
END OF ty_s_msg,
|
||||
ty_t_msg TYPE STANDARD TABLE OF ty_S_msg WITH EMPTY KEY.
|
||||
ty_t_msg TYPE STANDARD TABLE OF ty_s_msg WITH EMPTY KEY.
|
||||
|
||||
CLASS-METHODS ui5_get_msg_type
|
||||
IMPORTING
|
||||
|
@ -1239,23 +1239,26 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
|
|||
|
||||
CALL TRANSFORMATION id SOURCE srtti = srtti dobj = data RESULT XML result.
|
||||
|
||||
ELSEIF rtti_check_class_exists( 'Z2UI5_CL_SRTTI_TYPEDESCR' ) = abap_true..
|
||||
ELSE.
|
||||
|
||||
"DATA srtti TYPE REF TO object.
|
||||
lv_classname = 'Z2UI5_CL_SRTTI_TYPEDESCR'.
|
||||
CALL METHOD (lv_classname)=>('CREATE_BY_DATA_OBJECT')
|
||||
TRY.
|
||||
CALL METHOD z2ui5_cl_srt_typedescr=>('CREATE_BY_DATA_OBJECT')
|
||||
EXPORTING
|
||||
data_object = data
|
||||
RECEIVING
|
||||
srtti = srtti.
|
||||
|
||||
CALL TRANSFORMATION id SOURCE srtti = srtti dobj = data RESULT XML result.
|
||||
CALL TRANSFORMATION id SOURCE srtti = srtti dobj = data RESULT XML result.
|
||||
|
||||
ELSE.
|
||||
DATA(lv_text) = `UNSUPPORTED_FEATURE - Please install the open-source project S-RTTI by sandraros and try again: https://github.com/sandraros/S-RTTI`.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = lv_text.
|
||||
CATCH cx_root.
|
||||
|
||||
DATA(lv_text) = `UNSUPPORTED_FEATURE - Please install the open-source project S-RTTI by sandraros and try again: https://github.com/sandraros/S-RTTI`.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = lv_text.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
Loading…
Reference in New Issue
Block a user