reafctoring utility classes (#1751)

* reafctoring utility classes

* update
This commit is contained in:
oblomov-dev 2025-02-17 11:34:01 -03:00 committed by GitHub
parent 3cbd06e952
commit d38e03e8c2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 307 additions and 8 deletions

View File

@ -0,0 +1,156 @@
CLASS z2ui5_cl_util_db DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS delete_by_handle
IMPORTING
uname TYPE clike OPTIONAL
handle TYPE clike OPTIONAL
handle2 TYPE clike OPTIONAL
handle3 TYPE clike OPTIONAL
check_commit TYPE abap_bool DEFAULT abap_true.
CLASS-METHODS save
IMPORTING
uname TYPE clike OPTIONAL
handle TYPE clike OPTIONAL
handle2 TYPE clike OPTIONAL
handle3 TYPE clike OPTIONAL
data TYPE any
check_commit TYPE abap_bool DEFAULT abap_true
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS load_by_id
IMPORTING
id TYPE clike OPTIONAL
EXPORTING
VALUE(result) TYPE any.
CLASS-METHODS load_by_handle
IMPORTING
uname TYPE clike OPTIONAL
handle TYPE clike OPTIONAL
handle2 TYPE clike OPTIONAL
handle3 TYPE clike OPTIONAL
EXPORTING
VALUE(result) TYPE any.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_util_db IMPLEMENTATION.
METHOD delete_by_handle.
DELETE FROM z2ui5_t_91
WHERE
uname = @uname
AND handle = @handle
AND handle2 = @handle2
AND handle3 = @handle3.
IF check_commit = abap_true.
COMMIT WORK AND WAIT.
ENDIF.
ENDMETHOD.
METHOD load_by_handle.
DATA lt_db TYPE STANDARD TABLE OF z2ui5_t_91 WITH EMPTY KEY.
SELECT data
FROM z2ui5_t_91
WHERE
uname = @uname
AND handle = @handle
AND handle2 = @handle2
AND handle3 = @handle3
INTO CORRESPONDING FIELDS OF TABLE @lt_db.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `No entry for handle exists`.
ENDIF.
DATA(ls_db) = lt_db[ 1 ].
z2ui5_cl_util=>xml_parse(
EXPORTING
xml = ls_db-data
IMPORTING
any = result ).
ENDMETHOD.
METHOD load_by_id.
DATA lt_db TYPE STANDARD TABLE OF z2ui5_t_91 WITH EMPTY KEY.
SELECT data
FROM z2ui5_t_91
WHERE id = @id
INTO CORRESPONDING FIELDS OF TABLE @lt_db.
ASSERT sy-subrc = 0.
DATA(ls_db) = lt_db[ 1 ].
z2ui5_cl_util=>xml_parse(
EXPORTING
xml = ls_db-data
IMPORTING
any = result ).
ENDMETHOD.
METHOD save.
DATA lt_db TYPE STANDARD TABLE OF z2ui5_t_91 WITH EMPTY KEY.
SELECT id
FROM z2ui5_t_91
WHERE
uname = @uname
AND handle = @handle
AND handle2 = @handle2
AND handle3 = @handle3
INTO CORRESPONDING FIELDS OF TABLE @lt_db ##SUBRC_OK.
DATA(ls_db) = VALUE z2ui5_t_91(
uname = uname
handle = handle
handle2 = handle2
handle3 = handle3
data = z2ui5_cl_util=>xml_stringify( data ) ).
TRY.
ls_db-id = lt_db[ 1 ]-id.
CATCH cx_root.
ls_db-id = z2ui5_cl_util=>uuid_get_c32( ).
ENDTRY.
MODIFY z2ui5_t_91 FROM @ls_db.
ASSERT sy-subrc = 0.
IF check_commit = abap_true.
COMMIT WORK AND WAIT.
ENDIF.
result = ls_db-id.
ENDMETHOD.
ENDCLASS.

View 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_UTIL_DB</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>util - db</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>Z2UI5_T_91</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>util - db</DDTEXT>
<MASTERLANG>E</MASTERLANG>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>Z2UI5_T_91</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>MANDT</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000006</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000003</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ID</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000064</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000032</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>UNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000064</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000032</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>HANDLE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000064</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000032</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>HANDLE2</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000064</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000032</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>HANDLE3</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000064</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000032</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>HANDLE4</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000064</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000032</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>HANDLE5</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000064</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000032</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DATA</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>g</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>STRG</DATATYPE>
<MASK> STRG</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DATA2</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>g</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>STRG</DATATYPE>
<MASK> STRG</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DATA3</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>g</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>STRG</DATATYPE>
<MASK> STRG</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -4,6 +4,8 @@ CLASS z2ui5_cl_core_srv_draft DEFINITION
PUBLIC SECTION.
TYPES ty_s_db TYPE z2ui5_t_01.
METHODS count_entries
RETURNING
VALUE(result) TYPE i.
@ -17,7 +19,7 @@ CLASS z2ui5_cl_core_srv_draft DEFINITION
IMPORTING
!id TYPE clike
RETURNING
VALUE(result) TYPE z2ui5_if_core_types=>ty_s_db.
VALUE(result) TYPE ty_s_db.
METHODS read_info
IMPORTING
@ -34,7 +36,7 @@ CLASS z2ui5_cl_core_srv_draft DEFINITION
!id TYPE clike
check_load_app TYPE abap_bool DEFAULT abap_true
RETURNING
VALUE(result) TYPE z2ui5_if_core_types=>ty_s_db.
VALUE(result) TYPE ty_s_db.
PRIVATE SECTION.
ENDCLASS.
@ -55,7 +57,7 @@ CLASS z2ui5_cl_core_srv_draft IMPLEMENTATION.
ASSERT draft-id IS NOT INITIAL.
DATA(ls_db) = VALUE z2ui5_if_core_types=>ty_s_db( id = draft-id
DATA(ls_db) = VALUE ty_s_db( id = draft-id
id_prev = draft-id_prev
id_prev_app = draft-id_prev_app
id_prev_app_stack = draft-id_prev_app_stack
@ -66,7 +68,8 @@ CLASS z2ui5_cl_core_srv_draft IMPLEMENTATION.
MODIFY z2ui5_t_01 FROM @ls_db.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING val = `CREATE_OF_DRAFT_ENTRY_ON_DATABASE_FAILED`.
EXPORTING
val = `CREATE_OF_DRAFT_ENTRY_ON_DATABASE_FAILED`.
ENDIF.
COMMIT WORK AND WAIT.
@ -83,7 +86,7 @@ CLASS z2ui5_cl_core_srv_draft IMPLEMENTATION.
ELSE.
SELECT SINGLE id, id_prev, id_prev_app, id_prev_app_stack
FROM z2ui5_t_01
FROM z2ui5_t_01
WHERE id = @id
INTO CORRESPONDING FIELDS OF @result ##SUBRC_OK.
@ -91,7 +94,8 @@ CLASS z2ui5_cl_core_srv_draft IMPLEMENTATION.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING val = `NO_DRAFT_ENTRY_OF_PREVIOUS_REQUEST_FOUND`.
EXPORTING
val = `NO_DRAFT_ENTRY_OF_PREVIOUS_REQUEST_FOUND`.
ENDIF.
ENDMETHOD.

View File

@ -210,6 +210,4 @@ INTERFACE z2ui5_if_core_types
r_data TYPE REF TO data,
END OF ty_s_actual.
TYPES ty_s_db TYPE z2ui5_t_01.
ENDINTERFACE.