diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index a94d403..db1837e 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -2964,14 +2964,18 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, lv_value_lowercase TYPE string, + lv_scrtext_l_initial TYPE scrtext_l, + lv_long_text TYPE string, + lv_max_length TYPE i, + lv_temp_length TYPE i, lv_syindex TYPE c LENGTH 3, lt_column_name_buffer TYPE SORTED TABLE OF string WITH UNIQUE KEY table_line. FIELD-SYMBOLS: TYPE zexcel_s_fieldcatalog, - TYPE any, - TYPE any, - TYPE any. + TYPE any, + TYPE any, + TYPE any. - " Due restrinction of new table object we cannot have two column with the same name + " Due to restrictions in new table object we cannot have two columns with the same name " Check if a column with the same name exists, if exists add a counter " If no medium description is provided we try to use small or long @@ -3008,6 +3012,8 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. -scrtext_l = 'Column'. " default value as Excel does ENDIF. + lv_scrtext_l_initial = -scrtext_l. + DESCRIBE FIELD -scrtext_l LENGTH lv_max_length IN CHARACTER MODE. DO. lv_value_lowercase = -scrtext_l. TRANSLATE lv_value_lowercase TO LOWER CASE. @@ -3017,7 +3023,14 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. EXIT. ELSE. lv_syindex = sy-index. - CONCATENATE -scrtext_l lv_syindex INTO -scrtext_l. + CONCATENATE lv_scrtext_l_initial lv_syindex INTO lv_long_text. + IF strlen( lv_long_text ) <= lv_max_length. + -scrtext_l = lv_long_text. + ELSE. + lv_temp_length = strlen( lv_scrtext_l_initial ) - 1. + lv_scrtext_l_initial = substring( val = lv_scrtext_l_initial len = lv_temp_length ). + CONCATENATE lv_scrtext_l_initial lv_syindex INTO -scrtext_l. + ENDIF. ENDIF. ENDDO.