refactoring (#943)

* refactoring

* update

* refactoring

* refactoring
This commit is contained in:
oblomov 2024-02-23 18:00:59 +01:00 committed by GitHub
parent 7f0c0a2b3a
commit a308f5903c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 421 additions and 403 deletions

View File

@ -748,8 +748,7 @@ CLASS Z2UI5_CL_UTIL_API IMPLEMENTATION.
METHOD rtti_get_classname_by_ref.
DATA(lv_classname) = cl_abap_classdescr=>get_class_name( in ).
result = substring_after( val = lv_classname
sub = `\CLASS=` ).
result = substring_after( val = lv_classname sub = `\CLASS=` ).
ENDMETHOD.

View File

@ -8,6 +8,7 @@ CLASS z2ui5_cl_popup_get_range_multi DEFINITION
CLASS-METHODS factory
IMPORTING
val TYPE z2ui5_cl_util=>ty_t_filter_multi
o_variant TYPE REF TO z2ui5_cl_popup_get_variant
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_get_range_multi.
@ -23,6 +24,7 @@ CLASS z2ui5_cl_popup_get_range_multi DEFINITION
RETURNING VALUE(result) TYPE ty_s_result.
PROTECTED SECTION.
DATA o_variant TYPE REF TO z2ui5_cl_popup_get_variant.
DATA client TYPE REF TO z2ui5_if_client.
DATA check_initialized TYPE abap_bool.
DATA mv_popup_name TYPE LINE OF string_table.
@ -38,6 +40,7 @@ CLASS z2ui5_cl_popup_get_range_multi IMPLEMENTATION.
r_result = NEW #( ).
r_result->ms_result-t_sql = val.
r_result->o_variant = o_variant.
ENDMETHOD.

View File

@ -53,20 +53,6 @@ CLASS z2ui5_cl_popup_layout_v2 DEFINITION
DATA mt_halign TYPE fixvalues.
DATA mt_importance TYPE fixvalues.
CLASS-METHODS on_event_layout
IMPORTING
client TYPE REF TO z2ui5_if_client
layout TYPE ty_s_layout
RETURNING
VALUE(result) TYPE REF TO z2ui5_if_client.
CLASS-METHODS render_layout_function
IMPORTING
!xml TYPE REF TO z2ui5_cl_xml_view
!client TYPE REF TO z2ui5_if_client
RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_xml_view.
CLASS-METHODS init_layout
IMPORTING
!tab TYPE REF TO data
@ -83,11 +69,25 @@ CLASS z2ui5_cl_popup_layout_v2 DEFINITION
RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_popup_layout_v2.
PROTECTED SECTION.
TYPES:
BEGIN OF ty_s_result,
check_cancel TYPE abap_bool,
s_layout TYPE ty_s_layout,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
METHODS result
RETURNING
VALUE(result) TYPE ty_s_result.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA mv_init TYPE abap_bool.
METHODS on_init.
METHODS render_edit.
METHODS on_event.
@ -103,7 +103,7 @@ PROTECTED SECTION.
METHODS save_layout.
METHODS render_open.
METHODS get_selected_layout
RETURNING VALUE(result) TYPE ty_s_layout.
RETURNING VALUE(result) TYPE ty_s_layout.
METHODS get_layouts.
METHODS init_edit.
METHODS render_delete.
@ -140,36 +140,288 @@ PROTECTED SECTION.
ENDCLASS.
CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
METHOD z2ui5_if_app~main.
me->client = client.
METHOD db_delete_layout.
IF mv_init = abap_false.
mv_init = abap_true.
on_init( ).
DATA(layout) = get_selected_layout( ).
CASE abap_true.
WHEN mv_open.
get_layouts( ).
render_open( ).
DELETE z2ui5_t001 FROM @layout-s_head.
DELETE z2ui5_t002 FROM TABLE @layout-t_layout.
WHEN mv_delete.
get_layouts( ).
render_delete( ).
IF sy-subrc = 0.
COMMIT WORK AND WAIT.
ENDIF.
WHEN OTHERS.
init_edit( ).
render_edit( ).
ENDMETHOD.
ENDCASE.
client->view_model_update( ).
METHOD db_read_head.
SELECT * FROM z2ui5_t001
WHERE classname = @i_classname
AND tab = @i_tab
INTO CORRESPONDING FIELDS OF TABLE @r_result ##SUBRC_OK.
ENDMETHOD.
METHOD db_read_layout.
SELECT SINGLE * FROM z2ui5_t001
WHERE layout = @layout
AND tab = @tab
INTO CORRESPONDING FIELDS OF @result-s_head ##SUBRC_OK.
SELECT * FROM z2ui5_t002
WHERE layout = @layout
AND tab = @tab
INTO CORRESPONDING FIELDS OF TABLE @result-t_layout ##SUBRC_OK.
ENDMETHOD.
METHOD db_read_layout_info.
SELECT layout,
tab,
fname,
rollname,
visible,
halign,
importance,
merge,
width,
text
FROM z2ui5_t002
WHERE layout = @i_def-layout
AND tab = @i_def-tab
INTO CORRESPONDING FIELDS OF TABLE @r_t002 ##SUBRC_OK.
ENDMETHOD.
METHOD db_read_layout_multi.
SELECT layout,
tab,
descr,
classname,
def,
uname
FROM z2ui5_t001
WHERE classname = @i_classname
AND tab = @i_tab_name
INTO CORRESPONDING FIELDS OF TABLE @r_t001 ##SUBRC_OK.
ENDMETHOD.
METHOD factory.
result = NEW #( ).
result->ms_layout = layout.
result->mv_open = open_layout.
result->mv_delete = delete_layout.
result->mv_extended_layout = extended_layout.
ENDMETHOD.
METHOD get_layouts.
mt_t001 = select_layouts(
classname = CONV #( ms_layout-s_head-classname )
tab = CONV #( ms_layout-s_head-tab ) ).
IF mt_t001 IS NOT INITIAL.
DATA(t001) = REF #( mt_t001[ layout = ms_layout-s_head-layout ] OPTIONAL ).
IF t001 IS BOUND.
t001->selkz = abap_true.
RETURN.
ELSE.
t001 = REF #( mt_t001[ 1 ] OPTIONAL ).
t001->selkz = abap_true.
ENDIF.
ENDIF.
on_event( ).
ENDMETHOD.
METHOD get_selected_layout.
DATA(t001) = VALUE #( mt_t001[ selkz = abap_true ] OPTIONAL ).
IF t001 IS NOT INITIAL.
result = db_read_layout(
layout = t001-layout
tab = t001-tab ).
ENDIF.
ENDMETHOD.
METHOD init_edit.
mv_layout = ms_layout-s_head-layout.
mv_descr = ms_layout-s_head-descr.
mv_def = ms_layout-s_head-def.
mv_usr = xsdbool( ms_layout-s_head-uname IS NOT INITIAL ).
ENDMETHOD.
METHOD init_layout.
" create the tab first if the db fields were added/deleted
DATA(t_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_struc( tab ).
DATA(tab_name) = z2ui5_cl_util=>rtti_tab_get_relative_name( tab ).
IF tab_name IS INITIAL.
tab_name = classname.
ENDIF.
LOOP AT t_comp REFERENCE INTO DATA(lr_comp).
INSERT VALUE #(
tab = tab_name
fname = lr_comp->name
rollname = lr_comp->type->get_relative_name( ) ) INTO TABLE result-t_layout.
ENDLOOP.
* Select Layouts
DATA(t_t001) = db_read_layout_multi(
i_classname = classname
i_tab_name = tab_name ).
* DEFAULT USER
DATA(def) = VALUE #( t_t001[ classname = classname tab = tab_name def = abap_true uname = sy-uname ] OPTIONAL ).
IF def IS INITIAL.
* DEFAULT
def = VALUE #( t_t001[ classname = classname tab = tab_name def = abap_true ] OPTIONAL ).
ENDIF.
IF def-layout IS NOT INITIAL.
DATA(t_t002) = db_read_layout_info( def ).
LOOP AT result-t_layout REFERENCE INTO DATA(layout).
TRY.
DATA(t002) = REF #( t_t002[ fname = layout->fname ] ).
layout->* = t002->*.
CATCH cx_root.
layout->layout = 'Default'.
layout->halign = 'Initial'.
layout->importance = 'None'.
layout->rollname = layout->rollname.
layout->fname = layout->fname.
layout->tab = tab_name.
ENDTRY.
ENDLOOP.
result-s_head = def.
ELSE.
* Default Layout
DATA(index) = 0.
LOOP AT result-t_layout REFERENCE INTO layout.
index = index + 1.
* Default ony 10 rows
IF index <= 10.
layout->visible = abap_true.
ENDIF.
IF layout->fname = 'MANDT' OR layout->fname = 'ROW_ID'.
layout->visible = abap_false.
ENDIF.
layout->layout = 'Default'.
layout->halign = 'Initial'.
layout->importance = 'None'.
layout->tab = tab_name.
ENDLOOP.
result-s_head-layout = 'Default'.
result-s_head-descr = 'System generated Layout'.
result-s_head-def = abap_true.
result-s_head-classname = classname.
result-s_head-tab = tab_name.
ENDIF.
ENDMETHOD.
METHOD on_event.
CASE client->get( )-event.
WHEN 'CANCEL'.
ms_result-check_cancel = abap_true.
client->popup_destroy( ).
client->nav_app_leave( ).
WHEN 'OK'.
client->popup_destroy( ).
client->nav_app_leave( ).
WHEN 'LAYOUT_SAVE'.
render_save( ).
WHEN 'CLOSE'.
client->nav_app_leave( ).
WHEN 'SAVE_CLOSE'.
* client->popup_destroy( ).
render_edit( ).
WHEN 'SAVE_SAVE'.
save_layout( ).
render_edit( ).
* client->popup_destroy( ).
* client->nav_app_leave( ).
WHEN 'OPEN_SELECT'.
ms_layout = get_selected_layout( ).
client->popup_destroy( ).
client->nav_app_leave( ).
WHEN 'DELETE_SELECT'.
db_delete_layout( ).
client->popup_destroy( ).
client->nav_app_leave( ).
WHEN 'LAYOUT_LOAD'.
* client->view_destroy( ).
client->nav_app_call( z2ui5_cl_popup_layout_v2=>factory( layout = ms_layout
open_layout = abap_true ) ).
* WHEN 'LAYOUT_EDIT'.
* client->view_destroy( ).
* client->nav_app_call( z2ui5_cl_popup_layout_v2=>factory( layout = ms_layout
* extended_layout = abap_true ) ).
WHEN 'LAYOUT_DELETE'.
* client->view_destroy( ).
client->nav_app_call( z2ui5_cl_popup_layout_v2=>factory( layout = ms_layout
delete_layout = abap_true ) ).
ENDCASE.
ENDMETHOD.
@ -195,12 +447,50 @@ CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
ENDMETHOD.
METHOD render_delete.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
DATA(dialog) = popup->dialog( title = 'Layout'
afterclose = client->_event( 'CLOSE' ) ).
dialog->table(
headertext = 'Layout'
mode = 'SingleSelectLeft'
items = client->_bind_edit( mt_t001 )
)->columns(
)->column( )->text( 'Layout' )->get_parent(
)->column( )->text( 'Description'
)->get_parent( )->get_parent(
)->items(
)->column_list_item( selected = '{SELKZ}'
)->cells(
)->text( '{LAYOUT}'
)->text( '{DESCR}' ).
dialog->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'Back'
icon = 'sap-icon://nav-back'
press = client->_event( 'CLOSE' )
)->button(
text = 'Delete'
press = client->_event( 'DELETE_SELECT' )
type = 'Reject'
icon = 'sap-icon://delete' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD render_edit.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
DATA(dialog) = popup->dialog( title = 'Layout'
contentwidth = '50%'
afterclose = client->_event( 'CLOSE' ) )->content( ).
afterclose = client->_event( 'CANCEL' ) )->content( ).
DATA(tab) = dialog->table( growing = abap_true
items = client->_bind_edit( ms_layout-t_layout ) ).
@ -281,14 +571,27 @@ CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
)->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'Back'
icon = 'sap-icon://nav-back'
press = client->_event( 'CLOSE' )
text = 'Cancel'
icon = 'sap-icon://sys-cancel-2'
press = client->_event( 'CANCEL' )
)->button(
text = 'DB Delete'
press = client->_event( 'LAYOUT_DELETE' )
icon = 'sap-icon://delete'
)->button(
text = 'DB Read'
press = client->_event( 'LAYOUT_LOAD' )
icon = 'sap-icon://download-from-cloud'
)->button(
text = 'Save'
press = client->_event( 'EDIT_SAVE' )
text = 'DB Save'
press = client->_event( 'LAYOUT_SAVE' )
icon = 'sap-icon://save'
type = 'Emphasized' ).
)->button(
text = 'OK'
icon = 'sap-icon://accept'
press = client->_event( 'OK' )
type = 'Emphasized'
).
client->popup_display( popup->get_root( )->xml_get( ) ).
@ -296,69 +599,42 @@ CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
ENDMETHOD.
METHOD on_event.
METHOD render_open.
CASE client->get( )-event.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
WHEN 'CLOSE'.
client->popup_destroy( ).
client->nav_app_leave( ).
DATA(dialog) = popup->dialog( title = 'Layout'
afterclose = client->_event( 'CLOSE' ) ).
WHEN 'EDIT_SAVE'.
render_save( ).
dialog->table(
headertext = 'Layout'
mode = 'SingleSelectLeft'
items = client->_bind_edit( mt_t001 )
)->columns(
)->column( )->text( 'Layout' )->get_parent(
)->column( )->text( 'Description' )->get_parent(
)->column( )->text( 'Default' )->get_parent(
)->get_parent(
)->items(
)->column_list_item( selected = '{SELKZ}'
)->cells(
)->text( '{LAYOUT}'
)->text( '{DESCR}'
)->text( '{DEF}' ).
WHEN 'SAVE_CLOSE'.
client->popup_destroy( ).
render_edit( ).
dialog->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'Back'
icon = 'sap-icon://nav-back'
press = client->_event( 'CLOSE' )
)->button(
text = 'Open'
icon = 'sap-icon://accept'
press = client->_event( 'OPEN_SELECT' )
type = 'Emphasized' ).
WHEN 'SAVE_SAVE'.
save_layout( ).
client->popup_destroy( ).
client->nav_app_leave( ).
WHEN 'OPEN_SELECT'.
ms_layout = get_selected_layout( ).
client->popup_destroy( ).
client->nav_app_leave( ).
WHEN 'DELETE_SELECT'.
db_delete_layout( ).
client->popup_destroy( ).
client->nav_app_leave( ).
ENDCASE.
ENDMETHOD.
METHOD factory.
result = NEW #( ).
result->ms_layout = layout.
result->mv_open = open_layout.
result->mv_delete = delete_layout.
result->mv_extended_layout = extended_layout.
ENDMETHOD.
METHOD render_layout_function.
result = xml.
result->overflow_toolbar_menu_button( tooltip = 'Export' icon = 'sap-icon://action-settings'
)->_generic( `menu`
)->_generic( `Menu`
)->menu_item( text = 'Change Layout'
icon = 'sap-icon://edit'
press = client->_event( val = 'LAYOUT_EDIT' )
)->menu_item( text = 'Choose Layout'
icon = 'sap-icon://open-folder'
press = client->_event( val = 'LAYOUT_OPEN' )
)->menu_item( text = 'Manage Layouts'
icon = 'sap-icon://delete'
press = client->_event( val = 'LAYOUT_DELETE' ) ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
@ -413,6 +689,14 @@ CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
ENDMETHOD.
METHOD result.
ms_result-s_layout = ms_layout.
result = ms_result.
ENDMETHOD.
METHOD save_layout.
DATA t002 TYPE STANDARD TABLE OF z2ui5_t002 WITH EMPTY KEY.
@ -497,84 +781,6 @@ CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
ENDMETHOD.
METHOD render_delete.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
DATA(dialog) = popup->dialog( title = 'Layout'
afterclose = client->_event( 'CLOSE' ) ).
dialog->table(
headertext = 'Layout'
mode = 'SingleSelectLeft'
items = client->_bind_edit( mt_t001 )
)->columns(
)->column( )->text( 'Layout' )->get_parent(
)->column( )->text( 'Description'
)->get_parent( )->get_parent(
)->items(
)->column_list_item( selected = '{SELKZ}'
)->cells(
)->text( '{LAYOUT}'
)->text( '{DESCR}' ).
dialog->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'Back'
icon = 'sap-icon://nav-back'
press = client->_event( 'CLOSE' )
)->button(
text = 'Delete'
press = client->_event( 'DELETE_SELECT' )
type = 'Reject'
icon = 'sap-icon://delete' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD render_open.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
DATA(dialog) = popup->dialog( title = 'Layout'
afterclose = client->_event( 'CLOSE' ) ).
dialog->table(
headertext = 'Layout'
mode = 'SingleSelectLeft'
items = client->_bind_edit( mt_t001 )
)->columns(
)->column( )->text( 'Layout' )->get_parent(
)->column( )->text( 'Description' )->get_parent(
)->column( )->text( 'Default' )->get_parent(
)->get_parent(
)->items(
)->column_list_item( selected = '{SELKZ}'
)->cells(
)->text( '{LAYOUT}'
)->text( '{DESCR}'
)->text( '{DEF}' ).
dialog->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'Back'
icon = 'sap-icon://nav-back'
press = client->_event( 'CLOSE' )
)->button(
text = 'Open'
icon = 'sap-icon://accept'
press = client->_event( 'OPEN_SELECT' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD select_layouts.
result = db_read_head(
@ -585,240 +791,50 @@ CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
ENDMETHOD.
METHOD get_selected_layout.
METHOD z2ui5_if_app~main.
DATA(t001) = VALUE #( mt_t001[ selkz = abap_true ] OPTIONAL ).
IF t001 IS NOT INITIAL.
me->client = client.
result = db_read_layout(
layout = t001-layout
tab = t001-tab ).
IF mv_init = abap_false.
mv_init = abap_true.
on_init( ).
CASE abap_true.
WHEN mv_open.
get_layouts( ).
render_open( ).
WHEN mv_delete.
get_layouts( ).
render_delete( ).
WHEN OTHERS.
init_edit( ).
render_edit( ).
ENDCASE.
RETURN.
ENDIF.
ENDMETHOD.
IF client->get( )-check_on_navigated = abap_true.
TRY.
DATA(app) = CAST z2ui5_cl_popup_layout_v2( client->get_app( client->get( )-s_draft-id_prev_app ) ).
DATA(ls_result) = app->result( ).
IF ls_result-check_cancel = abap_true.
RETURN.
ENDIF.
ms_layout = app->ms_layout.
METHOD init_layout.
CATCH cx_root.
ENDTRY.
" create the tab first if the db fields were added/deleted
DATA(t_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_struc( tab ).
DATA(tab_name) = z2ui5_cl_util=>rtti_tab_get_relative_name( tab ).
IF tab_name IS INITIAL.
tab_name = classname.
render_edit( ).
RETURN.
ENDIF.
LOOP AT t_comp REFERENCE INTO DATA(lr_comp).
INSERT VALUE #(
tab = tab_name
fname = lr_comp->name
rollname = lr_comp->type->get_relative_name( ) ) INTO TABLE result-t_layout.
ENDLOOP.
* Select Layouts
data(t_t001) = db_read_layout_multi(
i_classname = classname
i_tab_name = tab_name ).
* DEFAULT USER
DATA(def) = VALUE #( t_t001[ classname = classname tab = tab_name def = abap_true uname = sy-uname ] OPTIONAL ).
IF def IS INITIAL.
* DEFAULT
def = VALUE #( t_t001[ classname = classname tab = tab_name def = abap_true ] OPTIONAL ).
ENDIF.
IF def-layout IS NOT INITIAL.
data(t_t002) = db_read_layout_info( def ).
LOOP AT result-t_layout REFERENCE INTO DATA(layout).
TRY.
DATA(t002) = REF #( t_t002[ fname = layout->fname ] ).
layout->* = t002->*.
CATCH cx_root.
layout->layout = 'Default'.
layout->halign = 'Initial'.
layout->importance = 'None'.
layout->rollname = layout->rollname.
layout->fname = layout->fname.
layout->tab = tab_name.
ENDTRY.
ENDLOOP.
result-s_head = def.
ELSE.
* Default Layout
DATA(index) = 0.
LOOP AT result-t_layout REFERENCE INTO layout.
index = index + 1.
* Default ony 10 rows
IF index <= 10.
layout->visible = abap_true.
ENDIF.
IF layout->fname = 'MANDT' OR layout->fname = 'ROW_ID'.
layout->visible = abap_false.
ENDIF.
layout->layout = 'Default'.
layout->halign = 'Initial'.
layout->importance = 'None'.
layout->tab = tab_name.
ENDLOOP.
result-s_head-layout = 'Default'.
result-s_head-descr = 'System generated Layout'.
result-s_head-def = abap_true.
result-s_head-classname = classname.
result-s_head-tab = tab_name.
ENDIF.
ENDMETHOD.
METHOD get_layouts.
mt_t001 = select_layouts(
classname = CONV #( ms_layout-s_head-classname )
tab = CONV #( ms_layout-s_head-tab ) ).
IF mt_t001 IS NOT INITIAL.
DATA(t001) = REF #( mt_t001[ layout = ms_layout-s_head-layout ] OPTIONAL ).
IF t001 IS BOUND.
t001->selkz = abap_true.
RETURN.
ELSE.
t001 = REF #( mt_t001[ 1 ] OPTIONAL ).
t001->selkz = abap_true.
ENDIF.
ENDIF.
on_event( ).
ENDMETHOD.
METHOD init_edit.
mv_layout = ms_layout-s_head-layout.
mv_descr = ms_layout-s_head-descr.
mv_def = ms_layout-s_head-def.
mv_usr = xsdbool( ms_layout-s_head-uname IS NOT INITIAL ).
ENDMETHOD.
METHOD on_event_layout.
result = client.
CASE result->get( )-event.
WHEN 'LAYOUT_OPEN'.
client->view_destroy( ).
result->nav_app_call( factory( layout = layout
open_layout = abap_true ) ).
WHEN 'LAYOUT_EDIT'.
client->view_destroy( ).
result->nav_app_call( factory( layout = layout
extended_layout = abap_true ) ).
WHEN 'LAYOUT_DELETE'.
client->view_destroy( ).
result->nav_app_call( factory( layout = layout
delete_layout = abap_true ) ).
ENDCASE.
ENDMETHOD.
METHOD db_delete_layout.
DATA(layout) = get_selected_layout( ).
DELETE z2ui5_t001 FROM @layout-s_head.
DELETE z2ui5_t002 FROM TABLE @layout-t_layout.
IF sy-subrc = 0.
COMMIT WORK AND WAIT.
ENDIF.
ENDMETHOD.
METHOD db_read_layout.
SELECT SINGLE * FROM z2ui5_t001
WHERE layout = @layout
AND tab = @tab
INTO CORRESPONDING FIELDS OF @result-s_head ##SUBRC_OK.
SELECT * FROM z2ui5_t002
WHERE layout = @layout
AND tab = @tab
INTO CORRESPONDING FIELDS OF TABLE @result-t_layout ##SUBRC_OK.
ENDMETHOD.
METHOD db_read_head.
SELECT * FROM z2ui5_t001
WHERE classname = @i_classname
AND tab = @i_tab
INTO CORRESPONDING FIELDS OF TABLE @r_result ##SUBRC_OK.
ENDMETHOD.
METHOD db_read_layout_multi.
SELECT layout,
tab,
descr,
classname,
def,
uname
FROM z2ui5_t001
WHERE classname = @i_classname
AND tab = @i_tab_name
INTO CORRESPONDING FIELDS OF TABLE @r_t001 ##SUBRC_OK.
ENDMETHOD.
METHOD db_read_layout_info.
SELECT layout,
tab,
fname,
rollname,
visible,
halign,
importance,
merge,
width,
text
FROM z2ui5_t002
WHERE layout = @i_def-layout
AND tab = @i_def-tab
INTO CORRESPONDING FIELDS OF TABLE @r_t002 ##SUBRC_OK.
ENDMETHOD.
ENDCLASS.