mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 02:58:20 +08:00

* demos * refactoring * renaming * renaming * Update abaplint.jsonc * abaplint issues * refactoring * demos * bugifx popup * cleanup * abalint fixes
378 lines
12 KiB
ABAP
378 lines
12 KiB
ABAP
CLASS z2ui5_cl_app_demo_13 DEFINITION PUBLIC.
|
|
|
|
PUBLIC SECTION.
|
|
|
|
INTERFACES z2ui5_if_app.
|
|
|
|
TYPES:
|
|
BEGIN OF ty_s_spfli,
|
|
selkz TYPE abap_bool,
|
|
carrid TYPE c LENGTH 3,
|
|
connid TYPE n LENGTH 4,
|
|
countryfr TYPE c LENGTH 3,
|
|
cityfrom TYPE c LENGTH 20,
|
|
airpfrom TYPE c LENGTH 3,
|
|
countryto TYPE c LENGTH 3,
|
|
cityto TYPE c LENGTH 20,
|
|
airpto TYPE c LENGTH 3,
|
|
END OF ty_s_spfli.
|
|
|
|
TYPES ty_t_table TYPE STANDARD TABLE OF ty_s_spfli WITH EMPTY KEY.
|
|
|
|
DATA mv_view TYPE string.
|
|
|
|
DATA:
|
|
BEGIN OF ms_import,
|
|
t_table TYPE ty_t_table,
|
|
segment_key TYPE string,
|
|
editor TYPE string,
|
|
END OF ms_import.
|
|
|
|
DATA:
|
|
BEGIN OF ms_export,
|
|
t_table TYPE ty_t_table,
|
|
segment_key TYPE string,
|
|
editor TYPE string,
|
|
END OF ms_export.
|
|
|
|
DATA:
|
|
BEGIN OF ms_edit,
|
|
t_table TYPE ty_t_table,
|
|
check_active TYPE abap_bool,
|
|
END OF ms_edit.
|
|
|
|
DATA check_initialized TYPE abap_bool.
|
|
"dummy helper - not needed when using db
|
|
DATA st_db TYPE ty_t_table.
|
|
|
|
PROTECTED SECTION.
|
|
|
|
METHODS z2ui5_on_event
|
|
IMPORTING
|
|
client TYPE REF TO z2ui5_if_client.
|
|
|
|
METHODS z2ui5_on_render_view_import
|
|
IMPORTING
|
|
client TYPE REF TO z2ui5_if_client.
|
|
|
|
METHODS z2ui5_on_render_view_edit
|
|
IMPORTING
|
|
client TYPE REF TO z2ui5_if_client.
|
|
|
|
METHODS z2ui5_on_render_view_export
|
|
IMPORTING
|
|
client TYPE REF TO z2ui5_if_client.
|
|
|
|
PRIVATE SECTION.
|
|
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS Z2UI5_CL_APP_DEMO_13 IMPLEMENTATION.
|
|
|
|
|
|
METHOD z2ui5_if_app~main.
|
|
"dummy helper - not needed when using db
|
|
lcl_db=>app = me.
|
|
|
|
|
|
IF check_initialized = abap_false.
|
|
check_initialized = abap_true.
|
|
|
|
ms_import-segment_key = 'json'.
|
|
ms_import-editor = lcl_db=>get_test_data_json( ).
|
|
ms_export-segment_key = 'json'.
|
|
mv_view = 'IMPORT_TABLE'.
|
|
|
|
ENDIF.
|
|
|
|
z2ui5_on_event( client ).
|
|
|
|
CASE mv_view.
|
|
WHEN 'IMPORT_TABLE'.
|
|
z2ui5_on_render_view_import( client ).
|
|
WHEN 'EDIT_TABLE'.
|
|
z2ui5_on_render_view_edit( client ).
|
|
WHEN 'EXPORT_TABLE'.
|
|
z2ui5_on_render_view_export( client ).
|
|
ENDCASE.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD z2ui5_on_event.
|
|
|
|
CASE client->get( )-event.
|
|
|
|
WHEN 'IMPORT_DB'.
|
|
ms_import-t_table = SWITCH #( ms_import-segment_key
|
|
WHEN 'json' THEN lcl_db=>get_table_by_json( ms_import-editor )
|
|
WHEN 'csv' THEN lcl_db=>get_table_by_csv( ms_import-editor )
|
|
WHEN 'xml' THEN lcl_db=>get_table_by_xml( ms_import-editor ) ).
|
|
|
|
lcl_db=>db_save( ms_import-t_table ).
|
|
client->popup_message_box( 'Table data imported successfully' ).
|
|
|
|
WHEN 'EXPORT_DB'.
|
|
ms_export-t_table = lcl_db=>db_read( ).
|
|
ms_export-editor = SWITCH #( ms_export-segment_key
|
|
WHEN 'json' THEN lcl_db=>get_json_by_table( ms_export-t_table )
|
|
WHEN 'csv' THEN lcl_db=>get_csv_by_table( ms_export-t_table )
|
|
WHEN 'xml' THEN lcl_db=>get_xml_by_table( ms_export-t_table ) ).
|
|
|
|
client->popup_message_box( 'Table data exported successfully' ).
|
|
|
|
WHEN 'IMPORT_CLEAR'.
|
|
CLEAR ms_import-editor.
|
|
|
|
WHEN 'EDIT_DB_READ'.
|
|
ms_edit-t_table = lcl_db=>db_read( ).
|
|
client->popup_message_box( 'Table read successfully' ).
|
|
|
|
WHEN 'EDIT_DB_SAVE'.
|
|
lcl_db=>db_save( ms_edit-t_table ).
|
|
client->popup_message_box( 'Table data saved to database successfully' ).
|
|
|
|
WHEN 'EDIT_ROW_DELETE'.
|
|
DELETE ms_edit-t_table WHERE selkz = abap_true.
|
|
|
|
WHEN 'EDIT_CHANGE_MODE'.
|
|
ms_edit-check_active = xsdbool( ms_edit-check_active = abap_false ).
|
|
|
|
WHEN 'EDIT_ROW_ADD'.
|
|
INSERT VALUE #( ) INTO TABLE ms_edit-t_table.
|
|
|
|
WHEN 'BTN_IMPORT'.
|
|
mv_view = 'IMPORT_TABLE'.
|
|
WHEN 'BTN_EDIT'.
|
|
mv_view = 'EDIT_TABLE'.
|
|
WHEN 'BTN_EXPORT'.
|
|
mv_view = 'EXPORT_TABLE'.
|
|
WHEN 'BACK'.
|
|
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
|
|
|
ENDCASE.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD z2ui5_on_render_view_edit.
|
|
|
|
DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell(
|
|
)->page(
|
|
title = 'abap2ui5 - Table Maintenance'
|
|
navbuttonpress = client->_event( 'BACK' )
|
|
shownavbutton = abap_true
|
|
)->header_content(
|
|
)->link(
|
|
text = 'Demo' target = '_blank'
|
|
href = `https://twitter.com/OblomovDev/status/1634206964291911682`
|
|
)->link(
|
|
text = 'Source_Code' target = '_blank'
|
|
href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) )
|
|
)->get_parent(
|
|
)->sub_header(
|
|
)->overflow_toolbar(
|
|
)->button(
|
|
text = '(1) Import Data'
|
|
press = client->_event( 'BTN_IMPORT' )
|
|
)->button(
|
|
text = '(2) Edit Data'
|
|
press = client->_event( 'BTN_EDIT' )
|
|
enabled = abap_false
|
|
)->button(
|
|
text = '(3) Export Data'
|
|
press = client->_event( 'BTN_EXPORT' )
|
|
)->get_parent( )->get_parent( ).
|
|
|
|
DATA(grid) = page->grid( 'L7 M7 S7' )->content( 'layout' ).
|
|
|
|
grid->simple_form( '2. Edit Data'
|
|
)->content( 'form'
|
|
)->label( 'Table'
|
|
)->input( 'SPFLI' ).
|
|
|
|
grid = page->grid( 'L12 M12 S12' )->content( 'layout' ).
|
|
|
|
DATA(cont) = grid->simple_form( )->content( 'form' ).
|
|
|
|
cont->overflow_toolbar(
|
|
)->button(
|
|
text = 'Reload'
|
|
icon = 'sap-icon://refresh'
|
|
press = client->_event( 'EDIT_DB_READ' )
|
|
)->toolbar_spacer(
|
|
)->button(
|
|
text = 'Delete Row'
|
|
icon = 'sap-icon://delete'
|
|
press = client->_event( 'EDIT_ROW_DELETE' )
|
|
)->button(
|
|
text = 'Add Row'
|
|
icon = 'sap-icon://add'
|
|
press = client->_event( 'EDIT_ROW_ADD' ) ).
|
|
|
|
DATA(scroll) = cont->scroll_container( vertical = abap_true horizontal = abap_true ).
|
|
|
|
DATA(tab) = scroll->table(
|
|
width = '100rem'
|
|
items = client->_bind( ms_edit-t_table )
|
|
mode = 'MultiSelect' ).
|
|
|
|
DATA(lt_fields) = lcl_db=>get_fieldlist_by_table( ms_edit-t_table ).
|
|
|
|
DATA(lo_columns) = tab->columns( ).
|
|
LOOP AT lt_fields INTO DATA(lv_field) FROM 2.
|
|
lo_columns->column( )->text( lv_field ).
|
|
ENDLOOP.
|
|
|
|
DATA(lo_cells) = tab->items( )->column_list_item( selected = '{SELKZ}' )->cells( ).
|
|
LOOP AT lt_fields INTO lv_field FROM 2.
|
|
lo_cells->input( `{` && lv_field && `}` ).
|
|
ENDLOOP.
|
|
|
|
page->footer(
|
|
)->overflow_toolbar(
|
|
)->toolbar_spacer(
|
|
)->button(
|
|
text = 'Save'
|
|
press = client->_event( 'EDIT_DB_SAVE' )
|
|
type = 'Emphasized'
|
|
icon = 'sap-icon://upload-to-cloud' ).
|
|
|
|
client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD z2ui5_on_render_view_export.
|
|
|
|
DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell(
|
|
)->page(
|
|
title = 'abap2ui5 - Table Maintenance'
|
|
navbuttonpress = client->_event( 'BACK' )
|
|
shownavbutton = abap_true
|
|
)->header_content(
|
|
)->link(
|
|
text = 'Demo'
|
|
href = `https://twitter.com/OblomovDev/status/1634206964291911682`
|
|
)->link(
|
|
text = 'Source_Code'
|
|
href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) )
|
|
)->get_parent(
|
|
)->sub_header(
|
|
)->overflow_toolbar(
|
|
)->button(
|
|
text = '(1) Import Data'
|
|
press = client->_event( 'BTN_IMPORT' )
|
|
)->button(
|
|
text = '(2) Edit Data'
|
|
press = client->_event( 'BTN_EDIT' )
|
|
)->button(
|
|
text = '(3) Export Data'
|
|
press = client->_event( 'BTN_EXPORT' )
|
|
enabled = abap_false
|
|
)->get_parent( )->get_parent( ).
|
|
|
|
DATA(grid) = page->grid( 'L7 M7 S7' )->content( 'layout' ).
|
|
|
|
grid->simple_form( '3. Export Data'
|
|
)->content( 'form'
|
|
)->label( 'Table'
|
|
)->input( 'SPFLI'
|
|
)->label( 'Format'
|
|
)->segmented_button( client->_bind( ms_export-segment_key )
|
|
)->items(
|
|
)->segmented_button_item( key = 'json' text = 'json'
|
|
)->segmented_button_item( key = 'csv' text = 'csv'
|
|
)->segmented_button_item( key = 'xml' text = 'xml' ).
|
|
|
|
grid = page->grid( 'L12 M12 S12' )->content( 'layout' ).
|
|
|
|
grid->scroll_container( '75%'
|
|
)->code_editor(
|
|
type = COND #( WHEN ms_export-segment_key = 'csv' THEN |plain_text| ELSE ms_import-segment_key )
|
|
value = client->_bind( ms_export-editor )
|
|
editable = abap_false ).
|
|
|
|
page->footer(
|
|
)->overflow_toolbar(
|
|
)->toolbar_spacer(
|
|
)->button(
|
|
text = 'Export'
|
|
press = client->_event( 'EXPORT_DB' )
|
|
type = 'Emphasized'
|
|
icon = 'sap-icon://download-from-cloud' ).
|
|
|
|
client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD z2ui5_on_render_view_import.
|
|
|
|
DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell(
|
|
)->page(
|
|
title = 'abap2UI5 - Table Maintenance'
|
|
navbuttonpress = client->_event( 'BACK' )
|
|
shownavbutton = abap_true
|
|
)->header_content(
|
|
)->link(
|
|
text = 'Demo'
|
|
href = `https://twitter.com/OblomovDev/status/1634206964291911682`
|
|
)->link(
|
|
text = 'Source_Code'
|
|
href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) )
|
|
)->get_parent(
|
|
)->sub_header(
|
|
)->overflow_toolbar(
|
|
)->button(
|
|
text = '(1) Import Data'
|
|
press = client->_event( 'BTN_IMPORT' )
|
|
enabled = abap_false
|
|
)->button(
|
|
text = '(2) Edit Data'
|
|
press = client->_event( 'BTN_EDIT' )
|
|
)->button(
|
|
text = '(3) Export Data'
|
|
press = client->_event( 'BTN_EXPORT' )
|
|
)->get_parent( )->get_parent( ).
|
|
|
|
DATA(grid) = page->grid( 'L7 M12 S12' )->content( 'layout' ).
|
|
|
|
grid->simple_form( '1. Import Data'
|
|
)->content( 'form'
|
|
)->label( 'Table'
|
|
)->input( 'SPFLI'
|
|
)->label( 'Format'
|
|
)->segmented_button( client->_bind( ms_import-segment_key ) )->get(
|
|
)->items( )->get(
|
|
)->segmented_button_item( key = 'json' text = 'json'
|
|
)->segmented_button_item( key = 'csv' text = 'csv'
|
|
)->segmented_button_item( key = 'xml' text = 'xml' ).
|
|
|
|
grid = page->grid( 'L12 M12 S12' )->content( 'layout' ).
|
|
|
|
grid->scroll_container( '75%'
|
|
)->code_editor(
|
|
type = COND #( WHEN ms_import-segment_key = 'csv' THEN |plain_text| ELSE ms_import-segment_key )
|
|
value = client->_bind( ms_import-editor )
|
|
editable = abap_true ).
|
|
|
|
page->footer( )->overflow_toolbar(
|
|
)->button(
|
|
text = 'Clear'
|
|
press = client->_event( 'IMPORT_CLEAR' )
|
|
icon = 'sap-icon://delete'
|
|
)->toolbar_spacer(
|
|
)->button(
|
|
text = 'Import'
|
|
press = client->_event( 'IMPORT_DB' )
|
|
type = 'Emphasized'
|
|
icon = 'sap-icon://upload-to-cloud' ).
|
|
|
|
client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ).
|
|
|
|
ENDMETHOD.
|
|
ENDCLASS.
|