mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-30 11:06:23 +08:00
parent
7f0c0a2b3a
commit
a308f5903c
|
@ -748,8 +748,7 @@ CLASS Z2UI5_CL_UTIL_API IMPLEMENTATION.
|
||||||
METHOD rtti_get_classname_by_ref.
|
METHOD rtti_get_classname_by_ref.
|
||||||
|
|
||||||
DATA(lv_classname) = cl_abap_classdescr=>get_class_name( in ).
|
DATA(lv_classname) = cl_abap_classdescr=>get_class_name( in ).
|
||||||
result = substring_after( val = lv_classname
|
result = substring_after( val = lv_classname sub = `\CLASS=` ).
|
||||||
sub = `\CLASS=` ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ CLASS z2ui5_cl_popup_get_range_multi DEFINITION
|
||||||
CLASS-METHODS factory
|
CLASS-METHODS factory
|
||||||
IMPORTING
|
IMPORTING
|
||||||
val TYPE z2ui5_cl_util=>ty_t_filter_multi
|
val TYPE z2ui5_cl_util=>ty_t_filter_multi
|
||||||
|
o_variant TYPE REF TO z2ui5_cl_popup_get_variant
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_get_range_multi.
|
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.
|
RETURNING VALUE(result) TYPE ty_s_result.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
|
DATA o_variant TYPE REF TO z2ui5_cl_popup_get_variant.
|
||||||
DATA client TYPE REF TO z2ui5_if_client.
|
DATA client TYPE REF TO z2ui5_if_client.
|
||||||
DATA check_initialized TYPE abap_bool.
|
DATA check_initialized TYPE abap_bool.
|
||||||
DATA mv_popup_name TYPE LINE OF string_table.
|
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 = NEW #( ).
|
||||||
r_result->ms_result-t_sql = val.
|
r_result->ms_result-t_sql = val.
|
||||||
|
r_result->o_variant = o_variant.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -53,20 +53,6 @@ CLASS z2ui5_cl_popup_layout_v2 DEFINITION
|
||||||
DATA mt_halign TYPE fixvalues.
|
DATA mt_halign TYPE fixvalues.
|
||||||
DATA mt_importance 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
|
CLASS-METHODS init_layout
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!tab TYPE REF TO data
|
!tab TYPE REF TO data
|
||||||
|
@ -83,11 +69,25 @@ CLASS z2ui5_cl_popup_layout_v2 DEFINITION
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE REF TO z2ui5_cl_popup_layout_v2.
|
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 client TYPE REF TO z2ui5_if_client.
|
||||||
DATA mv_init TYPE abap_bool.
|
DATA mv_init TYPE abap_bool.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
METHODS on_init.
|
METHODS on_init.
|
||||||
METHODS render_edit.
|
METHODS render_edit.
|
||||||
METHODS on_event.
|
METHODS on_event.
|
||||||
|
@ -103,7 +103,7 @@ PROTECTED SECTION.
|
||||||
METHODS save_layout.
|
METHODS save_layout.
|
||||||
METHODS render_open.
|
METHODS render_open.
|
||||||
METHODS get_selected_layout
|
METHODS get_selected_layout
|
||||||
RETURNING VALUE(result) TYPE ty_s_layout.
|
RETURNING VALUE(result) TYPE ty_s_layout.
|
||||||
METHODS get_layouts.
|
METHODS get_layouts.
|
||||||
METHODS init_edit.
|
METHODS init_edit.
|
||||||
METHODS render_delete.
|
METHODS render_delete.
|
||||||
|
@ -140,36 +140,288 @@ PROTECTED SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
|
CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD z2ui5_if_app~main.
|
|
||||||
|
|
||||||
me->client = client.
|
METHOD db_delete_layout.
|
||||||
|
|
||||||
IF mv_init = abap_false.
|
DATA(layout) = get_selected_layout( ).
|
||||||
mv_init = abap_true.
|
|
||||||
on_init( ).
|
|
||||||
|
|
||||||
CASE abap_true.
|
DELETE z2ui5_t001 FROM @layout-s_head.
|
||||||
WHEN mv_open.
|
DELETE z2ui5_t002 FROM TABLE @layout-t_layout.
|
||||||
get_layouts( ).
|
|
||||||
render_open( ).
|
|
||||||
|
|
||||||
WHEN mv_delete.
|
IF sy-subrc = 0.
|
||||||
get_layouts( ).
|
COMMIT WORK AND WAIT.
|
||||||
render_delete( ).
|
ENDIF.
|
||||||
|
|
||||||
WHEN OTHERS.
|
ENDMETHOD.
|
||||||
init_edit( ).
|
|
||||||
render_edit( ).
|
|
||||||
|
|
||||||
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.
|
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.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -195,12 +447,50 @@ CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
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.
|
METHOD render_edit.
|
||||||
|
|
||||||
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||||
DATA(dialog) = popup->dialog( title = 'Layout'
|
DATA(dialog) = popup->dialog( title = 'Layout'
|
||||||
contentwidth = '50%'
|
contentwidth = '50%'
|
||||||
afterclose = client->_event( 'CLOSE' ) )->content( ).
|
afterclose = client->_event( 'CANCEL' ) )->content( ).
|
||||||
|
|
||||||
DATA(tab) = dialog->table( growing = abap_true
|
DATA(tab) = dialog->table( growing = abap_true
|
||||||
items = client->_bind_edit( ms_layout-t_layout ) ).
|
items = client->_bind_edit( ms_layout-t_layout ) ).
|
||||||
|
@ -281,14 +571,27 @@ CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
|
||||||
)->footer( )->overflow_toolbar(
|
)->footer( )->overflow_toolbar(
|
||||||
)->toolbar_spacer(
|
)->toolbar_spacer(
|
||||||
)->button(
|
)->button(
|
||||||
text = 'Back'
|
text = 'Cancel'
|
||||||
icon = 'sap-icon://nav-back'
|
icon = 'sap-icon://sys-cancel-2'
|
||||||
press = client->_event( 'CLOSE' )
|
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(
|
)->button(
|
||||||
text = 'Save'
|
text = 'DB Save'
|
||||||
press = client->_event( 'EDIT_SAVE' )
|
press = client->_event( 'LAYOUT_SAVE' )
|
||||||
icon = 'sap-icon://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( ) ).
|
client->popup_display( popup->get_root( )->xml_get( ) ).
|
||||||
|
|
||||||
|
@ -296,69 +599,42 @@ CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD on_event.
|
METHOD render_open.
|
||||||
|
|
||||||
CASE client->get( )-event.
|
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||||
|
|
||||||
WHEN 'CLOSE'.
|
DATA(dialog) = popup->dialog( title = 'Layout'
|
||||||
client->popup_destroy( ).
|
afterclose = client->_event( 'CLOSE' ) ).
|
||||||
client->nav_app_leave( ).
|
|
||||||
|
|
||||||
WHEN 'EDIT_SAVE'.
|
dialog->table(
|
||||||
render_save( ).
|
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'.
|
dialog->footer( )->overflow_toolbar(
|
||||||
client->popup_destroy( ).
|
)->toolbar_spacer(
|
||||||
render_edit( ).
|
)->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'.
|
client->popup_display( popup->stringify( ) ).
|
||||||
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' ) ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -413,6 +689,14 @@ CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD result.
|
||||||
|
|
||||||
|
ms_result-s_layout = ms_layout.
|
||||||
|
result = ms_result.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD save_layout.
|
METHOD save_layout.
|
||||||
|
|
||||||
DATA t002 TYPE STANDARD TABLE OF z2ui5_t002 WITH EMPTY KEY.
|
DATA t002 TYPE STANDARD TABLE OF z2ui5_t002 WITH EMPTY KEY.
|
||||||
|
@ -497,84 +781,6 @@ CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
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.
|
METHOD select_layouts.
|
||||||
|
|
||||||
result = db_read_head(
|
result = db_read_head(
|
||||||
|
@ -585,240 +791,50 @@ CLASS z2ui5_cl_popup_layout_v2 IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_selected_layout.
|
METHOD z2ui5_if_app~main.
|
||||||
|
|
||||||
DATA(t001) = VALUE #( mt_t001[ selkz = abap_true ] OPTIONAL ).
|
me->client = client.
|
||||||
IF t001 IS NOT INITIAL.
|
|
||||||
|
|
||||||
result = db_read_layout(
|
IF mv_init = abap_false.
|
||||||
layout = t001-layout
|
mv_init = abap_true.
|
||||||
tab = t001-tab ).
|
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.
|
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
|
render_edit( ).
|
||||||
|
RETURN.
|
||||||
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.
|
ENDIF.
|
||||||
|
|
||||||
|
on_event( ).
|
||||||
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.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
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.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user