diff --git a/ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk
index 64dc423..d1fad17 100644
--- a/ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk
+++ b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk
@@ -269,10 +269,12 @@ TYPES: BEGIN OF ts_alv_types,
tt_alv_types TYPE HASHED TABLE OF ts_alv_types WITH UNIQUE KEY seoclass.
TYPES: BEGIN OF ts_sort_values,
- fieldname TYPE fieldname,
- row_int TYPE zexcel_cell_row,
- value TYPE REF TO data,
- new TYPE flag,
+ fieldname TYPE fieldname,
+ row_int TYPE zexcel_cell_row,
+ value TYPE REF TO data,
+ new TYPE flag,
+ sort_level TYPE int4,
+ is_collapsed type flag,
END OF ts_sort_values,
tt_sort_values TYPE HASHED TABLE OF ts_sort_values WITH UNIQUE KEY fieldname.
@@ -443,11 +445,11 @@ endmethod.
* Object CL_SALV_RESULT
ls_objects-seoclass = 'CL_SALV_EX_RESULT_DATA_TABLE '.
- ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_EX_RESULT'.
+ ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_EX'.
INSERT ls_objects INTO TABLE wt_objects.
* Object CL_SALV_WD_RESULT
ls_objects-seoclass = 'CL_SALV_WD_RESULT_DATA_TABLE '.
- ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_WD_RESULT'.
+ ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_RESULT_WD'.
INSERT ls_objects INTO TABLE wt_objects.
ENDMETHOD.
@@ -1296,16 +1298,7 @@ ENDMETHOD.
METHOD loop_subtotal.
- TYPES: BEGIN OF ts_line,
- sort_level TYPE int4,
- text TYPE string,
- is_collapsed TYPE flag,
- is_visible TYPE flag,
- row_int_start TYPE zexcel_cell_row,
- col_alpha TYPE zexcel_cell_column_alpha,
- columnname TYPE fieldname,
- END OF ts_line,
- tt_line TYPE STANDARD TABLE OF ts_line.
+
DATA: lo_tabdescr TYPE REF TO cl_abap_structdescr,
lo_data TYPE REF TO data,
l_row_header TYPE zexcel_cell_row VALUE '2',
@@ -1327,14 +1320,14 @@ ENDMETHOD.
ls_sort_values TYPE ts_sort_values,
ls_subtotal_rows TYPE ts_subtotal_rows,
l_sort_level TYPE int4,
- ls_line TYPE ts_line,
- lt_line TYPE tt_line,
+ l_hidden TYPE int4,
l_line TYPE i,
l_guid TYPE guid_22,
l_tabix TYPE sy-tabix,
l_cells TYPE i,
l_count TYPE i,
- l_table_row TYPE i.
+ l_table_row TYPE i,
+ lt_fcat TYPE zexcel_t_converter_fcat.
FIELD-SYMBOLS: <fs_stab> TYPE ANY,
<fs_tab> TYPE STANDARD TABLE,
@@ -1356,10 +1349,14 @@ ENDMETHOD.
READ TABLE <fs_tab> ASSIGNING <fs_stab> INDEX 1.
IF sy-subrc = 0.
l_row_int = i_row_int + 1.
- LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true.
+ lt_fcat = wt_fieldcatalog.
+ SORT lt_fcat BY sort_level DESCENDING.
+ LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true.
ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>.
- ls_sort_values-fieldname = <fs_sfcat>-columnname.
- ls_sort_values-row_int = l_row_int.
+ ls_sort_values-fieldname = <fs_sfcat>-columnname.
+ ls_sort_values-row_int = l_row_int.
+ ls_sort_values-sort_level = <fs_sfcat>-sort_level.
+ ls_sort_values-is_collapsed = <fs_sfcat>-is_collapsed.
CREATE DATA ls_sort_values-value LIKE <fs_fldval>.
ASSIGN ls_sort_values-value->* TO <fs_sortval>.
<fs_sortval> = <fs_fldval>.
@@ -1367,12 +1364,24 @@ ENDMETHOD.
ENDLOOP.
ENDIF.
l_row_int = i_row_int.
+* Let's check if we need to hide a sort level.
+ DESCRIBE TABLE wt_sort_values LINES l_line.
+ IF l_line <= 1.
+ CLEAR l_hidden.
+ ELSE.
+ LOOP AT wt_sort_values INTO ls_sort_values WHERE is_collapsed = abap_false.
+ IF l_hidden < ls_sort_values-sort_level.
+ l_hidden = ls_sort_values-sort_level.
+ ENDIF.
+ ENDLOOP.
+ ENDIF.
+ ADD 1 TO l_hidden. " As this is the first level we show.
* First loop without formular only addtional rows with subtotal text.
LOOP AT <fs_tab> ASSIGNING <fs_stab>.
- l_table_row = sy-tabix.
ADD 1 TO l_row_int. " 1 is for header row.
- REFRESH lt_line.
- LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true.
+ l_row_int_start = l_row_int.
+ SORT lt_fcat BY sort_level DESCENDING.
+ LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true.
l_col_int = i_col_int + <fs_sfcat>-position - 1.
l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ).
* Now the cell values
@@ -1382,102 +1391,79 @@ ENDMETHOD.
IF sy-subrc = 0.
ASSIGN <fs_sortv>-value->* TO <fs_sortval>.
IF <fs_sortval> <> <fs_fldval> OR <fs_sortv>-new = abap_true.
-* First let's write the value as it has to appear.
- CLEAR ls_line.
- ls_line-text = create_text_subtotal( i_value = <fs_sortval>
- i_totals_function = <fs_sfcat>-totals_function ).
- ls_line-col_alpha = l_col_alpha.
- ls_line-sort_level = <fs_sfcat>-sort_level.
- ls_line-is_collapsed = <fs_sfcat>-is_collapsed.
- ls_line-row_int_start = <fs_sortv>-row_int.
- ls_line-columnname = <fs_sfcat>-columnname.
-
- INSERT ls_line INTO TABLE lt_line.
+* First let's remmember the subtotal values as it has to appear later.
+ ls_subtotal_rows-row_int = l_row_int.
+ ls_subtotal_rows-row_int_start = <fs_sortv>-row_int.
+ ls_subtotal_rows-columnname = <fs_sfcat>-columnname.
+ INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows.
+* Now let's write the subtotal line
+ l_cell_value = create_text_subtotal( i_value = <fs_sortval>
+ i_totals_function = <fs_sfcat>-totals_function ).
+ wo_worksheet->set_cell( ip_column = l_col_alpha
+ ip_row = l_row_int
+ ip_value = l_cell_value
+ ip_abap_type = cl_abap_typedescr=>typekind_string
+ ip_style = <fs_sfcat>-style_subtotal ).
+ lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ).
+ lo_row_dim->set_outline_level( ip_outline_level = <fs_sfcat>-sort_level ) .
+ IF <fs_sfcat>-is_collapsed = abap_true.
+ IF <fs_sfcat>-sort_level > l_hidden.
+ lo_row_dim->set_visible( ip_visible = abap_false ) .
+ ENDIF.
+ lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) .
+ ENDIF.
* Now let's change the key
+ ADD 1 TO l_row_int.
<fs_sortval> = <fs_fldval>.
<fs_sortv>-new = abap_false.
- <fs_sortv>-row_int = l_row_int.
+ l_line = <fs_sortv>-sort_level.
+ LOOP AT wt_sort_values ASSIGNING <fs_sortv> WHERE sort_level >= l_line.
+ <fs_sortv>-row_int = l_row_int.
+ ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
-* Now we must write the lines in correct sequence.
- l_row_int_start = l_row_int.
- SORT lt_line BY sort_level DESCENDING.
- DESCRIBE TABLE lt_line LINES l_line.
- LOOP AT lt_line INTO ls_line.
- l_tabix = sy-tabix.
- ls_subtotal_rows-row_int = l_row_int.
- ls_subtotal_rows-row_int_start = ls_line-row_int_start.
- ls_subtotal_rows-columnname = ls_line-columnname.
- INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows.
-
- wo_worksheet->set_cell( ip_column = ls_line-col_alpha
- ip_row = l_row_int
- ip_value = ls_line-text
- ip_abap_type = cl_abap_typedescr=>typekind_string
- ip_style = <fs_sfcat>-style_subtotal ).
- READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = ls_line-columnname.
- IF sy-subrc = 0.
- IF l_line > l_tabix . " Only if we have more than 1 and subtotal does not change on lower level but on higher does
- <fs_sortv>-new = abap_true.
- ENDIF.
- <fs_sortv>-row_int = l_row_int_start + l_line.
- ENDIF.
- l_sort_level = ls_line-sort_level.
- lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ).
- lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) .
- lo_row_dim->set_collapsed( ip_collapsed = ls_line-is_collapsed ) .
- ADD 1 TO l_row_int.
- ENDLOOP.
ENDLOOP.
ADD 1 TO l_row_int.
- REFRESH lt_line.
- LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true.
+ l_row_int_start = l_row_int.
+ SORT lt_fcat BY sort_level DESCENDING.
+ LOOP AT lt_fcat ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true.
l_col_int = i_col_int + <fs_sfcat>-position - 1.
l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ).
READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname.
IF sy-subrc = 0.
ASSIGN <fs_sortv>-value->* TO <fs_sortval>.
+ ls_subtotal_rows-row_int = l_row_int.
+ ls_subtotal_rows-row_int_start = <fs_sortv>-row_int.
+ ls_subtotal_rows-columnname = <fs_sfcat>-columnname.
+ INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows.
* First let's write the value as it has to appear.
- CLEAR ls_line.
- ls_line-text = create_text_subtotal( i_value = <fs_sortval>
- i_totals_function = <fs_sfcat>-totals_function ).
- ls_line-col_alpha = l_col_alpha.
- ls_line-sort_level = <fs_sfcat>-sort_level.
- ls_line-is_collapsed = <fs_sfcat>-is_collapsed.
- ls_line-row_int_start = <fs_sortv>-row_int.
- ls_line-columnname = <fs_sfcat>-columnname.
- INSERT ls_line INTO TABLE lt_line.
+ l_cell_value = create_text_subtotal( i_value = <fs_sortval>
+ i_totals_function = <fs_sfcat>-totals_function ).
+ wo_worksheet->set_cell( ip_column = l_col_alpha
+ ip_row = l_row_int
+ ip_value = l_cell_value
+ ip_abap_type = cl_abap_typedescr=>typekind_string
+ ip_style = <fs_sfcat>-style_subtotal ).
+
+ l_sort_level = <fs_sfcat>-sort_level.
+ lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ).
+ lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) .
+ IF <fs_sfcat>-is_collapsed = abap_true.
+ IF <fs_sfcat>-sort_level > l_hidden.
+ lo_row_dim->set_visible( ip_visible = abap_false ) .
+ ENDIF.
+ lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) .
+ ENDIF.
+ ADD 1 TO l_row_int.
ENDIF.
ENDLOOP.
-* Now we must write the lines in correct sequence.
- l_row_int_start = l_row_int.
- SORT lt_line BY sort_level DESCENDING.
- DESCRIBE TABLE lt_line LINES l_line.
- LOOP AT lt_line INTO ls_line.
- ls_subtotal_rows-row_int = l_row_int.
- ls_subtotal_rows-row_int_start = ls_line-row_int_start.
- ls_subtotal_rows-columnname = ls_line-columnname.
- INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows.
-
- wo_worksheet->set_cell( ip_column = ls_line-col_alpha
- ip_row = l_row_int
- ip_value = ls_line-text
- ip_abap_type = cl_abap_typedescr=>typekind_string
- ip_style = <fs_sfcat>-style_subtotal ).
-
- l_sort_level = ls_line-sort_level.
- lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ).
- lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) .
- lo_row_dim->set_collapsed( ip_collapsed = ls_line-is_collapsed ) .
- ADD 1 TO l_row_int.
- ENDLOOP.
* Let's write the Grand total
l_sort_level = 0.
lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ).
lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) .
- lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) .
+* lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) . Not on grand total
l_text = create_text_subtotal( i_value = 'Grand'(002)
i_totals_function = <fs_sfcat>-totals_function ).
@@ -1532,6 +1518,13 @@ ENDMETHOD.
ip_row = l_row_int
ip_formula = l_formula
ip_style = <fs_sfcat>-style_subtotal ).
+ IF <fs_sfcat>-is_collapsed = abap_true.
+ lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ).
+ lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ).
+ IF <fs_sfcat>-sort_level > l_hidden.
+ lo_row_dim->set_visible( ip_visible = abap_false ) .
+ ENDIF.
+ ENDIF.
ADD 1 TO l_row_int.
ELSE.
EXIT.
@@ -1544,9 +1537,13 @@ ENDMETHOD.
EXIT.
ENDIF.
ENDDO.
+* Let's set the row dimension values
lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ).
lo_row_dim->set_outline_level( ip_outline_level = ws_layout-max_subtotal_level ) .
- lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) .
+ IF <fs_sfcat>-is_collapsed = abap_true.
+ lo_row_dim->set_visible( ip_visible = abap_false ) .
+ lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) .
+ ENDIF.
* Now let's write the cell values
IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true.
l_style = get_color_style( i_row = l_table_row
@@ -1600,6 +1597,10 @@ ENDMETHOD.
ip_row = l_row_int
ip_formula = l_formula
ip_style = <fs_sfcat>-style_subtotal ).
+ IF <fs_sfcat>-is_collapsed = abap_true.
+ lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ).
+ lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ).
+ ENDIF.
ADD 1 TO l_row_int.
ELSE.
EXIT.
@@ -1725,25 +1726,27 @@ ENDMETHOD.
- method set_cell_format.
- data: l_format type zexcel_number_format.
+ METHOD set_cell_format.
+ DATA: l_format TYPE zexcel_number_format.
- clear r_format.
- case i_inttype.
- when cl_abap_typedescr=>typekind_date.
+ CLEAR r_format.
+ CASE i_inttype.
+ WHEN cl_abap_typedescr=>typekind_date.
r_format = wo_worksheet->get_default_excel_date_format( ).
- when cl_abap_typedescr=>typekind_time.
+ WHEN cl_abap_typedescr=>typekind_time.
r_format = zcl_excel_style_number_format=>c_format_date_time6.
- when cl_abap_typedescr=>typekind_float or cl_abap_typedescr=>typekind_packed.
- if i_decimals > 0 .
+ WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed.
+ IF i_decimals > 0 .
l_format = '#,##0.'.
- do i_decimals times.
- concatenate l_format '0' into l_format.
- enddo.
+ DO i_decimals TIMES.
+ CONCATENATE l_format '0' INTO l_format.
+ ENDDO.
r_format = l_format.
- endif.
- endcase.
-endmethod.
+ ENDIF.
+ WHEN cl_abap_typedescr=>typekind_int OR cl_abap_typedescr=>typekind_int1 OR cl_abap_typedescr=>typekind_int2.
+ r_format = '#,##0'.
+ ENDCASE.
+ENDMETHOD.
METHOD set_fieldcatalog.
diff --git a/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_ALV.slnk b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_ALV.slnk
index 2fe4c1c..edc61d9 100644
--- a/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_ALV.slnk
+++ b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_ALV.slnk
@@ -506,9 +506,9 @@ ENDMETHOD.
WHEN 'A'.
ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_min.
WHEN 'B' .
- ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_average.
- WHEN 'C' .
ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_max.
+ WHEN 'C' .
+ ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_average.
WHEN OTHERS.
CLEAR ls_fieldcatalog-totals_function .
ENDCASE.
@@ -540,7 +540,7 @@ ENDMETHOD.
IF sy-subrc = 0.
ls_fieldcatalog-sort_level = 0 .
ls_fieldcatalog-is_subtotalled = ls_sort-subtot.
- ls_fieldcatalog-is_collapsed = ls_sort-comp.
+ ls_fieldcatalog-is_collapsed = ls_sort-expa.
IF ls_fieldcatalog-is_subtotalled = abap_true.
ls_fieldcatalog-sort_level = ls_sort-spos.
ls_fieldcatalog-totals_function = zcl_excel_table=>totals_function_sum. " we need function for text
diff --git a/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_RESULT.slnk b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_RESULT.slnk
new file mode 100644
index 0000000..0d3c5a2
--- /dev/null
+++ b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_RESULT.slnk
@@ -0,0 +1,61 @@
+
+
+ class ZCL_EXCEL_CONVERTER_RESULT definition
+ public
+ inheriting from ZCL_EXCEL_CONVERTER_ALV
+ abstract
+ create public .
+
+*"* public components of class ZCL_EXCEL_CONVERTER_RESULT
+*"* do not include other source files here!!!
+public section.
+ *"* protected components of class ZCL_EXCEL_CONVERTER_RESULT
+*"* do not include other source files here!!!
+protected section.
+
+ methods GET_TABLE
+ importing
+ !IO_OBJECT type ref to OBJECT
+ returning
+ value(RO_DATA) type ref to DATA .
+ *"* private components of class ZCL_EXCEL_CONVERTER_RESULT
+*"* do not include other source files here!!!
+private section.
+ *"* local class implementation for public class
+*"* use this source file for the implementation part of
+*"* local helper classes
+ *"* use this source file for any type declarations (class
+*"* definitions, interfaces or data types) you need for method
+*"* implementation or private method's signature
+ *"* use this source file for any macro definitions you need
+*"* in the implementation part of the class
+
+
+
+
+ METHOD get_table.
+ DATA: lo_object TYPE REF TO object,
+ ls_seoclass TYPE seoclass,
+ l_method TYPE string.
+
+ SELECT SINGLE * INTO ls_seoclass
+ FROM seoclass
+ WHERE clsname = 'IF_SALV_BS_DATA_SOURCE'.
+
+ IF sy-subrc = 0.
+ l_method = 'GET_TABLE_REF'.
+ lo_object ?= io_object.
+ CALL METHOD lo_object->(l_method)
+ RECEIVING
+ value = ro_data.
+ ELSE.
+ l_method = 'GET_REF_TO_TABLE'.
+ lo_object ?= io_object.
+ CALL METHOD lo_object->(l_method)
+ RECEIVING
+ value = ro_data.
+ ENDIF.
+
+ENDMETHOD.
+
+
diff --git a/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_RESULT_EX.slnk b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_RESULT_EX.slnk
new file mode 100644
index 0000000..2855d2c
--- /dev/null
+++ b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_RESULT_EX.slnk
@@ -0,0 +1,97 @@
+
+
+ class ZCL_EXCEL_CONVERTER_RESULT_EX definition
+ public
+ inheriting from ZCL_EXCEL_CONVERTER_RESULT
+ final
+ create public .
+
+*"* public components of class ZCL_EXCEL_CONVERTER_RESULT_EX
+*"* do not include other source files here!!!
+public section.
+
+ methods ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT
+ redefinition .
+ methods ZIF_EXCEL_CONVERTER~CREATE_FIELDCATALOG
+ redefinition .
+ *"* protected components of class ZCL_EXCEL_CONVERTER_RESULT_EX
+*"* do not include other source files here!!!
+protected section.
+ *"* private components of class ZCL_EXCEL_CONVERTER_EX_RESULT
+*"* do not include other source files here!!!
+private section.
+ *"* local class implementation for public class
+*"* use this source file for the implementation part of
+*"* local helper classes
+ *"* use this source file for any type declarations (class
+*"* definitions, interfaces or data types) you need for method
+*"* implementation or private method's signature
+ *"* use this source file for any macro definitions you need
+*"* in the implementation part of the class
+
+
+
+
+
+ METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT.
+
+ DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table.
+
+ TRY.
+ lo_result ?= io_object.
+ CATCH cx_sy_move_cast_error .
+ RAISE EXCEPTION TYPE zcx_excel.
+ ENDTRY.
+
+ENDMETHOD.
+
+
+ METHOD zif_excel_converter~create_fieldcatalog.
+ DATA: lo_result TYPE REF TO cl_salv_ex_result_data_table,
+ lo_ex_cm TYPE REF TO cl_salv_ex_cm,
+ lo_data TYPE REF TO data.
+
+ FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE.
+
+ TRY.
+ zif_excel_converter~can_convert_object( io_object = io_object ).
+ ENDTRY.
+
+ lo_result ?= io_object.
+
+ CLEAR: es_layout,
+ et_fieldcatalog.
+
+ IF lo_result IS BOUND.
+ lo_data = get_table( io_object = lo_result->r_model->r_data ).
+ IF lo_data IS BOUND.
+ ASSIGN lo_data->* TO <fs_table> .
+
+ lo_ex_cm ?= lo_result->r_model->r_model.
+ ws_layo = lo_ex_cm->s_layo.
+* T_DRDN Instance Attribute Public Type LVC_T_DROP
+ wt_fcat = lo_ex_cm->t_fcat.
+ wt_filt = lo_ex_cm->t_filt.
+* T_HYPE Instance Attribute Public Type LVC_T_HYPE
+* T_SELECTED_CELLS Instance Attribute Public Type LVC_T_CELL
+* T_SELECTED_COLUMNS Instance Attribute Public Type LVC_T_COL
+ wt_sort = lo_ex_cm->t_sort.
+
+ apply_sort( EXPORTING it_table = <fs_table>
+ IMPORTING eo_table = eo_table ) .
+
+ get_color( EXPORTING io_table = eo_table
+ IMPORTING et_colors = et_colors ) .
+
+ get_filter( EXPORTING io_table = eo_table
+ IMPORTING et_filter = et_filter ) .
+
+ update_catalog( CHANGING cs_layout = es_layout
+ ct_fieldcatalog = et_fieldcatalog ).
+ else.
+* We have a problem and should stop here.
+ ENDIF.
+ ENDIF.
+ENDMETHOD.
+
+
diff --git a/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_WD_RESULT.slnk b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_RESULT_WD.slnk
similarity index 59%
rename from ZA2X/CLAS/ZCL_EXCEL_CONVERTER_WD_RESULT.slnk
rename to ZA2X/CLAS/ZCL_EXCEL_CONVERTER_RESULT_WD.slnk
index 92aead8..c3d4eae 100644
--- a/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_WD_RESULT.slnk
+++ b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER_RESULT_WD.slnk
@@ -1,12 +1,12 @@
-
- class ZCL_EXCEL_CONVERTER_WD_RESULT definition
+
+ class ZCL_EXCEL_CONVERTER_RESULT_WD definition
public
- inheriting from ZCL_EXCEL_CONVERTER_ALV
+ inheriting from ZCL_EXCEL_CONVERTER_RESULT
final
create public .
-*"* public components of class ZCL_EXCEL_CONVERTER_WD_RESULT
+*"* public components of class ZCL_EXCEL_CONVERTER_RESULT_WD
*"* do not include other source files here!!!
public section.
@@ -14,7 +14,7 @@ public section.
redefinition .
methods ZIF_EXCEL_CONVERTER~CREATE_FIELDCATALOG
redefinition .
- *"* protected components of class ZCL_EXCEL_CONVERTER_SALV_TABLE
+ *"* protected components of class ZCL_EXCEL_CONVERTER_RESULT_WD
*"* do not include other source files here!!!
protected section.
*"* private components of class ZCL_EXCEL_CONVERTER_EX_RESULT
@@ -28,12 +28,12 @@ private section.
*"* implementation or private method's signature
*"* use this source file for any macro definitions you need
*"* in the implementation part of the class
-
-
-
+
+
+
-
- METHOD zif_excel_converter~can_convert_object.
+
+ METHOD ZIF_EXCEL_CONVERTER~CAN_CONVERT_OBJECT.
DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table.
@@ -45,10 +45,9 @@ private section.
ENDMETHOD.
-
+
METHOD zif_excel_converter~create_fieldcatalog.
DATA: lo_result TYPE REF TO cl_salv_wd_result_data_table,
- lo_bs_data TYPE REF TO cl_salv_bs_data_table,
lo_ex_cm TYPE REF TO cl_salv_ex_cm,
lo_data TYPE REF TO data.
@@ -64,10 +63,9 @@ ENDMETHOD.
et_fieldcatalog.
IF lo_result IS BOUND.
- lo_bs_data ?= lo_result->r_model->r_data.
- lo_data = lo_bs_data->get_ref_to_table( ) .
- ASSIGN lo_data->* TO <fs_table> .
-
+ lo_data = get_table( io_object = lo_result->r_model->r_data ).
+ IF lo_data IS BOUND.
+ ASSIGN lo_data->* TO <fs_table> .
* CL_SALV_WD_C_TABLE_V_TABLE " If we want to do it we need this
* if_salv_wd_comp_table_events~on_export_excel( ).
* lo_ex_cm ?= lo_result->r_model->r_model.
@@ -80,17 +78,20 @@ ENDMETHOD.
* T_SELECTED_COLUMNS Instance Attribute Public Type LVC_T_COL
* wt_sort = lo_ex_cm->t_sort.
- apply_sort( EXPORTING it_table = <fs_table>
- IMPORTING eo_table = eo_table ) .
+ apply_sort( EXPORTING it_table = <fs_table>
+ IMPORTING eo_table = eo_table ) .
- get_color( EXPORTING io_table = eo_table
- IMPORTING et_colors = et_colors ) .
+ get_color( EXPORTING io_table = eo_table
+ IMPORTING et_colors = et_colors ) .
- get_filter( EXPORTING io_table = eo_table
- IMPORTING et_filter = et_filter ) .
+ get_filter( EXPORTING io_table = eo_table
+ IMPORTING et_filter = et_filter ) .
- update_catalog( CHANGING cs_layout = es_layout
- ct_fieldcatalog = et_fieldcatalog ).
+ update_catalog( CHANGING cs_layout = es_layout
+ ct_fieldcatalog = et_fieldcatalog ).
+ ELSE.
+* We have a problem and should stop here
+ ENDIF.
ENDIF.
ENDMETHOD.