refactoring (#941)

* refactoring

* update

* update

* update
This commit is contained in:
oblomov 2024-02-23 01:02:51 +01:00 committed by GitHub
parent 4a514c688d
commit e4f0f44c56
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 414 additions and 36 deletions

View File

@ -31,6 +31,14 @@ CLASS z2ui5_cl_util_api DEFINITION
table TYPE string,
END OF ty_s_sql_result.
TYPES:
BEGIN OF ty_s_fix_val,
low TYPE string,
high TYPE string,
descr TYPE string,
END OF ty_s_fix_val.
TYPES ty_t_fix_val TYPE STANDARD TABLE OF ty_s_fix_val WITH EMPTY KEY.
CLASS-METHODS rtti_get_t_attri_by_include
IMPORTING
type TYPE REF TO cl_abap_datadescr
@ -43,7 +51,7 @@ CLASS z2ui5_cl_util_api DEFINITION
val TYPE data
langu TYPE clike DEFAULT sy-langu
RETURNING
VALUE(result) TYPE z2ui5_if_types=>ty_t_name_value.
VALUE(result) TYPE ty_t_fix_val ##NEEDED.
CLASS-METHODS source_get_method
IMPORTING
@ -358,33 +366,8 @@ ENDCLASS.
CLASS z2ui5_cl_util_api IMPLEMENTATION.
CLASS Z2UI5_CL_UTIL_API IMPLEMENTATION.
METHOD rtti_tab_get_relative_name.
FIELD-SYMBOLS <table> TYPE any.
TRY.
DATA(typedesc) = cl_abap_typedescr=>describe_by_data( table ).
CASE typedesc->kind.
WHEN cl_abap_typedescr=>kind_table.
DATA(tabledesc) = CAST cl_abap_tabledescr( typedesc ).
DATA(structdesc) = CAST cl_abap_structdescr( tabledesc->get_table_line_type( ) ).
result = structdesc->get_relative_name( ).
RETURN.
WHEN typedesc->kind_ref.
ASSIGN table->* TO <table>.
result = rtti_tab_get_relative_name( <table> ).
ENDCASE.
CATCH cx_root.
ENDTRY.
ENDMETHOD.
METHOD boolean_abap_2_json.
@ -849,7 +832,6 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
* DATA(lo_ele) = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( val ) ).
*
* DATA lv_langu TYPE c LENGTH 1.
*
* lv_langu = langu.
*
* lo_ele->get_ddic_fixed_values(
@ -865,14 +847,39 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
* LOOP AT lt_values REFERENCE INTO DATA(lr_fix).
*
* INSERT VALUE #(
* n = lr_fix->low
* v = lr_fix->ddtext
* low = lr_fix->low
* high = lr_fix->high
* descr = lr_fix->ddtext
* ) INTO TABLE result.
*
* ENDLOOP.
ASSERT 1 = 0.
result = VALUE #( ( n = val v = langu ) ).
ENDMETHOD.
METHOD rtti_tab_get_relative_name.
FIELD-SYMBOLS <table> TYPE any.
TRY.
DATA(typedesc) = cl_abap_typedescr=>describe_by_data( table ).
CASE typedesc->kind.
WHEN cl_abap_typedescr=>kind_table.
DATA(tabledesc) = CAST cl_abap_tabledescr( typedesc ).
DATA(structdesc) = CAST cl_abap_structdescr( tabledesc->get_table_line_type( ) ).
result = structdesc->get_relative_name( ).
RETURN.
WHEN typedesc->kind_ref.
ASSIGN table->* TO <table>.
result = rtti_tab_get_relative_name( <table> ).
ENDCASE.
CATCH cx_root.
ENDTRY.
ENDMETHOD.

View File

