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.