Merge branch 'master' into hvam/unit0511

This commit is contained in:
Lars Hvam 2021-11-07 07:57:08 +01:00 committed by GitHub
commit d8f6cf32f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 326 additions and 345 deletions

View File

@ -1,8 +1,3 @@
*----------------------------------------------------------------------*
* CLASS ZCL_EXCEL_WORKSHEET DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS zcl_excel_worksheet DEFINITION
PUBLIC
CREATE PUBLIC .
@ -465,15 +460,15 @@ CLASS zcl_excel_worksheet DEFINITION
zcx_excel .
METHODS set_cell
IMPORTING
!ip_column TYPE simple
!ip_row TYPE zexcel_cell_row
!ip_value TYPE simple OPTIONAL
!ip_formula TYPE zexcel_cell_formula OPTIONAL
!ip_style TYPE zexcel_cell_style OPTIONAL
!ip_hyperlink TYPE REF TO zcl_excel_hyperlink OPTIONAL
!ip_data_type TYPE zexcel_cell_data_type OPTIONAL
!ip_abap_type TYPE abap_typekind OPTIONAL
!it_rtf TYPE zexcel_t_rtf OPTIONAL
!ip_column TYPE simple
!ip_row TYPE zexcel_cell_row
!ip_value TYPE simple OPTIONAL
!ip_formula TYPE zexcel_cell_formula OPTIONAL
!ip_style TYPE zexcel_cell_style OPTIONAL
!ip_hyperlink TYPE REF TO zcl_excel_hyperlink OPTIONAL
!ip_data_type TYPE zexcel_cell_data_type OPTIONAL
!ip_abap_type TYPE abap_typekind OPTIONAL
!it_rtf TYPE zexcel_t_rtf OPTIONAL
!ip_column_formula_id TYPE mty_s_column_formula-id OPTIONAL
RAISING
zcx_excel .
@ -701,10 +696,10 @@ CLASS zcl_excel_worksheet DEFINITION
zcx_excel.
METHODS check_rtf
IMPORTING
!ip_value TYPE simple
!ip_value TYPE simple
VALUE(ip_style) TYPE zexcel_cell_style OPTIONAL
CHANGING
!ct_rtf TYPE zexcel_t_rtf
!ct_rtf TYPE zexcel_t_rtf
RAISING
zcx_excel .
METHODS clear_initial_colorxfields
@ -723,13 +718,13 @@ CLASS zcl_excel_worksheet DEFINITION
!ep_value_type TYPE abap_typekind .
METHODS move_supplied_borders
IMPORTING
iv_border_supplied TYPE abap_bool
is_border TYPE zexcel_s_cstyle_border
iv_xborder_supplied TYPE abap_bool
is_xborder TYPE zexcel_s_cstylex_border
iv_border_supplied TYPE abap_bool
is_border TYPE zexcel_s_cstyle_border
iv_xborder_supplied TYPE abap_bool
is_xborder TYPE zexcel_s_cstylex_border
CHANGING
cs_complete_style_border TYPE zexcel_s_cstyle_border
cs_complete_stylex_border TYPE zexcel_s_cstylex_border.
cs_complete_style_border TYPE zexcel_s_cstyle_border
cs_complete_stylex_border TYPE zexcel_s_cstylex_border.
METHODS print_title_set_range .
METHODS update_dimension_range
RAISING
@ -738,7 +733,7 @@ ENDCLASS.
CLASS zcl_excel_worksheet IMPLEMENTATION.
CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION.
METHOD add_comment.
@ -845,7 +840,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
dim_mismatch_vkey = 5
dim_mismatch_sema = 6
error_in_sema = 7
others = 8.
OTHERS = 8.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 1. RAISE miss_guide.
@ -3360,42 +3355,6 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
ENDMETHOD. "set_area_formula
METHOD set_area_style.
DATA: ld_row_start TYPE zexcel_cell_row,
ld_row_end TYPE zexcel_cell_row,
ld_column_start_int TYPE zexcel_cell_column,
ld_column_end_int TYPE zexcel_cell_column,
ld_current_column TYPE zexcel_cell_column_alpha,
ld_current_row TYPE zexcel_cell_row.
MOVE: ip_row_to TO ld_row_end,
ip_row TO ld_row_start.
IF ld_row_end IS INITIAL OR ip_row_to IS NOT SUPPLIED.
ld_row_end = ld_row_start.
ENDIF.
ld_column_start_int = zcl_excel_common=>convert_column2int( ip_column_start ).
ld_column_end_int = zcl_excel_common=>convert_column2int( ip_column_end ).
IF ld_column_end_int IS INITIAL OR ip_column_end IS NOT SUPPLIED.
ld_column_end_int = ld_column_start_int.
ENDIF.
WHILE ld_column_start_int <= ld_column_end_int.
ld_current_column = zcl_excel_common=>convert_column2alpha( ld_column_start_int ).
ld_current_row = ld_row_start.
WHILE ld_current_row <= ld_row_end.
me->set_cell_style( ip_row = ld_current_row ip_column = ld_current_column
ip_style = ip_style ).
ADD 1 TO ld_current_row.
ENDWHILE.
ADD 1 TO ld_column_start_int.
ENDWHILE.
IF ip_merge IS SUPPLIED AND ip_merge = abap_true.
me->set_merge( ip_column_start = ip_column_start ip_row = ld_row_start
ip_column_end = ld_current_column ip_row_to = ld_row_end ).
ENDIF.
ENDMETHOD. "SET_AREA_STYLE
METHOD set_area_hyperlink.
DATA: ld_row_start TYPE zexcel_cell_row,
ld_row_end TYPE zexcel_cell_row,
@ -3442,6 +3401,42 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
ENDMETHOD. "SET_AREA_HYPERLINK
METHOD set_area_style.
DATA: ld_row_start TYPE zexcel_cell_row,
ld_row_end TYPE zexcel_cell_row,
ld_column_start_int TYPE zexcel_cell_column,
ld_column_end_int TYPE zexcel_cell_column,
ld_current_column TYPE zexcel_cell_column_alpha,
ld_current_row TYPE zexcel_cell_row.
MOVE: ip_row_to TO ld_row_end,
ip_row TO ld_row_start.
IF ld_row_end IS INITIAL OR ip_row_to IS NOT SUPPLIED.
ld_row_end = ld_row_start.
ENDIF.
ld_column_start_int = zcl_excel_common=>convert_column2int( ip_column_start ).
ld_column_end_int = zcl_excel_common=>convert_column2int( ip_column_end ).
IF ld_column_end_int IS INITIAL OR ip_column_end IS NOT SUPPLIED.
ld_column_end_int = ld_column_start_int.
ENDIF.
WHILE ld_column_start_int <= ld_column_end_int.
ld_current_column = zcl_excel_common=>convert_column2alpha( ld_column_start_int ).
ld_current_row = ld_row_start.
WHILE ld_current_row <= ld_row_end.
me->set_cell_style( ip_row = ld_current_row ip_column = ld_current_column
ip_style = ip_style ).
ADD 1 TO ld_current_row.
ENDWHILE.
ADD 1 TO ld_column_start_int.
ENDWHILE.
IF ip_merge IS SUPPLIED AND ip_merge = abap_true.
me->set_merge( ip_column_start = ip_column_start ip_row = ld_row_start
ip_column_end = ld_current_column ip_row_to = ld_row_end ).
ENDIF.
ENDMETHOD. "SET_AREA_STYLE
METHOD set_cell.
DATA: lv_column TYPE zexcel_cell_column,
@ -3539,7 +3534,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ).
ENDIF.
WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed or
WHEN cl_abap_typedescr=>typekind_float OR cl_abap_typedescr=>typekind_packed OR
cl_abap_typedescr=>typekind_decfloat OR
cl_abap_typedescr=>typekind_decfloat16 OR
cl_abap_typedescr=>typekind_decfloat34.
@ -3987,7 +3982,6 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
DATA: lo_tabdescr TYPE REF TO cl_abap_structdescr,
lr_data TYPE REF TO data,
ls_header TYPE x030l,
lt_dfies TYPE ddfields,
lv_row_int TYPE zexcel_cell_row,
lv_column_int TYPE zexcel_cell_column,
@ -4006,8 +4000,6 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
lo_tabdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ).
ls_header = lo_tabdescr->get_ddic_header( ).
lt_dfies = lo_tabdescr->get_ddic_field_list( ).
* It is better to loop column by column

