Skip to content

Commit b36e41f

Browse files
authored
enabled excel download of queried table (#4)
1 parent 554eb09 commit b36e41f

File tree

1 file changed

+65
-33
lines changed

1 file changed

+65
-33
lines changed

src/z2ui5_sql_cl_app_01.clas.abap

Lines changed: 65 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,41 @@ CLASS z2ui5_sql_cl_app_01 DEFINITION PUBLIC.
44

55
INTERFACES z2ui5_if_app.
66

7+
TYPES:
8+
BEGIN OF ty_value_map,
9+
pc TYPE string,
10+
ea TYPE string,
11+
END OF ty_value_map.
12+
13+
TYPES:
14+
BEGIN OF ty_column_config,
15+
label TYPE string,
16+
property TYPE string,
17+
type TYPE string,
18+
unit TYPE string,
19+
delimiter TYPE abap_bool,
20+
unit_property TYPE string,
21+
width TYPE string,
22+
scale TYPE i,
23+
text_align TYPE string,
24+
display_unit TYPE string,
25+
true_value TYPE string,
26+
false_value TYPE string,
27+
template TYPE string,
28+
input_format TYPE string,
29+
wrap TYPE abap_bool,
30+
auto_scale TYPE abap_bool,
31+
timezone TYPE string,
32+
timezone_property TYPE string,
33+
display_timezone TYPE abap_bool,
34+
utc TYPE abap_bool,
35+
value_map TYPE ty_value_map,
36+
END OF ty_column_config.
37+
38+
DATA: mt_column_config TYPE STANDARD TABLE OF ty_column_config WITH EMPTY KEY.
39+
DATA: mv_column_config TYPE string.
40+
41+
742
TYPES:
843
BEGIN OF ty_history_out,
944
s_db TYPE z2ui5_sql_cl_history_api=>ty_s_entry,
@@ -71,7 +106,6 @@ CLASS z2ui5_sql_cl_app_01 DEFINITION PUBLIC.
71106
DATA client TYPE REF TO z2ui5_if_client.
72107

73108
METHODS z2ui5_view_display.
74-
METHODS z2ui5_view_settings_popup.
75109
METHODS sql_db_read.
76110

77111

@@ -112,8 +146,7 @@ ENDCLASS.
112146

113147

114148

115-
CLASS z2ui5_sql_cl_app_01 IMPLEMENTATION.
116-
149+
CLASS Z2UI5_SQL_CL_APP_01 IMPLEMENTATION.
117150

118151

119152
METHOD history_db_read.
@@ -340,6 +373,7 @@ CLASS z2ui5_sql_cl_app_01 IMPLEMENTATION.
340373
ASSIGN ms_draft-s_preview-tab->* TO <tab>.
341374

342375
DATA(tab) = lo_view_nested->ui_table(
376+
id = `previewTab`
343377
rows = client->_bind_local( <tab> )
344378
editable = abap_false
345379
alternaterowcolors = abap_true
@@ -355,6 +389,12 @@ CLASS z2ui5_sql_cl_app_01 IMPLEMENTATION.
355389
)->input( width = `30%` value = client->_bind_edit( ms_draft-s_preview-search_field ) description = `All Column Search`
356390
submit = client->_event( `PREVIEW_SEARCH` )
357391
)->toolbar_spacer(
392+
)->_z2ui5( )->spreadsheet_export( tableid = `previewTab` icon = 'sap-icon://excel-attachment' type = 'Emphasized'
393+
columnconfig = client->_bind( val = mt_column_config
394+
custom_filter = NEW z2ui5_cl_cc_spreadsheet( )
395+
custom_mapper = z2ui5_cl_ajson_mapping=>create_lower_case( )
396+
)
397+
)->get_parent(
358398
).
359399

360400
DATA(lt_fields) = z2ui5_cl_util=>rtti_get_t_attri_by_struc( <tab> ).
@@ -373,6 +413,7 @@ CLASS z2ui5_sql_cl_app_01 IMPLEMENTATION.
373413

374414
ENDMETHOD.
375415

416+
376417
METHOD result_display.
377418

378419
DATA : lo_descr_table TYPE REF TO cl_abap_tabledescr,
@@ -398,6 +439,8 @@ CLASS z2ui5_sql_cl_app_01 IMPLEMENTATION.
398439

399440
MODIFY lt_comp FROM ls_comp.
400441

442+
APPEND VALUE ty_column_config( label = ls_comp-name property = ls_comp-name type = `String` ) TO mt_column_config.
443+
401444
ENDLOOP.
402445

403446
DATA(lo_new_type) = cl_abap_structdescr=>create( lt_comp ).
@@ -425,6 +468,7 @@ CLASS z2ui5_sql_cl_app_01 IMPLEMENTATION.
425468
history_db_save( ).
426469
client->view_model_update( ).
427470

471+
428472
ENDMETHOD.
429473

430474

@@ -446,17 +490,18 @@ CLASS z2ui5_sql_cl_app_01 IMPLEMENTATION.
446490

447491
ENDMETHOD.
448492

493+
449494
METHOD sql_on_run.
450495

451496
z2ui5_scl_cl_query_on_prem=>sql_logic(
452497
EXPORTING
453498
query = ms_draft-sql_input
454499
max_rows = ms_draft-sql_max_rows
455500
IMPORTING
456-
lw_from = data(lw_from)
457-
lo_result = data(lo_result)
458-
lw_query = data(lw_query)
459-
lt_fieldlist2 = data(lt_fieldlist2)
501+
lw_from = DATA(lw_from)
502+
lo_result = DATA(lo_result)
503+
lw_query = DATA(lw_query)
504+
lt_fieldlist2 = DATA(lt_fieldlist2)
460505
).
461506

462507
result_display(
@@ -486,7 +531,16 @@ CLASS z2ui5_sql_cl_app_01 IMPLEMENTATION.
486531

487532
IF ms_control-check_initialized = abap_false.
488533
ms_control-check_initialized = abap_true.
489-
z2ui5_on_init_set_app( ).
534+
535+
client->view_display( z2ui5_cl_xml_view=>factory(
536+
)->_z2ui5( )->timer( client->_event( `START` )
537+
)->_generic( ns = `html` name = `script` )->_cc_plain_xml( z2ui5_cl_cc_spreadsheet=>get_js( )
538+
)->stringify( ) ).
539+
540+
* client->nav_app_call( z2ui5_cl_popup_js_loader=>factory( z2ui5_cl_cc_spreadsheet=>get_js( mv_column_config ) ) ).
541+
542+
543+
* z2ui5_on_init_set_app( ).
490544
RETURN.
491545
ENDIF.
492546

@@ -561,8 +615,8 @@ CLASS z2ui5_sql_cl_app_01 IMPLEMENTATION.
561615
z2ui5_sql_cl_history_api=>db_create_draft( client->get( )-s_draft-id ).
562616

563617
CASE client->get( )-event.
564-
WHEN 'VIEW_SETTINGS_DIALOG'.
565-
z2ui5_view_settings_popup( ).
618+
WHEN 'START'.
619+
z2ui5_on_init_set_app( ).
566620

567621
WHEN `PREVIEW_FILTER`.
568622
client->nav_app_call( z2ui5_cl_popup_get_range_multi=>factory( ms_draft-s_preview-t_filter ) ).
@@ -594,7 +648,7 @@ CLASS z2ui5_sql_cl_app_01 IMPLEMENTATION.
594648
ENDMETHOD.
595649

596650

597-
METHOD z2ui5_on_init_set_app.
651+
METHOD z2ui5_on_init_set_app .
598652

599653
ms_draft-sql_input = `Select * from T100`.
600654
ms_draft-history_cont_size = `30%`.
@@ -662,26 +716,4 @@ CLASS z2ui5_sql_cl_app_01 IMPLEMENTATION.
662716
client->view_display( view->stringify( ) ).
663717

664718
ENDMETHOD.
665-
666-
667-
METHOD z2ui5_view_settings_popup.
668-
DATA(popup_settings) = z2ui5_cl_xml_view=>factory_popup( ).
669-
670-
popup_settings = popup_settings->view_settings_dialog(
671-
confirm = client->_event( 'ALL_EVENT' )
672-
sortitems = client->_bind_edit( t_tab_sort )
673-
groupitems = client->_bind_edit( t_tab_group )
674-
filteritems = client->_bind_edit( t_tab_filter )
675-
)->sort_items(
676-
)->view_settings_item( text = `{TEXT}` key = `{KEY}` selected = `{SELECTED}` )->get_parent( )->get_parent(
677-
)->group_items(
678-
)->view_settings_item( text = `{TEXT}` key = `{KEY}` selected = `{SELECTED}` )->get_parent( )->get_parent(
679-
)->filter_items(
680-
)->view_settings_filter_item( text = `{TEXT}` key = `{KEY}` multiselect = abap_true
681-
)->items(
682-
)->view_settings_item( text = `{TEXT}` key = `{KEY}` ).
683-
684-
client->popup_display( popup_settings->stringify( ) ).
685-
686-
ENDMETHOD.
687719
ENDCLASS.

0 commit comments

Comments
 (0)