From 9573bcea9055bbf9a86ca42f9d0732f3835b54b5 Mon Sep 17 00:00:00 2001 From: Tomek Mackowski Date: Wed, 22 Dec 2010 19:42:35 +0000 Subject: [PATCH] re #51 Modify table binding to avoid errors and create valid oXml in case empty table is passed git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@87 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049 --- ZA2X/CLAS/ZCL_EXCEL_TABLE.slnk | 45 ++++++++++++++++-------------- ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk | 6 ++++ 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/ZA2X/CLAS/ZCL_EXCEL_TABLE.slnk b/ZA2X/CLAS/ZCL_EXCEL_TABLE.slnk index 4ec22d8..2403cda 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_TABLE.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_TABLE.slnk @@ -1,5 +1,5 @@ - + class ZCL_EXCEL_TABLE definition public final @@ -135,7 +135,7 @@ endmethod. - method GET_REFERENCE. + METHOD get_reference. DATA: lv_column TYPE zexcel_cell_column, lv_table_lines TYPE i, lv_right_column TYPE zexcel_cell_column_alpha, @@ -147,31 +147,34 @@ endmethod. FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE. *column - lv_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). - lv_table_lines = 0. - LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. - ADD 1 TO lv_table_lines. - ENDLOOP. - lv_column = lv_column + lv_table_lines - 1. - lv_right_column = zcl_excel_common=>convert_column2alpha( lv_column ). + lv_column = zcl_excel_common=>convert_column2int( settings-top_left_column ). + lv_table_lines = 0. + LOOP AT fieldcat INTO ls_field_catalog WHERE dynpfld EQ abap_true. + ADD 1 TO lv_table_lines. + ENDLOOP. + lv_column = lv_column + lv_table_lines - 1. + lv_right_column = zcl_excel_common=>convert_column2alpha( lv_column ). *row - ASSIGN table_data->* TO <fs_table>. - DESCRIBE TABLE <fs_table> LINES lv_table_lines. - lv_bottom_row = settings-top_left_row + lv_table_lines . + ASSIGN table_data->* TO <fs_table>. + DESCRIBE TABLE <fs_table> LINES lv_table_lines. + IF lv_table_lines = 0. + lv_table_lines = 1. "table needs at least 1 data row + ENDIF. + lv_bottom_row = settings-top_left_row + lv_table_lines . - IF me->has_totals( ) = abap_true AND ip_include_totals_row = abap_true. - add 1 to lv_bottom_row. - ENDIF. + IF me->has_totals( ) = abap_true AND ip_include_totals_row = abap_true. + ADD 1 TO lv_bottom_row. + ENDIF. - lv_top_row_string = zcl_excel_common=>number_to_excel_string( settings-top_left_row ). - lv_bottom_row_string = zcl_excel_common=>number_to_excel_string( lv_bottom_row ). + lv_top_row_string = zcl_excel_common=>number_to_excel_string( settings-top_left_row ). + lv_bottom_row_string = zcl_excel_common=>number_to_excel_string( lv_bottom_row ). - CONCATENATE settings-top_left_column lv_top_row_string - ':' - lv_right_column lv_bottom_row_string INTO ov_reference. + CONCATENATE settings-top_left_column lv_top_row_string + ':' + lv_right_column lv_bottom_row_string INTO ov_reference. -endmethod. +ENDMETHOD. diff --git a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk index bba6d3a..60dee94 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk @@ -2670,6 +2670,12 @@ endmethod. ENDIF. ADD 1 TO lv_row_int. ENDLOOP. + IF sy-subrc <> 0. "create empty row if table has no data + me->set_cell( ip_column = lv_column_alpha + ip_row = lv_row_int + ip_value = space ). + ADD 1 TO lv_row_int. + ENDIF. " totals IF <ls_field_catalog>-totals_function IS NOT INITIAL.