From b5ab52c346e9e05bd331fdb2d5bc88e49859f382 Mon Sep 17 00:00:00 2001 From: Gregor Wolf Date: Tue, 3 Jan 2012 17:11:54 +0000 Subject: [PATCH] ready to test #132 git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@244 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049 --- ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk | 236 +++++++++++++++++++++----------- 1 file changed, 156 insertions(+), 80 deletions(-) diff --git a/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk b/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk index 982fd94..3e51bdc 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk @@ -1,5 +1,5 @@ - + class ZCL_EXCEL_COMMON definition public final @@ -71,7 +71,16 @@ public section. importing !IP_VALUE type T returning - value(EP_VALUE) type ZEXCEL_CELL_VALUE . + value(EP_VALUE) type ZEXCEL_CELL_VALUE . + class-methods CONVERT_RANGE2COLUMN_A_ROW + importing + !I_RANGE type STRING + exporting + !E_COLUMN_START type ZEXCEL_CELL_COLUMN_ALPHA + !E_COLUMN_END type ZEXCEL_CELL_COLUMN_ALPHA + !E_ROW_START type ZEXCEL_CELL_ROW + !E_ROW_END type ZEXCEL_CELL_ROW + !E_SHEET type ZEXCEL_SHEET_TITLE . *"* protected components of class ZCL_EXCEL_COMMON *"* do not include other source files here!!! protected section. @@ -110,33 +119,16 @@ private section. * *----------------------------------------------------------------------* CLASS zcl_excel_common_test DEFINITION FOR TESTING - DURATION SHORT - RISK LEVEL HARMLESS + "#AU Duration Short + "#AU Risk_Level Harmless . -*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> -*?<asx:values> -*?<TESTCLASS_OPTIONS> -*?<TEST_CLASS>zcl_Excel_Common_Test -*?</TEST_CLASS> -*?<TEST_MEMBER>f_Cut -*?</TEST_MEMBER> -*?<OBJECT_UNDER_TEST>ZCL_EXCEL_COMMON -*?</OBJECT_UNDER_TEST> -*?<OBJECT_IS_LOCAL/> -*?<GENERATE_FIXTURE/> -*?<GENERATE_CLASS_FIXTURE/> -*?<GENERATE_INVOCATION/> -*?<GENERATE_ASSERT_EQUAL>X -*?</GENERATE_ASSERT_EQUAL> -*?</TESTCLASS_OPTIONS> -*?</asx:values> -*?</asx:abap> PRIVATE SECTION. * ================ DATA: f_cut TYPE REF TO zcl_excel_common. "class under test METHODS: convert_columnrow2column_a_row FOR TESTING. + METHODS: convert_range2column_a_row FOR TESTING. ENDCLASS. "zcl_Excel_Common_Test @@ -159,32 +151,69 @@ CLASS zcl_excel_common_test IMPLEMENTATION. e_column = e_column e_row = e_row. - cl_abap_unit_assert=>assert_equals( + cl_aunit_assert=>assert_equals( act = e_column - exp = 'AZ' "<--- please adapt expected value + exp = 'AZ' msg = 'Column value is wrong' ). - cl_abap_unit_assert=>assert_equals( + cl_aunit_assert=>assert_equals( act = e_row - exp = '4' "<--- please adapt expected value + exp = '4' msg = 'Row value is wrong' ). ENDMETHOD. "convert_Columnrow2column_A_Row + METHOD convert_range2column_a_row. +** ====================================== + DATA: + e_column_start TYPE zexcel_cell_column_alpha, + e_column_end TYPE zexcel_cell_column_alpha, + e_row_start TYPE zexcel_cell_row, + e_row_end TYPE zexcel_cell_row. + zcl_excel_common=>convert_range2column_a_row( + EXPORTING + i_range = 'AB12:CD34' + IMPORTING + e_column_start = e_column_start + e_column_end = e_column_end + e_row_start = e_row_start + e_row_end = e_row_end + ). + cl_aunit_assert=>assert_equals( + act = e_column_start + exp = 'AB' + msg = 'Start column value is wrong' + ). + cl_aunit_assert=>assert_equals( + act = e_row_start + exp = '12' + msg = 'Start row value is wrong' + ). + cl_aunit_assert=>assert_equals( + act = e_column_end + exp = 'CD' + msg = 'End column value is wrong' + ). + cl_aunit_assert=>assert_equals( + act = e_row_end + exp = '34' + msg = 'End row value is wrong' + ). + ENDMETHOD. ENDCLASS. "zcl_Excel_Common_Test - - - - - - - - - - + + + + + + + + + + method CHAR2HEX. IF o_conv IS NOT BOUND. @@ -199,9 +228,9 @@ ENDCLASS. "zcl_Excel_Common_Test endmethod. - - - + + + method CONVERT_COLUMN2ALPHA. DATA: lo_conv TYPE REF TO cl_abap_conv_in_ce, @@ -223,9 +252,9 @@ endmethod. endmethod. - - - + + + method CONVERT_COLUMN2INT. DATA: lv_uccpi TYPE i, @@ -258,29 +287,76 @@ endmethod. endmethod. - - - - + + + + method CONVERT_COLUMNROW2COLUMN_A_ROW. DATA: width TYPE i, col_width TYPE i, - row_str TYPE string. + row_str TYPE string, + col_str TYPE string. width = strlen( i_columnrow ). col_width = width. - e_column = i_columnrow. - WHILE e_column CA '0123456789'. + col_str = i_columnrow. + WHILE col_str CA '0123456789'. col_width = col_width - 1. - e_column = i_columnrow(col_width). + col_str = i_columnrow(col_width). ENDWHILE. + e_column = col_str. width = width - col_width. row_str = i_columnrow+col_width(width). e_row = row_str. endmethod. - - - + + + + + + + + method CONVERT_RANGE2COLUMN_A_ROW. + DATA: + sheet TYPE string, + range TYPE string, + columnrow_start TYPE string, + columnrow_end TYPE string. + + IF i_range IS INITIAL + OR NOT i_range CS ':'. + RETURN. + ENDIF. + + IF i_range CS '!'. + SPLIT i_range AT '!' INTO sheet range. + e_sheet = sheet. + ELSE. + range = i_range. + ENDIF. + + REPLACE ALL OCCURRENCES OF '$' IN range WITH ''. + SPLIT range AT ':' INTO columnrow_start columnrow_end. + + convert_columnrow2column_a_row( + EXPORTING + i_columnrow = columnrow_start + IMPORTING + e_column = e_column_start + e_row = e_row_start + ). + convert_columnrow2column_a_row( + EXPORTING + i_columnrow = columnrow_end + IMPORTING + e_column = e_column_end + e_row = e_row_end + ). +endmethod. + + + + method DATE_TO_EXCEL_STRING. DATA: lv_date_diff TYPE i. @@ -289,9 +365,9 @@ endmethod. ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_date_diff ). endmethod. - - - + + + method ENCRYPT_PASSWORD. DATA lv_curr_offset TYPE i. @@ -331,9 +407,9 @@ endmethod. endmethod. - - - + + + method ESCAPE_STRING. DATA lv_value TYPE string. @@ -349,9 +425,9 @@ endmethod. endmethod. - - - + + + method EXCEL_STRING_TO_DATE. DATA: lv_date_int TYPE i. @@ -363,9 +439,9 @@ endmethod. ENDTRY. endmethod. - - - + + + method EXCEL_STRING_TO_TIME. DATA: lv_seconds_in_day TYPE i, lv_day_fraction TYPE f, @@ -383,9 +459,9 @@ lc_seconds_in_day TYPE i VALUE 86400. ENDTRY. endmethod. - - - + + + method GET_FIELDCATALOG. DATA: lr_data TYPE REF TO data, @@ -436,9 +512,9 @@ endmethod. endmethod. - - - + + + method NUMBER_TO_EXCEL_STRING. DATA: lv_value_c TYPE c LENGTH 100. @@ -455,9 +531,9 @@ endmethod. ENDIF. endmethod. - - - + + + method SHL01. DATA: @@ -475,9 +551,9 @@ endmethod. endmethod. - - - + + + method SHR14. DATA: @@ -502,9 +578,9 @@ endmethod. endmethod. - - - + + + method TIME_TO_EXCEL_STRING. DATA: lv_seconds_in_day TYPE i, lv_day_fraction TYPE f,