@ -72,15 +72,29 @@ CLASS z2ui5_cl_core_app IMPLEMENTATION.
attri = REF #( mt_attri )
app = mo_app ).
lo_model->attri_before_save( ).
result = z2ui5_cl_util=>xml_stringify( me ).
CATCH cx_root INTO DATA(x2).
TRY.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `<p>` && x2->get_text( ) && `<p> Please check if all generic data references are public attributes of your class`.
DATA(lo_dissolver) = NEW z2ui5_cl_core_dissolve_srv(
attri = REF #( mt_attri )
app = mo_app ).
lo_dissolver->main( ).
lo_dissolver->main( ).
lo_model = NEW z2ui5_cl_core_attri_srv(
attri = REF #( mt_attri )
app = mo_app ).
lo_model->attri_before_save( ).
result = z2ui5_cl_util=>xml_stringify( me ).
CATCH cx_root.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `<p>` && x2->get_text( ) && `<p> Please check if all generic data references are public attributes of your class`.
ENDTRY.
ENDTRY.
ENDMETHOD.

View File

@ -0,0 +1,340 @@
CLASS z2ui5_cl_popup_get_variant DEFINITION
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
TYPES:
BEGIN OF ty_s_layo,
layout TYPE c LENGTH 12,
tab TYPE c LENGTH 30,
descr TYPE c LENGTH 50,
classname TYPE c LENGTH 30,
def TYPE c LENGTH 1,
uname TYPE c LENGTH 12,
selkz TYPE abap_bool,
END OF ty_s_layo.
TYPES ty_t_layo TYPE STANDARD TABLE OF ty_s_layo WITH EMPTY KEY.
DATA mv_layout TYPE string.
DATA mv_descr TYPE string.
DATA mv_usr TYPE string.
DATA mv_def TYPE string.
DATA mt_t001 TYPE ty_t_layo.
CLASS-METHODS factory_save
IMPORTING
val TYPE z2ui5_cl_util=>ty_t_filter_multi
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_get_variant.
CLASS-METHODS factory_load
IMPORTING
val TYPE z2ui5_cl_util=>ty_t_filter_multi
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_get_variant.
METHODS db_read_multi.
METHODS db_save.
TYPES:
BEGIN OF ty_s_result,
t_sql TYPE z2ui5_cl_util=>ty_t_filter_multi,
check_confirmed TYPE abap_bool,
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 check_initialized TYPE abap_bool.
DATA mv_popup_name TYPE LINE OF string_table.
METHODS popup_display.
PRIVATE SECTION.
METHODS render_open.
METHODS render_delete.
METHODS render_save.
ENDCLASS.
CLASS z2ui5_cl_popup_get_variant IMPLEMENTATION.
METHOD db_read_multi.
ENDMETHOD.
METHOD db_save.
ENDMETHOD.
METHOD factory_load.
r_result = NEW #( ).
r_result->ms_result-t_sql = val.
ENDMETHOD.
METHOD factory_save.
r_result = NEW #( ).
r_result->ms_result-t_sql = val.
ENDMETHOD.
METHOD popup_display.
render_delete( ).
render_open( ).
render_save( ).
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
lo_popup = lo_popup->dialog( afterclose = client->_event( 'BUTTON_CANCEL' )
contentheight = `50%`
contentwidth = `50%`
title = 'Define Filter Conditons' ).
DATA(vbox) = lo_popup->vbox( height = `100%`
justifycontent = 'SpaceBetween' ).
DATA(item) = vbox->list( nodata = `no conditions defined`
items = client->_bind( ms_result-t_sql )
selectionchange = client->_event( 'SELCHANGE' )
)->custom_list_item( ).
DATA(grid) = item->grid( ).
grid->label( `{NAME}` ).
grid->multi_input( tokens = `{T_TOKEN}`
enabled = abap_false
valuehelprequest = client->_event( val = `LIST_OPEN` t_arg = VALUE #( ( `${NAME}` ) ) )
)->tokens(
)->token( key = `{KEY}`
text = `{TEXT}`
visible = `{VISIBLE}`
selected = `{SELKZ}`
editable = `{EDITABLE}` ).
grid->button( text = `Select`
press = client->_event( val = `LIST_OPEN` t_arg = VALUE #( ( `${NAME}` ) ) ) ).
grid->button( icon = 'sap-icon://delete'
type = `Transparent`
text = `Clear`
press = client->_event( val = `LIST_DELETE` t_arg = VALUE #( ( `${NAME}` ) ) ) ).
lo_popup->footer( )->overflow_toolbar(
)->button( text = `Clear All`
icon = 'sap-icon://delete'
type = `Transparent`
press = client->_event( val = `POPUP_DELETE_ALL` )
)->toolbar_spacer(
)->button( text = 'Cancel'
press = client->_event( 'BUTTON_CANCEL' )
)->button( text = 'OK'
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( lo_popup->stringify( ) ).
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 render_save.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
DATA(dialog) = popup->dialog( title = 'Save'
afterclose = client->_event( 'SAVE_CLOSE' ) ).
DATA(form) = dialog->simple_form( title = 'Layout'
editable = abap_true
labelspanxl = `4`
labelspanl = `4`
labelspanm = `4`
labelspans = `4`
adjustlabelspan = abap_false
).
form->toolbar( )->title( 'Layout' ).
form->content( 'form'
)->label( 'Layout'
)->input( client->_bind_edit( mv_layout )
)->label( 'Description'
)->input( client->_bind_edit( mv_descr ) ).
form->toolbar( )->title( `` ).
form->content( 'form'
)->label( 'Default Layout'
)->switch( type = 'AcceptReject' state = client->_bind_edit( mv_def )
)->label( 'User specific'
)->switch( type = 'AcceptReject' state = client->_bind_edit( mv_usr )
).
dialog->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'Back'
icon = 'sap-icon://nav-back'
press = client->_event( 'SAVE_CLOSE' )
)->button(
text = 'Save'
press = client->_event( 'SAVE_SAVE' )
type = 'Success'
icon = 'sap-icon://save' ).
client->popup_display( popup->get_root( )->xml_get( ) ).
ENDMETHOD.
METHOD result.
result = ms_result.
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.
IF check_initialized = abap_false.
check_initialized = abap_true.
popup_display( ).
RETURN.
ENDIF.
IF client->get( )-check_on_navigated = abap_true.
DATA(lo_popup) = CAST z2ui5_cl_popup_get_range( client->get_app( client->get( )-s_draft-id_prev_app ) ).
IF lo_popup->result( )-check_confirmed = abap_true.
ASSIGN ms_result-t_sql[ name = mv_popup_name ] TO FIELD-SYMBOL(<tab>).
<tab>-t_range = lo_popup->result( )-t_range.
<tab>-t_token = z2ui5_cl_util=>filter_get_token_t_by_range_t( <tab>-t_range ).
ENDIF.
popup_display( ).
ENDIF.
CASE client->get( )-event.
WHEN 'LIST_DELETE'.
DATA(lt_event) = client->get( )-t_event_arg.
ASSIGN ms_result-t_sql[ name = lt_event[ 1 ] ] TO <tab>.
CLEAR <tab>-t_token.
CLEAR <tab>-t_range.
client->popup_model_update( ).
WHEN 'LIST_OPEN'.
lt_event = client->get( )-t_event_arg.
mv_popup_name = lt_event[ 1 ].
DATA(ls_sql) = ms_result-t_sql[ name = mv_popup_name ].
client->nav_app_call( z2ui5_cl_popup_get_range=>factory( ls_sql-t_range ) ).
WHEN `BUTTON_CONFIRM`.
ms_result-check_confirmed = abap_true.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
WHEN `BUTTON_CANCEL`.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
WHEN `POPUP_DELETE_ALL`.
LOOP AT ms_result-t_sql REFERENCE INTO DATA(lr_sql).
CLEAR lr_sql->t_range.
CLEAR lr_sql->t_token.
ENDLOOP.
client->popup_model_update( ).
ENDCASE.
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_POPUP_GET_VARIANT</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>ui - popup get sel variants</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -15,6 +15,7 @@ CLASS z2ui5_cl_popup_layout_v2 DEFINITION
ddlanguage TYPE string,
ddtext TYPE string,
END OF fixvalue.
TYPES fixvalues TYPE STANDARD TABLE OF fixvalue WITH EMPTY KEY.
TYPES ty_s_t001 TYPE z2ui5_t001.
TYPES ty_t_t001 TYPE STANDARD TABLE OF ty_s_t001 WITH EMPTY KEY.