View File

@ -4,41 +4,20 @@ CLASS zcl_excel_worksheet DEFINITION LOCAL FRIENDS
CLASS lcl_excel_worksheet_test DEFINITION FOR TESTING
RISK LEVEL HARMLESS
DURATION SHORT
.
*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
*?<asx:values>
*?<TESTCLASS_OPTIONS>
*?<TEST_CLASS>lcl_Excel_Worksheet_Test
*?</TEST_CLASS>
*?<TEST_MEMBER>f_Cut
*?</TEST_MEMBER>
*?<OBJECT_UNDER_TEST>ZCL_EXCEL_WORKSHEET
*?</OBJECT_UNDER_TEST>
*?<OBJECT_IS_LOCAL/>
*?<GENERATE_FIXTURE>X
*?</GENERATE_FIXTURE>
*?<GENERATE_CLASS_FIXTURE>X
*?</GENERATE_CLASS_FIXTURE>
*?<GENERATE_INVOCATION>X
*?</GENERATE_INVOCATION>
*?<GENERATE_ASSERT_EQUAL>X
*?</GENERATE_ASSERT_EQUAL>
*?</TESTCLASS_OPTIONS>
*?</asx:values>
*?</asx:abap>
DURATION SHORT.
PRIVATE SECTION.
* ================
DATA:
F_CUT TYPE REF TO ZCL_EXCEL_WORKSHEET. "class under test
f_cut TYPE REF TO zcl_excel_worksheet. "class under test
CLASS-METHODS: CLASS_SETUP.
CLASS-METHODS: CLASS_TEARDOWN.
METHODS: SETUP.
METHODS: TEARDOWN.
METHODS: SET_MERGE FOR TESTING.
METHODS: DELETE_MERGE FOR TESTING.
METHODS: GET_DIMENSION_RANGE FOR TESTING.
CLASS-METHODS: class_setup.
CLASS-METHODS: class_teardown.
METHODS: setup.
METHODS: teardown.
METHODS: set_merge FOR TESTING.
METHODS: delete_merge FOR TESTING.
METHODS: get_dimension_range FOR TESTING.
ENDCLASS. "lcl_Excel_Worksheet_Test
@ -71,390 +50,391 @@ CLASS ltc_check_cell_column_formula DEFINITION FOR TESTING
zcx_excel.
DATA: mt_column_formulas TYPE zcl_excel_worksheet=>mty_th_column_formula,
c_messages LIKE zcl_excel_worksheet=>c_messages.
c_messages LIKE zcl_excel_worksheet=>c_messages.
ENDCLASS.
CLASS LCL_EXCEL_WORKSHEET_TEST IMPLEMENTATION.
CLASS lcl_excel_worksheet_test IMPLEMENTATION.
* ==============================================
METHOD CLASS_SETUP.
METHOD class_setup.
* ===================
ENDMETHOD. "class_Setup
METHOD CLASS_TEARDOWN.
METHOD class_teardown.
* ======================
ENDMETHOD. "class_Teardown
METHOD SETUP.
METHOD setup.
* =============
DATA LO_EXCEL TYPE REF TO ZCL_EXCEL.
DATA lo_excel TYPE REF TO zcl_excel.
CREATE OBJECT LO_EXCEL.
CREATE OBJECT lo_excel.
CREATE OBJECT F_CUT
EXPORTING IP_EXCEL = LO_EXCEL.
CREATE OBJECT f_cut
EXPORTING
ip_excel = lo_excel.
ENDMETHOD. "setup
METHOD TEARDOWN.
METHOD teardown.
* ================
ENDMETHOD. "teardown
METHOD SET_MERGE.
METHOD set_merge.
* ====================
DATA LT_MERGE TYPE STRING_TABLE.
DATA LV_MERGE TYPE STRING.
DATA LV_SIZE TYPE I.
DATA LV_SIZE_NEXT TYPE I.
DATA lt_merge TYPE string_table.
DATA lv_merge TYPE string.
DATA lv_size TYPE i.
DATA lv_size_next TYPE i.
* Test 1. Simple test for initial value
LT_MERGE = F_CUT->GET_MERGE( ).
LV_SIZE = LINES( LT_MERGE ).
lt_merge = f_cut->get_merge( ).
lv_size = lines( lt_merge ).
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_SIZE
EXP = 0
MSG = 'Initial state of merge table is not empty'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_size
exp = 0
msg = 'Initial state of merge table is not empty'
level = if_aunit_constants=>critical
).
* Test 2. Add merge
F_CUT->SET_MERGE(
IP_COLUMN_START = 2
IP_COLUMN_END = 3
IP_ROW = 2
IP_ROW_TO = 3
f_cut->set_merge(
ip_column_start = 2
ip_column_end = 3
ip_row = 2
ip_row_to = 3
).
LT_MERGE = F_CUT->GET_MERGE( ).
LV_SIZE_NEXT = LINES( LT_MERGE ).
lt_merge = f_cut->get_merge( ).
lv_size_next = lines( lt_merge ).
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_SIZE_NEXT - LV_SIZE
EXP = 1
MSG = 'Expect add 1 table line when 1 merge added'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_size_next - lv_size
exp = 1
msg = 'Expect add 1 table line when 1 merge added'
level = if_aunit_constants=>critical
).
* Test 2. Add same merge
LV_SIZE = LV_SIZE_NEXT.
lv_size = lv_size_next.
TRY.
F_CUT->SET_MERGE(
IP_COLUMN_START = 2
IP_COLUMN_END = 3
IP_ROW = 2
IP_ROW_TO = 3
).
CATCH ZCX_EXCEL.
f_cut->set_merge(
ip_column_start = 2
ip_column_end = 3
ip_row = 2
ip_row_to = 3
).
CATCH zcx_excel.
ENDTRY.
LT_MERGE = F_CUT->GET_MERGE( ).
LV_SIZE_NEXT = LINES( LT_MERGE ).
lt_merge = f_cut->get_merge( ).
lv_size_next = lines( lt_merge ).
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_SIZE_NEXT - LV_SIZE
EXP = 0
MSG = 'Expect no change when add same merge'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_size_next - lv_size
exp = 0
msg = 'Expect no change when add same merge'
level = if_aunit_constants=>critical
).
* Test 3. Add one different merge
LV_SIZE = LV_SIZE_NEXT.
lv_size = lv_size_next.
F_CUT->SET_MERGE(
IP_COLUMN_START = 4
IP_COLUMN_END = 5
IP_ROW = 2
IP_ROW_TO = 3
f_cut->set_merge(
ip_column_start = 4
ip_column_end = 5
ip_row = 2
ip_row_to = 3
).
LT_MERGE = F_CUT->GET_MERGE( ).
LV_SIZE_NEXT = LINES( LT_MERGE ).
lt_merge = f_cut->get_merge( ).
lv_size_next = lines( lt_merge ).
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_SIZE_NEXT - LV_SIZE
EXP = 1
MSG = 'Expect 1 change when add different merge'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_size_next - lv_size
exp = 1
msg = 'Expect 1 change when add different merge'
level = if_aunit_constants=>critical
).
* Test 4. Merge added with concrete value #1
F_CUT->DELETE_MERGE( ).
f_cut->delete_merge( ).
F_CUT->SET_MERGE(
IP_COLUMN_START = 2
IP_COLUMN_END = 3
IP_ROW = 2
IP_ROW_TO = 3
f_cut->set_merge(
ip_column_start = 2
ip_column_end = 3
ip_row = 2
ip_row_to = 3
).
LT_MERGE = F_CUT->GET_MERGE( ).
READ TABLE LT_MERGE INTO LV_MERGE INDEX 1.
lt_merge = f_cut->get_merge( ).
READ TABLE lt_merge INTO lv_merge INDEX 1.
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_MERGE
EXP = 'B2:C3'
MSG = 'Expect B2:C3'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_merge
exp = 'B2:C3'
msg = 'Expect B2:C3'
level = if_aunit_constants=>critical
).
* Test 5. Merge added with concrete value #2
F_CUT->DELETE_MERGE( ).
f_cut->delete_merge( ).
F_CUT->SET_MERGE(
IP_COLUMN_START = 4
IP_COLUMN_END = 5
IP_ROW = 4
IP_ROW_TO = 5
f_cut->set_merge(
ip_column_start = 4
ip_column_end = 5
ip_row = 4
ip_row_to = 5
).
LT_MERGE = F_CUT->GET_MERGE( ).
READ TABLE LT_MERGE INTO LV_MERGE INDEX 1.
lt_merge = f_cut->get_merge( ).
READ TABLE lt_merge INTO lv_merge INDEX 1.
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_MERGE
EXP = 'D4:E5'
MSG = 'Expect D4:E5'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_merge
exp = 'D4:E5'
msg = 'Expect D4:E5'
level = if_aunit_constants=>critical
).
ENDMETHOD.
METHOD DELETE_MERGE.
METHOD delete_merge.
* ====================
DATA LT_MERGE TYPE STRING_TABLE.
DATA LV_MERGE TYPE STRING.
DATA LV_SIZE TYPE I.
DATA LV_INDEX TYPE I.
DATA lt_merge TYPE string_table.
DATA lv_merge TYPE string.
DATA lv_size TYPE i.
DATA lv_index TYPE i.
* Test 1. Simple test delete all merges
F_CUT->SET_MERGE(
IP_COLUMN_START = 2
IP_COLUMN_END = 3
IP_ROW = 2
IP_ROW_TO = 3
f_cut->set_merge(
ip_column_start = 2
ip_column_end = 3
ip_row = 2
ip_row_to = 3
).
F_CUT->DELETE_MERGE( ).
LT_MERGE = F_CUT->GET_MERGE( ).
LV_SIZE = LINES( LT_MERGE ).
f_cut->delete_merge( ).
lt_merge = f_cut->get_merge( ).
lv_size = lines( lt_merge ).
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_SIZE
EXP = 0
MSG = 'Expect merge table with 1 line fully cleared'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_size
exp = 0
msg = 'Expect merge table with 1 line fully cleared'
level = if_aunit_constants=>critical
).
* Test 2. Simple test delete all merges
DO 10 TIMES.
F_CUT->SET_MERGE(
IP_COLUMN_START = 2 + SY-INDEX * 2
IP_COLUMN_END = 3 + SY-INDEX * 2
IP_ROW = 2 + SY-INDEX * 2
IP_ROW_TO = 3 + SY-INDEX * 2
f_cut->set_merge(
ip_column_start = 2 + sy-index * 2
ip_column_end = 3 + sy-index * 2
ip_row = 2 + sy-index * 2
ip_row_to = 3 + sy-index * 2
).
ENDDO.
F_CUT->DELETE_MERGE( ).
LT_MERGE = F_CUT->GET_MERGE( ).
LV_SIZE = LINES( LT_MERGE ).
f_cut->delete_merge( ).
lt_merge = f_cut->get_merge( ).
lv_size = lines( lt_merge ).
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_SIZE
EXP = 0
MSG = 'Expect merge table with few lines fully cleared'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_size
exp = 0
msg = 'Expect merge table with few lines fully cleared'
level = if_aunit_constants=>critical
).
* Test 3. Delete concrete merge with success
DO 4 TIMES.
LV_INDEX = SY-INDEX.
lv_index = sy-index.
F_CUT->DELETE_MERGE( ).
f_cut->delete_merge( ).
F_CUT->SET_MERGE(
IP_COLUMN_START = 2
IP_COLUMN_END = 3
IP_ROW = 2
IP_ROW_TO = 3
f_cut->set_merge(
ip_column_start = 2
ip_column_end = 3
ip_row = 2
ip_row_to = 3
).
CASE LV_INDEX.
WHEN 1. F_CUT->DELETE_MERGE( IP_CELL_COLUMN = 2 IP_CELL_ROW = 2 ).
WHEN 2. F_CUT->DELETE_MERGE( IP_CELL_COLUMN = 2 IP_CELL_ROW = 3 ).
WHEN 3. F_CUT->DELETE_MERGE( IP_CELL_COLUMN = 3 IP_CELL_ROW = 2 ).
WHEN 4. F_CUT->DELETE_MERGE( IP_CELL_COLUMN = 3 IP_CELL_ROW = 3 ).
CASE lv_index.
WHEN 1. f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 2 ).
WHEN 2. f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 3 ).
WHEN 3. f_cut->delete_merge( ip_cell_column = 3 ip_cell_row = 2 ).
WHEN 4. f_cut->delete_merge( ip_cell_column = 3 ip_cell_row = 3 ).
ENDCASE.
LT_MERGE = F_CUT->GET_MERGE( ).
LV_SIZE = LINES( LT_MERGE ).
lt_merge = f_cut->get_merge( ).
lv_size = lines( lt_merge ).
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_SIZE
EXP = 0
MSG = 'Expect merge table with 1 line fully cleared'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_size
exp = 0
msg = 'Expect merge table with 1 line fully cleared'
level = if_aunit_constants=>critical
).
ENDDO.
* Test 4. Delete concrete merge with fail
DO 4 TIMES.
LV_INDEX = SY-INDEX.
lv_index = sy-index.
F_CUT->DELETE_MERGE( ).
f_cut->delete_merge( ).
F_CUT->SET_MERGE(
IP_COLUMN_START = 2
IP_COLUMN_END = 3
IP_ROW = 2
IP_ROW_TO = 3
f_cut->set_merge(
ip_column_start = 2
ip_column_end = 3
ip_row = 2
ip_row_to = 3
).
CASE LV_INDEX.
WHEN 1. F_CUT->DELETE_MERGE( IP_CELL_COLUMN = 1 IP_CELL_ROW = 2 ).
WHEN 2. F_CUT->DELETE_MERGE( IP_CELL_COLUMN = 2 IP_CELL_ROW = 1 ).
WHEN 3. F_CUT->DELETE_MERGE( IP_CELL_COLUMN = 4 IP_CELL_ROW = 2 ).
WHEN 4. F_CUT->DELETE_MERGE( IP_CELL_COLUMN = 2 IP_CELL_ROW = 4 ).
CASE lv_index.
WHEN 1. f_cut->delete_merge( ip_cell_column = 1 ip_cell_row = 2 ).
WHEN 2. f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 1 ).
WHEN 3. f_cut->delete_merge( ip_cell_column = 4 ip_cell_row = 2 ).
WHEN 4. f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 4 ).
ENDCASE.
LT_MERGE = F_CUT->GET_MERGE( ).
LV_SIZE = LINES( LT_MERGE ).
lt_merge = f_cut->get_merge( ).
lv_size = lines( lt_merge ).
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_SIZE
EXP = 1
MSG = 'Expect no merge were deleted'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_size
exp = 1
msg = 'Expect no merge were deleted'
level = if_aunit_constants=>critical
).
ENDDO.
* Test 5. Delete concrete merge #1
F_CUT->DELETE_MERGE( ).
f_cut->delete_merge( ).
F_CUT->SET_MERGE(
IP_COLUMN_START = 2
IP_COLUMN_END = 3
IP_ROW = 2
IP_ROW_TO = 3
f_cut->set_merge(
ip_column_start = 2
ip_column_end = 3
ip_row = 2
ip_row_to = 3
).
F_CUT->SET_MERGE(
IP_COLUMN_START = 4
IP_COLUMN_END = 5
IP_ROW = 4
IP_ROW_TO = 5
f_cut->set_merge(
ip_column_start = 4
ip_column_end = 5
ip_row = 4
ip_row_to = 5
).
F_CUT->DELETE_MERGE( IP_CELL_COLUMN = 2 IP_CELL_ROW = 2 ).
LT_MERGE = F_CUT->GET_MERGE( ).
LV_SIZE = LINES( LT_MERGE ).
f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 2 ).
lt_merge = f_cut->get_merge( ).
lv_size = lines( lt_merge ).
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_SIZE
EXP = 1
MSG = 'Expect we have the one merge'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_size
exp = 1
msg = 'Expect we have the one merge'
level = if_aunit_constants=>critical
).
READ TABLE LT_MERGE INTO LV_MERGE INDEX 1.
READ TABLE lt_merge INTO lv_merge INDEX 1.
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_MERGE
EXP = 'D4:E5'
MSG = 'Expect delete B2:C3 merge'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_merge
exp = 'D4:E5'
msg = 'Expect delete B2:C3 merge'
level = if_aunit_constants=>critical
).
* Test 6. Delete concrete merge #2
F_CUT->DELETE_MERGE( ).
f_cut->delete_merge( ).
F_CUT->SET_MERGE(
IP_COLUMN_START = 2
IP_COLUMN_END = 3
IP_ROW = 2
IP_ROW_TO = 3
f_cut->set_merge(
ip_column_start = 2
ip_column_end = 3
ip_row = 2
ip_row_to = 3
).
F_CUT->SET_MERGE(
IP_COLUMN_START = 4
IP_COLUMN_END = 5
IP_ROW = 4
IP_ROW_TO = 5
f_cut->set_merge(
ip_column_start = 4
ip_column_end = 5
ip_row = 4
ip_row_to = 5
).
F_CUT->DELETE_MERGE( IP_CELL_COLUMN = 4 IP_CELL_ROW = 4 ).
LT_MERGE = F_CUT->GET_MERGE( ).
LV_SIZE = LINES( LT_MERGE ).
f_cut->delete_merge( ip_cell_column = 4 ip_cell_row = 4 ).
lt_merge = f_cut->get_merge( ).
lv_size = lines( lt_merge ).
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_SIZE
EXP = 1
MSG = 'Expect we have the one merge'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_size
exp = 1
msg = 'Expect we have the one merge'
level = if_aunit_constants=>critical
).
READ TABLE LT_MERGE INTO LV_MERGE INDEX 1.
READ TABLE lt_merge INTO lv_merge INDEX 1.
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = LV_MERGE
EXP = 'B2:C3'
MSG = 'Expect delete D4:E5 merge'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = lv_merge
exp = 'B2:C3'
msg = 'Expect delete D4:E5 merge'
level = if_aunit_constants=>critical
).
ENDMETHOD. "delete_Merge
METHOD GET_DIMENSION_RANGE.
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = F_CUT->GET_DIMENSION_RANGE( )
EXP = 'A1'
MSG = 'get_dimension_range inital value'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
METHOD get_dimension_range.
cl_abap_unit_assert=>assert_equals(
act = f_cut->get_dimension_range( )
exp = 'A1'
msg = 'get_dimension_range inital value'
level = if_aunit_constants=>critical
).
F_CUT->SET_CELL(
IP_ROW = 2
IP_COLUMN = 3
IP_VALUE = 'Dummy'
f_cut->set_cell(
ip_row = 2
ip_column = 3
ip_value = 'Dummy'
).
F_CUT->SET_CELL(
IP_ROW = 5
IP_COLUMN = 6
IP_VALUE = 'Dummy'
f_cut->set_cell(
ip_row = 5
ip_column = 6
ip_value = 'Dummy'
).
CL_ABAP_UNIT_ASSERT=>ASSERT_EQUALS(
ACT = F_CUT->GET_DIMENSION_RANGE( )
EXP = 'C2:F5'
MSG = 'get_dimension_range'
LEVEL = IF_AUNIT_CONSTANTS=>CRITICAL
cl_abap_unit_assert=>assert_equals(
act = f_cut->get_dimension_range( )
exp = 'C2:F5'
msg = 'get_dimension_range'
level = if_aunit_constants=>critical
).
ENDMETHOD.

View File

@ -5,7 +5,6 @@
<DD04V>
<ROLLNAME>ZEXCEL_ACTIVE_WORKSHEET</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>INT1</DOMNAME>
<HEADLEN>16</HEADLEN>
<SCRLEN1>06</SCRLEN1>
<SCRLEN2>16</SCRLEN2>
@ -16,7 +15,9 @@
<SCRTEXT_M>Active Worksheet</SCRTEXT_M>
<SCRTEXT_L>Active Worksheet</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<REFKIND>D</REFKIND>
<DATATYPE>INT1</DATATYPE>
<LENG>000003</LENG>
<OUTPUTLEN>000003</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>

View File

@ -5,7 +5,6 @@
<DD04V>
<ROLLNAME>ZEXCEL_BREAK</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>INT1</DOMNAME>
<HEADLEN>15</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>15</SCRLEN2>
@ -16,7 +15,9 @@
<SCRTEXT_M>Worksheet Break</SCRTEXT_M>
<SCRTEXT_L>Worksheet Break</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<REFKIND>D</REFKIND>
<DATATYPE>INT1</DATATYPE>
<LENG>000003</LENG>
<OUTPUTLEN>000003</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>

View File

@ -5,7 +5,6 @@
<DD04V>
<ROLLNAME>ZEXCEL_DIAGONAL</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>INT1</DOMNAME>
<HEADLEN>09</HEADLEN>
<SCRLEN1>09</SCRLEN1>
<SCRLEN2>09</SCRLEN2>
@ -16,7 +15,9 @@
<SCRTEXT_M>Fill Type</SCRTEXT_M>
<SCRTEXT_L>Fill Type</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<REFKIND>D</REFKIND>
<DATATYPE>INT1</DATATYPE>
<LENG>000003</LENG>
<OUTPUTLEN>000003</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>

View File

@ -5,7 +5,6 @@
<DD04V>
<ROLLNAME>ZEXCEL_GRAPH_TYPE</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>INT1</DOMNAME>
<HEADLEN>10</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>15</SCRLEN2>
@ -16,7 +15,9 @@
<SCRTEXT_M>Graph type</SCRTEXT_M>
<SCRTEXT_L>Graph type</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<REFKIND>D</REFKIND>
<DATATYPE>INT1</DATATYPE>
<LENG>000003</LENG>
<OUTPUTLEN>000003</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>

View File

@ -5,7 +5,6 @@
<DD04V>
<ROLLNAME>ZEXCEL_INDENT</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>INT1</DOMNAME>
<HEADLEN>13</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>15</SCRLEN2>
@ -16,7 +15,9 @@
<SCRTEXT_M>Indent</SCRTEXT_M>
<SCRTEXT_L>Indent</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<REFKIND>D</REFKIND>
<DATATYPE>INT1</DATATYPE>
<LENG>000003</LENG>
<OUTPUTLEN>000003</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>

View File

@ -5,7 +5,7 @@
<DD04V>
<ROLLNAME>ZEXCEL_PRINT_GRIDLINES</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>ABAP_BOOLEAN</DOMNAME>
<DOMNAME>XSDBOOLEAN</DOMNAME>
<HEADLEN>55</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>15</SCRLEN2>

View File

@ -5,7 +5,7 @@
<DD04V>
<ROLLNAME>ZEXCEL_SCALECROP</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>ABAP_BOOLEAN</DOMNAME>
<DOMNAME>XSDBOOLEAN</DOMNAME>
<HEADLEN>55</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>15</SCRLEN2>

View File

@ -5,7 +5,7 @@
<DD04V>
<ROLLNAME>ZEXCEL_SHEET_HIDDEN</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>ABAP_BOOLEAN</DOMNAME>
<DOMNAME>XSDBOOLEAN</DOMNAME>
<HEADLEN>15</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>15</SCRLEN2>

View File

@ -5,7 +5,6 @@
<DD04V>
<ROLLNAME>ZEXCEL_SHEET_PAPER_SIZE</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>INT1</DOMNAME>
<HEADLEN>09</HEADLEN>
<SCRLEN1>09</SCRLEN1>
<SCRLEN2>09</SCRLEN2>
@ -16,7 +15,9 @@
<SCRTEXT_M>Fill Type</SCRTEXT_M>
<SCRTEXT_L>Fill Type</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<REFKIND>D</REFKIND>
<DATATYPE>INT1</DATATYPE>
<LENG>000003</LENG>
<OUTPUTLEN>000003</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>

View File

@ -5,7 +5,7 @@
<DD04V>
<ROLLNAME>ZEXCEL_SHEET_SELECTED</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>ABAP_BOOLEAN</DOMNAME>
<DOMNAME>XSDBOOLEAN</DOMNAME>
<HEADLEN>18</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>18</SCRLEN2>

View File

@ -5,7 +5,7 @@
<DD04V>
<ROLLNAME>ZEXCEL_SHOW_GRIDLINES</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>ABAP_BOOLEAN</DOMNAME>
<DOMNAME>XSDBOOLEAN</DOMNAME>
<HEADLEN>55</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>15</SCRLEN2>

View File

@ -5,7 +5,7 @@
<DD04V>
<ROLLNAME>ZEXCEL_SHOW_ROWCOLHEADER</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>ABAP_BOOLEAN</DOMNAME>
<DOMNAME>XSDBOOLEAN</DOMNAME>
<HEADLEN>22</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>20</SCRLEN2>

View File

@ -5,7 +5,6 @@
<DD04V>
<ROLLNAME>ZEXCEL_STYLE_FONT_FAMILY</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>INT1</DOMNAME>
<HEADLEN>20</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>15</SCRLEN2>
@ -16,7 +15,9 @@
<SCRTEXT_M>Font family</SCRTEXT_M>
<SCRTEXT_L>Font family</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<REFKIND>D</REFKIND>
<DATATYPE>INT1</DATATYPE>
<LENG>000003</LENG>
<OUTPUTLEN>000003</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>

View File

@ -5,7 +5,6 @@
<DD04V>
<ROLLNAME>ZEXCEL_STYLE_FONT_SIZE</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>INT1</DOMNAME>
<HEADLEN>20</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>15</SCRLEN2>
@ -16,7 +15,9 @@
<SCRTEXT_M>Font size</SCRTEXT_M>
<SCRTEXT_L>Font size</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<REFKIND>D</REFKIND>
<DATATYPE>INT1</DATATYPE>
<LENG>000003</LENG>
<OUTPUTLEN>000003</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>

View File

@ -5,7 +5,6 @@
<DD04V>
<ROLLNAME>ZEXCEL_TEXT_ROTATION</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>INT1</DOMNAME>
<HEADLEN>13</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>15</SCRLEN2>
@ -16,7 +15,9 @@
<SCRTEXT_M>Text Rotation</SCRTEXT_M>
<SCRTEXT_L>Text Rotation</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<REFKIND>D</REFKIND>
<DATATYPE>INT1</DATATYPE>
<LENG>000003</LENG>
<OUTPUTLEN>000003</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>