From bd8105f800369122cd3af7d988ceba767d60ebc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BCdiger=20Plantiko?= Date: Sat, 28 Jan 2023 21:18:04 +0100 Subject: [PATCH 1/4] Update zcl_excel_worksheet.clas.testclasses.abap (#1082) Replacing IF_ABAP_UNIT_CONSTANT by IF_AUNIT_CONSTANTS, as proposed by @sandraros --- src/zcl_excel_worksheet.clas.testclasses.abap | 364 +++++++++--------- 1 file changed, 179 insertions(+), 185 deletions(-) diff --git a/src/zcl_excel_worksheet.clas.testclasses.abap b/src/zcl_excel_worksheet.clas.testclasses.abap index a4c17ec..91d6b93 100644 --- a/src/zcl_excel_worksheet.clas.testclasses.abap +++ b/src/zcl_excel_worksheet.clas.testclasses.abap @@ -129,32 +129,32 @@ CLASS ltc_normalize_column_heading DEFINITION FOR TESTING DURATION SHORT. PRIVATE SECTION. - TYPES : BEGIN OF ty_parameters, - BEGIN OF input, - default_descr TYPE c LENGTH 1, - field_catalog TYPE zexcel_t_fieldcatalog, - END OF input, - BEGIN OF output, - field_catalog TYPE zexcel_t_fieldcatalog, - END OF output, - END OF ty_parameters. - DATA: - cut TYPE REF TO zcl_excel_worksheet. "class under test - METHODS setup. + DATA: + cut TYPE REF TO zcl_excel_worksheet, "class under test + default_descr TYPE c LENGTH 1 VALUE '?'. + METHODS: + prefer_small_text FOR TESTING RAISING cx_static_check, prefer_medium_text FOR TESTING RAISING cx_static_check, prefer_long_text FOR TESTING RAISING cx_static_check, default_text_if_none FOR TESTING RAISING cx_static_check, - invalid_default_descr FOR TESTING RAISING cx_static_check. + invalid_default_descr FOR TESTING RAISING cx_static_check, - METHODS assert - IMPORTING - input TYPE ty_parameters-input - exp TYPE ty_parameters-output - RAISING - cx_static_check. + assert + IMPORTING + ip_scrtext_s TYPE scrtext_s OPTIONAL + ip_scrtext_m TYPE scrtext_m OPTIONAL + ip_scrtext_l TYPE scrtext_l OPTIONAL + ip_colname_exp TYPE zexcel_column_name OPTIONAL, + + assert_multi + IMPORTING + it_fc TYPE zexcel_t_fieldcatalog OPTIONAL + it_colname_exp TYPE stringtab OPTIONAL, + + setup. ENDCLASS. @@ -1012,214 +1012,208 @@ ENDCLASS. CLASS ltc_normalize_column_heading IMPLEMENTATION. - METHOD setup. - - DATA: lo_excel TYPE REF TO zcl_excel. - - CREATE OBJECT lo_excel. - - TRY. - CREATE OBJECT cut - EXPORTING - ip_excel = lo_excel. - CATCH zcx_excel. - cl_abap_unit_assert=>fail( 'Could not create instance' ). - ENDTRY. - - ENDMETHOD. - METHOD prefer_small_text. - DATA: input TYPE ty_parameters-input, - exp TYPE ty_parameters-output, - field TYPE zexcel_s_fieldcatalog. - input-default_descr = 'S'. + default_descr = 'S'. - field-dynpfld = abap_true. + assert( + ip_scrtext_s = 'Column1_S' + ip_scrtext_m = 'Column1_M' + ip_scrtext_l = 'Column1_L' + ip_colname_exp = 'Column1_S' + ). - field-scrtext_s = 'Column1_S'. - field-scrtext_m = 'Column1_M'. - field-scrtext_l = 'Column1_L'. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column1_S'. - APPEND field TO exp-field_catalog. - field-scrtext_s = ''. - field-scrtext_m = 'Column2_M'. - field-scrtext_l = 'Column2_L'. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column2_M'. - APPEND field TO exp-field_catalog. + assert( + ip_scrtext_m = 'Column1_M' + ip_scrtext_l = 'Column1_L' + ip_colname_exp = 'Column1_M' + ). - field-scrtext_s = ''. - field-scrtext_m = 'Column3_M'. - field-scrtext_l = ''. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column3_M'. - APPEND field TO exp-field_catalog. - field-scrtext_s = ''. - field-scrtext_m = ''. - field-scrtext_l = 'Column4_L'. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column4_L'. - APPEND field TO exp-field_catalog. + assert( + ip_scrtext_m = 'Column1_M' + ip_colname_exp = 'Column1_M' + ). + + assert( + ip_scrtext_l = 'Column1_L' + ip_colname_exp = 'Column1_L' + ). - assert( input = input exp = exp ). ENDMETHOD. METHOD prefer_medium_text. - DATA: input TYPE ty_parameters-input, - exp TYPE ty_parameters-output, - field TYPE zexcel_s_fieldcatalog. - input-default_descr = 'M'. + default_descr = 'M'. - field-dynpfld = abap_true. + assert( + ip_scrtext_s = 'Column1_S' + ip_scrtext_m = 'Column1_M' + ip_scrtext_l = 'Column1_L' + ip_colname_exp = 'Column1_M' ). - field-scrtext_s = 'Column1_S'. - field-scrtext_m = 'Column1_M'. - field-scrtext_l = 'Column1_L'. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column1_M'. - APPEND field TO exp-field_catalog. + assert( + ip_scrtext_s = 'Column1_S' + ip_scrtext_l = 'Column1_L' + ip_colname_exp = 'Column1_S' ). - field-scrtext_s = 'Column2_S'. - field-scrtext_m = ''. - field-scrtext_l = 'Column2_L'. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column2_S'. - APPEND field TO exp-field_catalog. + assert( + ip_scrtext_s = 'Column1_S' + ip_colname_exp = 'Column1_S' ). - field-scrtext_s = 'Column3_S'. - field-scrtext_m = ''. - field-scrtext_l = ''. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column3_S'. - APPEND field TO exp-field_catalog. - - field-scrtext_s = ''. - field-scrtext_m = ''. - field-scrtext_l = 'Column4_L'. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column4_L'. - APPEND field TO exp-field_catalog. - - assert( input = input exp = exp ). + assert( + ip_scrtext_s = 'Column1_L' + ip_colname_exp = 'Column1_L' ). ENDMETHOD. METHOD prefer_long_text. - DATA: input TYPE ty_parameters-input, - exp TYPE ty_parameters-output, - field TYPE zexcel_s_fieldcatalog. - input-default_descr = 'L'. + default_descr = 'L'. - field-dynpfld = abap_true. + assert( + ip_scrtext_s = 'Column1_S' + ip_scrtext_m = 'Column1_M' + ip_scrtext_l = 'Column1_L' + ip_colname_exp = 'Column1_L' ). - field-scrtext_s = 'Column1_S'. - field-scrtext_m = 'Column1_M'. - field-scrtext_l = 'Column1_L'. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column1_L'. - APPEND field TO exp-field_catalog. + assert( + ip_scrtext_s = 'Column1_S' + ip_scrtext_m = 'Column1_M' + ip_colname_exp = 'Column1_M' ). - field-scrtext_s = 'Column2_S'. - field-scrtext_m = 'Column2_M'. - field-scrtext_l = ''. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column2_M'. - APPEND field TO exp-field_catalog. + assert( + ip_scrtext_s = 'Column1_S' + ip_colname_exp = 'Column1_S' ). - field-scrtext_s = 'Column3_S'. - field-scrtext_m = ''. - field-scrtext_l = ''. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column3_S'. - APPEND field TO exp-field_catalog. - - assert( input = input exp = exp ). - - ENDMETHOD. - - METHOD default_text_if_none. - DATA: input TYPE ty_parameters-input, - exp TYPE ty_parameters-output, - field TYPE zexcel_s_fieldcatalog. - - input-default_descr = 'S'. - - field-dynpfld = abap_true. - - field-scrtext_s = ''. - field-scrtext_m = ''. - field-scrtext_l = ''. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column'. - APPEND field TO exp-field_catalog. - - field-scrtext_s = ''. - field-scrtext_m = ''. - field-scrtext_l = ''. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column 1'. - APPEND field TO exp-field_catalog. - - assert( input = input exp = exp ). ENDMETHOD. METHOD invalid_default_descr. - DATA: input TYPE ty_parameters-input, - exp TYPE ty_parameters-output, - field TYPE zexcel_s_fieldcatalog. - input-default_descr = '?'. + default_descr = '?'. - field-dynpfld = abap_true. + assert( + ip_scrtext_s = 'Column1_S' + ip_scrtext_m = 'Column1_M' + ip_scrtext_l = 'Column1_L' + ip_colname_exp = 'Column1_M' ). - field-scrtext_s = 'Column1_S'. - field-scrtext_m = 'Column1_M'. - field-scrtext_l = 'Column1_L'. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column1_M'. - APPEND field TO exp-field_catalog. + assert( + ip_scrtext_s = 'Column1_S' + ip_scrtext_l = 'Column1_L' + ip_colname_exp = 'Column1_S' ). - field-scrtext_s = 'Column2_S'. - field-scrtext_m = ''. - field-scrtext_l = 'Column2_L'. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column2_S'. - APPEND field TO exp-field_catalog. + assert( + ip_scrtext_s = 'Column1_S' + ip_colname_exp = 'Column1_S' ). - field-scrtext_s = 'Column3_S'. - field-scrtext_m = ''. - field-scrtext_l = ''. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column3_S'. - APPEND field TO exp-field_catalog. + assert( + ip_scrtext_l = 'Column1_L' + ip_colname_exp = 'Column1_L' ). - field-scrtext_s = ''. - field-scrtext_m = ''. - field-scrtext_l = 'Column4_L'. - APPEND field TO input-field_catalog. - field-scrtext_l = 'Column4_L'. - APPEND field TO exp-field_catalog. - - assert( input = input exp = exp ). ENDMETHOD. + METHOD default_text_if_none. + + default_descr = 'S'. + + CONSTANTS: lc_initial_line TYPE zexcel_s_fieldcatalog VALUE IS INITIAL. + DATA lt_fc TYPE zexcel_t_fieldcatalog. + APPEND lc_initial_line TO : lt_fc, lt_fc. + + DATA lt_colname_exp TYPE stringtab. + APPEND: + `Column` TO lt_colname_exp, + `Column 1` TO lt_colname_exp. + + assert_multi( + it_fc = lt_fc + it_colname_exp = lt_colname_exp + ). + + + ENDMETHOD. + + METHOD assert. - DATA: act TYPE ty_parameters-output. - act-field_catalog = cut->normalize_column_heading_texts( - iv_default_descr = input-default_descr - it_field_catalog = input-field_catalog ). + DATA: + ls_fc TYPE zexcel_s_fieldcatalog, + lt_fc TYPE zexcel_t_fieldcatalog. + ls_fc-dynpfld = abap_true. + ls_fc-scrtext_s = ip_scrtext_s. + ls_fc-scrtext_m = ip_scrtext_m. + ls_fc-scrtext_l = ip_scrtext_l. + APPEND ls_fc TO lt_fc. - cl_abap_unit_assert=>assert_equals( exp = exp-field_catalog act = act-field_catalog ). + DATA lt_fc_result TYPE zexcel_t_fieldcatalog. + + lt_fc_result = cut->normalize_column_heading_texts( + iv_default_descr = default_descr + it_field_catalog = lt_fc ). + + FIELD-SYMBOLS TYPE zexcel_s_fieldcatalog. + READ TABLE lt_fc_result ASSIGNING INDEX 1. + + cl_abap_unit_assert=>assert_equals( + act = -column_name + exp = ip_colname_exp + quit = if_aunit_constants=>quit-no + ). + + ENDMETHOD. + + METHOD assert_multi. + + DATA: + lt_fc LIKE it_fc, + ls_fc LIKE LINE OF it_fc. + ls_fc-dynpfld = abap_true. + lt_fc = it_fc. + MODIFY lt_fc FROM ls_fc TRANSPORTING dynpfld WHERE dynpfld = space. + + DATA lt_fc_result TYPE zexcel_t_fieldcatalog. + lt_fc_result = cut->normalize_column_heading_texts( + iv_default_descr = default_descr + it_field_catalog = lt_fc + ). + + DATA lt_colname_act TYPE stringtab. + FIELD-SYMBOLS: TYPE zexcel_s_fieldcatalog. + LOOP AT lt_fc_result ASSIGNING . + APPEND -column_name TO lt_colname_act. + ENDLOOP. + + cl_abap_unit_assert=>assert_equals( + act = lt_colname_act + exp = it_colname_exp + quit = if_aunit_constants=>quit-no + ). + + ENDMETHOD. + + METHOD setup. + + DATA: + lo_ex TYPE REF TO zcx_excel, + lv_ex_text TYPE string, + lv_msg TYPE string. + + TRY. + DATA lo_excel TYPE REF TO zcl_excel. + CREATE OBJECT lo_excel. + CREATE OBJECT cut EXPORTING ip_excel = lo_excel. + CATCH zcx_excel INTO lo_ex. + lv_ex_text = lo_ex->get_text( ). + CONCATENATE `Could not create instance:` lv_ex_text + INTO lv_msg + SEPARATED BY space. + cl_abap_unit_assert=>fail( lv_ex_text ). + ENDTRY. ENDMETHOD. From 8b729bb01ab58d4fb6471ebbd59b32835f6ce8c4 Mon Sep 17 00:00:00 2001 From: Enno <75187288+Ennowulff@users.noreply.github.com> Date: Sat, 4 Feb 2023 15:24:32 +0100 Subject: [PATCH 2/4] link for demos (#1084) --- docs/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/index.md b/docs/index.md index 1f37211..55a6b35 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,3 +7,4 @@ This community project allows you to generate Professional Excel spreadsheets di * [SAPLink](SAPLink-installation) (obsolete) * [F.A.Q.](FAQ) * [abap2xlsx Calender Gallery](abap2xlsx-Calender-Gallery) +* [Demos](https://github.com/abap2xlsx/demos) From e0c4fade08ede926f357d0c692c31473b1bf7508 Mon Sep 17 00:00:00 2001 From: Abo Date: Sat, 4 Feb 2023 16:52:29 +0100 Subject: [PATCH 3/4] fix code template generation to work on 731 (#1086) * Update zexcel_template_get_types.prog.abap: fix code template generation to work on 731 * Update README.md: added minimum version support --- README.md | 2 ++ src/not_cloud/zexcel_template_get_types.prog.abap | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 66616e0..4b9fb62 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,5 @@ Please refer to the official wiki for the [abapGit installation guide](https://a Note that the **Demo programs** are provided in a [separate repository](https://github.com/abap2xlsx/demos), and can be installed after abap2xlsx. For questions, bug reports and more information on contributing to the project, please refer to the [contributing guidelines](./CONTRIBUTING.md). + +Version support: minimum tested version is SAP_ABA 731, it might work on older versions still but we need volunteers to test it. diff --git a/src/not_cloud/zexcel_template_get_types.prog.abap b/src/not_cloud/zexcel_template_get_types.prog.abap index 7b26177..b0506b7 100644 --- a/src/not_cloud/zexcel_template_get_types.prog.abap +++ b/src/not_cloud/zexcel_template_get_types.prog.abap @@ -166,7 +166,10 @@ FORM get_types . = 'DATA: lo_data type ref to ZCL_EXCEL_TEMPLATE_DATA.'. ENDIF. - cl_demo_output=>new( 'TEXT' )->display( lt_res ). + LOOP AT lt_res ASSIGNING . + cl_demo_output=>write_text( ). + ENDLOOP. + cl_demo_output=>display( ). ENDFORM. From 530d9e207a30c5c15a4745fa84f93bbd3e8bcd58 Mon Sep 17 00:00:00 2001 From: Abo Date: Sat, 4 Feb 2023 17:18:33 +0100 Subject: [PATCH 4/4] replace quit-no with older name for constant (#1088) ABAP Unit parameter Quit constant for "no" valid in versions 7.31+ is IF_AUNIT_CONSTANTS=>NO --- src/zcl_excel_worksheet.clas.testclasses.abap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/zcl_excel_worksheet.clas.testclasses.abap b/src/zcl_excel_worksheet.clas.testclasses.abap index 91d6b93..65d9be1 100644 --- a/src/zcl_excel_worksheet.clas.testclasses.abap +++ b/src/zcl_excel_worksheet.clas.testclasses.abap @@ -1162,7 +1162,7 @@ CLASS ltc_normalize_column_heading IMPLEMENTATION. cl_abap_unit_assert=>assert_equals( act = -column_name exp = ip_colname_exp - quit = if_aunit_constants=>quit-no + quit = if_aunit_constants=>no ). ENDMETHOD. @@ -1191,7 +1191,7 @@ CLASS ltc_normalize_column_heading IMPLEMENTATION. cl_abap_unit_assert=>assert_equals( act = lt_colname_act exp = it_colname_exp - quit = if_aunit_constants=>quit-no + quit = if_aunit_constants=>no ). ENDMETHOD.