From d38e03e8c2b9a323c2e6d595ca1f6d17a220277f Mon Sep 17 00:00:00 2001
From: oblomov-dev <102328295+oblomov-dev@users.noreply.github.com>
Date: Mon, 17 Feb 2025 11:34:01 -0300
Subject: [PATCH] reafctoring utility classes (#1751)
* reafctoring utility classes
* update
---
src/00/03/z2ui5_cl_util_db.clas.abap | 156 ++++++++++++++++++++
src/00/03/z2ui5_cl_util_db.clas.xml | 16 ++
src/00/03/z2ui5_t_91.tabl.xml | 125 ++++++++++++++++
src/01/01/z2ui5_cl_core_srv_draft.clas.abap | 16 +-
src/01/02/z2ui5_if_core_types.intf.abap | 2 -
5 files changed, 307 insertions(+), 8 deletions(-)
create mode 100644 src/00/03/z2ui5_cl_util_db.clas.abap
create mode 100644 src/00/03/z2ui5_cl_util_db.clas.xml
create mode 100644 src/00/03/z2ui5_t_91.tabl.xml
diff --git a/src/00/03/z2ui5_cl_util_db.clas.abap b/src/00/03/z2ui5_cl_util_db.clas.abap
new file mode 100644
index 00000000..3f9022d9
--- /dev/null
+++ b/src/00/03/z2ui5_cl_util_db.clas.abap
@@ -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.
diff --git a/src/00/03/z2ui5_cl_util_db.clas.xml b/src/00/03/z2ui5_cl_util_db.clas.xml
new file mode 100644
index 00000000..aaef6a31
--- /dev/null
+++ b/src/00/03/z2ui5_cl_util_db.clas.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ Z2UI5_CL_UTIL_DB
+ E
+ util - db
+ 1
+ X
+ X
+ X
+
+
+
+
diff --git a/src/00/03/z2ui5_t_91.tabl.xml b/src/00/03/z2ui5_t_91.tabl.xml
new file mode 100644
index 00000000..9f739cbc
--- /dev/null
+++ b/src/00/03/z2ui5_t_91.tabl.xml
@@ -0,0 +1,125 @@
+
+
+
+
+
+ Z2UI5_T_91
+ E
+ TRANSP
+ util - db
+ E
+ A
+ 1
+
+
+ Z2UI5_T_91
+ A
+ 0
+ APPL0
+ N
+
+
+
+ MANDT
+ X
+ 0
+ C
+ 000006
+ X
+ CHAR
+ 000003
+ CHAR
+
+
+ ID
+ X
+ 0
+ C
+ 000064
+ X
+ CHAR
+ 000032
+ CHAR
+
+
+ UNAME
+ 0
+ C
+ 000064
+ CHAR
+ 000032
+ CHAR
+
+
+ HANDLE
+ 0
+ C
+ 000064
+ CHAR
+ 000032
+ CHAR
+
+
+ HANDLE2
+ 0
+ C
+ 000064
+ CHAR
+ 000032
+ CHAR
+
+
+ HANDLE3
+ 0
+ C
+ 000064
+ CHAR
+ 000032
+ CHAR
+
+
+ HANDLE4
+ 0
+ C
+ 000064
+ CHAR
+ 000032
+ CHAR
+
+
+ HANDLE5
+ 0
+ C
+ 000064
+ CHAR
+ 000032
+ CHAR
+
+
+ DATA
+ 0
+ g
+ 000008
+ STRG
+ STRG
+
+
+ DATA2
+ 0
+ g
+ 000008
+ STRG
+ STRG
+
+
+ DATA3
+ 0
+ g
+ 000008
+ STRG
+ STRG
+
+
+
+
+
diff --git a/src/01/01/z2ui5_cl_core_srv_draft.clas.abap b/src/01/01/z2ui5_cl_core_srv_draft.clas.abap
index 3749c185..ad226524 100644
--- a/src/01/01/z2ui5_cl_core_srv_draft.clas.abap
+++ b/src/01/01/z2ui5_cl_core_srv_draft.clas.abap
@@ -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.
diff --git a/src/01/02/z2ui5_if_core_types.intf.abap b/src/01/02/z2ui5_if_core_types.intf.abap
index 3ca570ce..13b8894c 100644
--- a/src/01/02/z2ui5_if_core_types.intf.abap
+++ b/src/01/02/z2ui5_if_core_types.intf.abap
@@ -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.