mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-06 12:21:43 +08:00
Merge branch 'master' into hvam/unit0511
This commit is contained in:
commit
197b5ebe52
84
src/zcl_excel_collection.clas.abap
Normal file
84
src/zcl_excel_collection.clas.abap
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
CLASS zcl_excel_collection DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC .
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
ty_collection TYPE STANDARD TABLE OF REF TO object .
|
||||||
|
|
||||||
|
DATA collection TYPE ty_collection READ-ONLY .
|
||||||
|
|
||||||
|
METHODS size
|
||||||
|
RETURNING
|
||||||
|
VALUE(size) TYPE i .
|
||||||
|
METHODS is_empty
|
||||||
|
RETURNING
|
||||||
|
VALUE(is_empty) TYPE abap_bool .
|
||||||
|
METHODS get
|
||||||
|
IMPORTING
|
||||||
|
!index TYPE i
|
||||||
|
RETURNING
|
||||||
|
VALUE(object) TYPE REF TO object .
|
||||||
|
METHODS get_iterator
|
||||||
|
RETURNING
|
||||||
|
VALUE(iterator) TYPE REF TO zcl_excel_collection_iterator .
|
||||||
|
METHODS add
|
||||||
|
IMPORTING
|
||||||
|
!element TYPE REF TO object .
|
||||||
|
METHODS remove
|
||||||
|
IMPORTING
|
||||||
|
!element TYPE REF TO object .
|
||||||
|
METHODS clear .
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ZCL_EXCEL_COLLECTION IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD add .
|
||||||
|
APPEND element TO collection.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD clear .
|
||||||
|
CLEAR collection.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get .
|
||||||
|
READ TABLE collection INDEX index INTO object.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_iterator .
|
||||||
|
CREATE OBJECT iterator
|
||||||
|
EXPORTING
|
||||||
|
collection = me.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD is_empty.
|
||||||
|
is_empty = boolc( size( ) = 0 ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD remove .
|
||||||
|
DATA obj TYPE REF TO object.
|
||||||
|
LOOP AT collection INTO obj.
|
||||||
|
IF obj = element.
|
||||||
|
DELETE collection.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD size.
|
||||||
|
size = lines( collection ).
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
37
src/zcl_excel_collection.clas.testclasses.abap
Normal file
37
src/zcl_excel_collection.clas.testclasses.abap
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
METHODS test01 FOR TESTING RAISING cx_static_check.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ltcl_test IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD test01.
|
||||||
|
|
||||||
|
DATA lo_collection TYPE REF TO zcl_excel_collection.
|
||||||
|
|
||||||
|
CREATE OBJECT lo_collection.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_collection->size( )
|
||||||
|
exp = 0 ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_collection->is_empty( )
|
||||||
|
exp = abap_true ).
|
||||||
|
|
||||||
|
* heh, yea, add the collection to itself :)
|
||||||
|
lo_collection->add( lo_collection ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_collection->size( )
|
||||||
|
exp = 1 ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_collection->is_empty( )
|
||||||
|
exp = abap_false ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
17
src/zcl_excel_collection.clas.xml
Normal file
17
src/zcl_excel_collection.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>ZCL_EXCEL_COLLECTION</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abap2xlsx - Object Collection</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
52
src/zcl_excel_collection_iterator.clas.abap
Normal file
52
src/zcl_excel_collection_iterator.clas.abap
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
CLASS zcl_excel_collection_iterator DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC .
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
METHODS get_index
|
||||||
|
RETURNING
|
||||||
|
VALUE(index) TYPE i.
|
||||||
|
METHODS has_next
|
||||||
|
RETURNING
|
||||||
|
VALUE(has_next) TYPE abap_bool.
|
||||||
|
METHODS get_next
|
||||||
|
RETURNING
|
||||||
|
VALUE(object) TYPE REF TO object.
|
||||||
|
METHODS constructor
|
||||||
|
IMPORTING
|
||||||
|
collection TYPE REF TO zCL_excel_COLLECTION.
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
DATA index TYPE i VALUE 0.
|
||||||
|
DATA collection TYPE REF TO zcl_excel_collection.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ZCL_EXCEL_COLLECTION_ITERATOR IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD constructor .
|
||||||
|
me->collection = collection.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_index .
|
||||||
|
index = me->index.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_next .
|
||||||
|
DATA obj TYPE REF TO object.
|
||||||
|
index = index + 1.
|
||||||
|
object = collection->get( index ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD has_next.
|
||||||
|
DATA obj TYPE REF TO object.
|
||||||
|
obj = collection->get( index + 1 ).
|
||||||
|
has_next = boolc( obj IS NOT INITIAL ).
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
16
src/zcl_excel_collection_iterator.clas.xml
Normal file
16
src/zcl_excel_collection_iterator.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>ZCL_EXCEL_COLLECTION_ITERATOR</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abap2xlsx - Object Iterator</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -68,7 +68,32 @@ CLASS lcl_excel_common_test DEFINITION FOR TESTING
|
||||||
iv_shift_cols TYPE i
|
iv_shift_cols TYPE i
|
||||||
iv_shift_rows TYPE i
|
iv_shift_rows TYPE i
|
||||||
iv_expected TYPE string.
|
iv_expected TYPE string.
|
||||||
METHODS: shift_formula FOR TESTING.
|
METHODS: shift_formula_basic FOR TESTING,
|
||||||
|
shift_formula_rightdown FOR TESTING,
|
||||||
|
shift_formula_leftup FOR TESTING,
|
||||||
|
shift_formula_fixedcolrows FOR TESTING,
|
||||||
|
shift_formula_mixedfixedrows FOR TESTING,
|
||||||
|
shift_formula_rangename FOR TESTING,
|
||||||
|
shift_formula_stringlitconc FOR TESTING,
|
||||||
|
shift_formula_extref FOR TESTING,
|
||||||
|
shift_formula_charblanks FOR TESTING,
|
||||||
|
shift_formula_stringblanks FOR TESTING,
|
||||||
|
shift_formula_funcnoargs FOR TESTING,
|
||||||
|
shift_formula_nocellref FOR TESTING,
|
||||||
|
shift_formula_empty FOR TESTING,
|
||||||
|
shift_formula_referr_colunder FOR TESTING,
|
||||||
|
shift_formula_referr_rowunder FOR TESTING,
|
||||||
|
shift_formula_referr_rowcolund FOR TESTING,
|
||||||
|
shift_formula_sheet_nodigit FOR TESTING,
|
||||||
|
shift_formula_sheet_nodig FOR TESTING,
|
||||||
|
shift_formula_sheet_special FOR TESTING,
|
||||||
|
shift_formula_resp_blanks_1 FOR TESTING,
|
||||||
|
shift_formula_resp_blanks_2 FOR TESTING,
|
||||||
|
shift_formula_range FOR TESTING,
|
||||||
|
shift_formula_notcols FOR TESTING,
|
||||||
|
shift_formula_name FOR TESTING,
|
||||||
|
shift_formula_refcolumn1 FOR TESTING,
|
||||||
|
shift_formula_refcolumn2 FOR TESTING.
|
||||||
METHODS is_cell_in_range_ulc_in FOR TESTING.
|
METHODS is_cell_in_range_ulc_in FOR TESTING.
|
||||||
METHODS is_cell_in_range_lrc_in FOR TESTING.
|
METHODS is_cell_in_range_lrc_in FOR TESTING.
|
||||||
METHODS is_cell_in_range_leftside_out FOR TESTING.
|
METHODS is_cell_in_range_leftside_out FOR TESTING.
|
||||||
|
@ -1181,7 +1206,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD shift_formula.
|
METHOD shift_formula_basic.
|
||||||
|
|
||||||
" Very basic check
|
" Very basic check
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
|
@ -1190,6 +1215,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 0
|
iv_shift_rows = 0
|
||||||
iv_expected = 'C17' ).
|
iv_expected = 'C17' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_rightdown.
|
||||||
|
|
||||||
" Check shift right and down
|
" Check shift right and down
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'C17'
|
iv_reference_formula = 'C17'
|
||||||
|
@ -1197,6 +1226,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 3
|
iv_shift_rows = 3
|
||||||
iv_expected = 'E20' ).
|
iv_expected = 'E20' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_leftup.
|
||||||
|
|
||||||
" Check shift left and up
|
" Check shift left and up
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'C17'
|
iv_reference_formula = 'C17'
|
||||||
|
@ -1204,6 +1237,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = -3
|
iv_shift_rows = -3
|
||||||
iv_expected = 'A14' ).
|
iv_expected = 'A14' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_fixedcolrows.
|
||||||
|
|
||||||
" Fixed columns/rows
|
" Fixed columns/rows
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = '$C$17'
|
iv_reference_formula = '$C$17'
|
||||||
|
@ -1211,6 +1248,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = '$C$17' ).
|
iv_expected = '$C$17' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_mixedfixedrows.
|
||||||
|
|
||||||
" Operators and Ranges, mixed fixed rows or columns
|
" Operators and Ranges, mixed fixed rows or columns
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'SUM($C17:C$23)+C30'
|
iv_reference_formula = 'SUM($C17:C$23)+C30'
|
||||||
|
@ -1218,6 +1259,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 11
|
iv_shift_rows = 11
|
||||||
iv_expected = 'SUM($C28:D$23)+D41' ).
|
iv_expected = 'SUM($C28:D$23)+D41' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_rangename.
|
||||||
|
|
||||||
" Operators and Rangename
|
" Operators and Rangename
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'RNGNAME1+C7'
|
iv_reference_formula = 'RNGNAME1+C7'
|
||||||
|
@ -1225,6 +1270,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = -4
|
iv_shift_rows = -4
|
||||||
iv_expected = 'RNGNAME1+B3' ).
|
iv_expected = 'RNGNAME1+B3' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_stringlitconc.
|
||||||
|
|
||||||
" String literals and string concatenation
|
" String literals and string concatenation
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = '"Date:"&TEXT(B2)'
|
iv_reference_formula = '"Date:"&TEXT(B2)'
|
||||||
|
@ -1232,6 +1281,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = '"Date:"&TEXT(C3)' ).
|
iv_expected = '"Date:"&TEXT(C3)' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_extref.
|
||||||
|
|
||||||
" External sheet reference
|
" External sheet reference
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = '[TEST6.XLSX]SHEET1!A1'
|
iv_reference_formula = '[TEST6.XLSX]SHEET1!A1'
|
||||||
|
@ -1239,6 +1292,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 11
|
iv_shift_rows = 11
|
||||||
iv_expected = '[TEST6.XLSX]SHEET1!B12' ).
|
iv_expected = '[TEST6.XLSX]SHEET1!B12' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_charblanks.
|
||||||
|
|
||||||
" superflous blanks, multi-argument functions, literals in function, unknown functions
|
" superflous blanks, multi-argument functions, literals in function, unknown functions
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = `X(B13, "KK" ) `
|
iv_reference_formula = `X(B13, "KK" ) `
|
||||||
|
@ -1246,6 +1303,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = `X(C14, "KK" ) ` ).
|
iv_expected = `X(C14, "KK" ) ` ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_stringblanks.
|
||||||
|
|
||||||
" same as above - but with string input instead of Char-input
|
" same as above - but with string input instead of Char-input
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = `SIN(SIN(SIN(SIN(E22))))`
|
iv_reference_formula = `SIN(SIN(SIN(SIN(E22))))`
|
||||||
|
@ -1253,6 +1314,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = 'SIN(SIN(SIN(SIN(E23))))' ).
|
iv_expected = 'SIN(SIN(SIN(SIN(E23))))' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_funcnoargs.
|
||||||
|
|
||||||
" Functions w/o arguments, No cellreferences
|
" Functions w/o arguments, No cellreferences
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'HEUTE()'
|
iv_reference_formula = 'HEUTE()'
|
||||||
|
@ -1260,6 +1325,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 5
|
iv_shift_rows = 5
|
||||||
iv_expected = 'HEUTE()' ).
|
iv_expected = 'HEUTE()' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_nocellref.
|
||||||
|
|
||||||
" No cellreferences
|
" No cellreferences
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = '"B2"'
|
iv_reference_formula = '"B2"'
|
||||||
|
@ -1267,6 +1336,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 5
|
iv_shift_rows = 5
|
||||||
iv_expected = '"B2"' ).
|
iv_expected = '"B2"' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_empty.
|
||||||
|
|
||||||
" Empty
|
" Empty
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = ''
|
iv_reference_formula = ''
|
||||||
|
@ -1274,6 +1347,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 5
|
iv_shift_rows = 5
|
||||||
iv_expected = '' ).
|
iv_expected = '' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_referr_colunder.
|
||||||
|
|
||||||
" Referencing error , column only , underflow
|
" Referencing error , column only , underflow
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'A1+$A1+A$1+$A$1+B2'
|
iv_reference_formula = 'A1+$A1+A$1+$A$1+B2'
|
||||||
|
@ -1281,6 +1358,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 0
|
iv_shift_rows = 0
|
||||||
iv_expected = '#REF!+$A1+#REF!+$A$1+A2' ).
|
iv_expected = '#REF!+$A1+#REF!+$A$1+A2' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_referr_rowunder.
|
||||||
|
|
||||||
" Referencing error , row only , underflow
|
" Referencing error , row only , underflow
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'A1+$A1+A$1+$A$1+B2'
|
iv_reference_formula = 'A1+$A1+A$1+$A$1+B2'
|
||||||
|
@ -1288,6 +1369,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = -1
|
iv_shift_rows = -1
|
||||||
iv_expected = '#REF!+#REF!+A$1+$A$1+B1' ).
|
iv_expected = '#REF!+#REF!+A$1+$A$1+B1' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_referr_rowcolund.
|
||||||
|
|
||||||
" Referencing error , row and column , underflow
|
" Referencing error , row and column , underflow
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'A1+$A1+A$1+$A$1+B2'
|
iv_reference_formula = 'A1+$A1+A$1+$A$1+B2'
|
||||||
|
@ -1295,6 +1380,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = -1
|
iv_shift_rows = -1
|
||||||
iv_expected = '#REF!+#REF!+#REF!+$A$1+A1' ).
|
iv_expected = '#REF!+#REF!+#REF!+$A$1+A1' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_sheet_nodigit.
|
||||||
|
|
||||||
" Sheet name not ending with digit
|
" Sheet name not ending with digit
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'Sheet!A1'
|
iv_reference_formula = 'Sheet!A1'
|
||||||
|
@ -1302,6 +1391,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = 'Sheet!B2' ).
|
iv_expected = 'Sheet!B2' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_sheet_nodig.
|
||||||
|
|
||||||
" Sheet name ending with digit
|
" Sheet name ending with digit
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'Sheet2!A1'
|
iv_reference_formula = 'Sheet2!A1'
|
||||||
|
@ -1309,6 +1402,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = 'Sheet2!B2' ).
|
iv_expected = 'Sheet2!B2' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_sheet_special.
|
||||||
|
|
||||||
" Sheet name with special characters
|
" Sheet name with special characters
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = |'Sheet name'!A1|
|
iv_reference_formula = |'Sheet name'!A1|
|
||||||
|
@ -1316,6 +1413,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = |'Sheet name'!B2| ).
|
iv_expected = |'Sheet name'!B2| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_resp_blanks_1.
|
||||||
|
|
||||||
" Respecting blanks
|
" Respecting blanks
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'SUBTOTAL(109,Table1[SUM 1])'
|
iv_reference_formula = 'SUBTOTAL(109,Table1[SUM 1])'
|
||||||
|
@ -1323,6 +1424,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = 'SUBTOTAL(109,Table1[SUM 1])' ).
|
iv_expected = 'SUBTOTAL(109,Table1[SUM 1])' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_resp_blanks_2.
|
||||||
|
|
||||||
" Respecting blanks
|
" Respecting blanks
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'B4 & C4'
|
iv_reference_formula = 'B4 & C4'
|
||||||
|
@ -1330,6 +1435,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = 'B5 & C5' ).
|
iv_expected = 'B5 & C5' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_range.
|
||||||
|
|
||||||
" F_1 is a range name, not a cell address
|
" F_1 is a range name, not a cell address
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'SUM(F_1,F_2)'
|
iv_reference_formula = 'SUM(F_1,F_2)'
|
||||||
|
@ -1337,6 +1446,9 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = 'SUM(F_1,F_2)' ).
|
iv_expected = 'SUM(F_1,F_2)' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_notcols.
|
||||||
" RC are not columns
|
" RC are not columns
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'INDIRECT("RC[4]",FALSE)'
|
iv_reference_formula = 'INDIRECT("RC[4]",FALSE)'
|
||||||
|
@ -1344,6 +1456,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = 'INDIRECT("RC[4]",FALSE)' ).
|
iv_expected = 'INDIRECT("RC[4]",FALSE)' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_name.
|
||||||
|
|
||||||
" A1 is a sheet name
|
" A1 is a sheet name
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = |'A1'!$A$1|
|
iv_reference_formula = |'A1'!$A$1|
|
||||||
|
@ -1351,6 +1467,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = |'A1'!$A$1| ).
|
iv_expected = |'A1'!$A$1| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_refcolumn1.
|
||||||
|
|
||||||
" Reference to another column in the same row of a Table, with a space in the column name
|
" Reference to another column in the same row of a Table, with a space in the column name
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'Tbl[[#This Row],[Air fare]]'
|
iv_reference_formula = 'Tbl[[#This Row],[Air fare]]'
|
||||||
|
@ -1358,6 +1478,10 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
iv_shift_rows = 1
|
iv_shift_rows = 1
|
||||||
iv_expected = 'Tbl[[#This Row],[Air fare]]' ).
|
iv_expected = 'Tbl[[#This Row],[Air fare]]' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD shift_formula_refcolumn2.
|
||||||
|
|
||||||
" Reference to another column in the same row of a Table, inside more complex expression
|
" Reference to another column in the same row of a Table, inside more complex expression
|
||||||
macro_shift_formula(
|
macro_shift_formula(
|
||||||
iv_reference_formula = 'Tbl[[#This Row],[Air]]+A1'
|
iv_reference_formula = 'Tbl[[#This Row],[Air]]+A1'
|
||||||
|
|
|
@ -100,15 +100,15 @@ CLASS zcl_excel_converter DEFINITION
|
||||||
DATA wt_colors TYPE zexcel_t_converter_col .
|
DATA wt_colors TYPE zexcel_t_converter_col .
|
||||||
DATA wt_filter TYPE zexcel_t_converter_fil .
|
DATA wt_filter TYPE zexcel_t_converter_fil .
|
||||||
CLASS-DATA wt_objects TYPE tt_alv_types .
|
CLASS-DATA wt_objects TYPE tt_alv_types .
|
||||||
CLASS-DATA w_fcount TYPE numc3 .
|
CLASS-DATA w_fcount TYPE n LENGTH 3 .
|
||||||
DATA wt_sort_values TYPE tt_sort_values .
|
DATA wt_sort_values TYPE tt_sort_values .
|
||||||
DATA wt_subtotal_rows TYPE tt_subtotal_rows .
|
DATA wt_subtotal_rows TYPE tt_subtotal_rows .
|
||||||
DATA wt_styles TYPE tt_styles .
|
DATA wt_styles TYPE tt_styles .
|
||||||
CONSTANTS c_type_hdr TYPE c VALUE 'H'. "#EC NOTEXT
|
CONSTANTS c_type_hdr TYPE c VALUE 'H'. "#EC NOTEXT
|
||||||
CONSTANTS c_type_str TYPE c VALUE 'P'. "#EC NOTEXT
|
CONSTANTS c_type_str TYPE c VALUE 'P'. "#EC NOTEXT
|
||||||
CONSTANTS c_type_nor TYPE c VALUE 'N'. "#EC NOTEXT
|
CONSTANTS c_type_nor TYPE c VALUE 'N'. "#EC NOTEXT
|
||||||
CONSTANTS c_type_sub TYPE c VALUE 'S'. "#EC NOTEXT
|
CONSTANTS c_type_sub TYPE c VALUE 'S'. "#EC NOTEXT
|
||||||
CONSTANTS c_type_tot TYPE c VALUE 'T'. "#EC NOTEXT
|
CONSTANTS c_type_tot TYPE c VALUE 'T'. "#EC NOTEXT
|
||||||
DATA wt_color_styles TYPE tt_color_styles .
|
DATA wt_color_styles TYPE tt_color_styles .
|
||||||
CLASS-DATA ws_option TYPE zexcel_s_converter_option .
|
CLASS-DATA ws_option TYPE zexcel_s_converter_option .
|
||||||
CLASS-DATA ws_indx TYPE indx .
|
CLASS-DATA ws_indx TYPE indx .
|
||||||
|
@ -249,7 +249,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_excel_converter IMPLEMENTATION.
|
CLASS ZCL_EXCEL_CONVERTER IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD ask_option.
|
METHOD ask_option.
|
||||||
|
|
|
@ -597,7 +597,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION.
|
||||||
lo_table TYPE REF TO zcl_excel_table.
|
lo_table TYPE REF TO zcl_excel_table.
|
||||||
|
|
||||||
DATA: lv_worksheets_num TYPE i,
|
DATA: lv_worksheets_num TYPE i,
|
||||||
lv_worksheets_numc TYPE numc3,
|
lv_worksheets_numc TYPE n LENGTH 3,
|
||||||
lv_xml_node_worksheet_pn TYPE string,
|
lv_xml_node_worksheet_pn TYPE string,
|
||||||
lv_value TYPE string,
|
lv_value TYPE string,
|
||||||
lv_comment_index TYPE i VALUE 1, " (+) GGAR
|
lv_comment_index TYPE i VALUE 1, " (+) GGAR
|
||||||
|
@ -1075,8 +1075,8 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION.
|
||||||
lo_element TYPE REF TO if_ixml_element.
|
lo_element TYPE REF TO if_ixml_element.
|
||||||
|
|
||||||
DATA: lv_value TYPE string,
|
DATA: lv_value TYPE string,
|
||||||
lv_date TYPE sydatum,
|
lv_date TYPE d,
|
||||||
lv_time TYPE syuzeit.
|
lv_time TYPE t.
|
||||||
|
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* STEP 1: Create [Content_Types].xml into the root of the ZIP
|
* STEP 1: Create [Content_Types].xml into the root of the ZIP
|
||||||
|
|
|
@ -32,23 +32,28 @@ CLASS zcl_excel_writer_csv DEFINITION
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
DATA excel TYPE REF TO zcl_excel .
|
DATA excel TYPE REF TO zcl_excel .
|
||||||
CLASS-DATA delimiter TYPE c VALUE ';'. "#EC NOTEXT . . . . . . . . . " .
|
CLASS-DATA delimiter TYPE c VALUE ';' ##NO_TEXT.
|
||||||
CLASS-DATA enclosure TYPE c VALUE '"'. "#EC NOTEXT . . . . . . . . . " .
|
CLASS-DATA enclosure TYPE c VALUE '"' ##NO_TEXT.
|
||||||
CLASS-DATA eol TYPE c LENGTH 2 VALUE cl_abap_char_utilities=>cr_lf. "#EC NOTEXT . . . . . . . . . " .
|
CLASS-DATA:
|
||||||
|
eol TYPE c LENGTH 2 VALUE cl_abap_char_utilities=>cr_lf ##NO_TEXT.
|
||||||
CLASS-DATA worksheet_name TYPE zexcel_worksheets_name .
|
CLASS-DATA worksheet_name TYPE zexcel_worksheets_name .
|
||||||
CLASS-DATA worksheet_index TYPE zexcel_active_worksheet .
|
CLASS-DATA worksheet_index TYPE zexcel_active_worksheet .
|
||||||
|
|
||||||
METHODS create
|
METHODS create
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ep_excel) TYPE xstring .
|
VALUE(ep_excel) TYPE xstring
|
||||||
|
RAISING
|
||||||
|
zcx_excel.
|
||||||
METHODS create_csv
|
METHODS create_csv
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ep_content) TYPE xstring .
|
VALUE(ep_content) TYPE xstring
|
||||||
|
RAISING
|
||||||
|
zcx_excel .
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_excel_writer_csv IMPLEMENTATION.
|
CLASS ZCL_EXCEL_WRITER_CSV IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD create.
|
METHOD create.
|
||||||
|
@ -68,7 +73,7 @@ CLASS zcl_excel_writer_csv IMPLEMENTATION.
|
||||||
END OF lty_format.
|
END OF lty_format.
|
||||||
DATA: lt_format TYPE STANDARD TABLE OF lty_format,
|
DATA: lt_format TYPE STANDARD TABLE OF lty_format,
|
||||||
ls_format LIKE LINE OF lt_format,
|
ls_format LIKE LINE OF lt_format,
|
||||||
lv_date TYPE dats,
|
lv_date TYPE d,
|
||||||
lv_tmp TYPE string,
|
lv_tmp TYPE string,
|
||||||
lv_time TYPE c LENGTH 8.
|
lv_time TYPE c LENGTH 8.
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<DD03P_TABLE>
|
<DD03P_TABLE>
|
||||||
<DD03P>
|
<DD03P>
|
||||||
<FIELDNAME>ABOVE_AVERAGE</FIELDNAME>
|
<FIELDNAME>ABOVE_AVERAGE</FIELDNAME>
|
||||||
<ROLLNAME>FLAG</ROLLNAME>
|
<ROLLNAME>XSDBOOLEAN</ROLLNAME>
|
||||||
<ADMINFIELD>0</ADMINFIELD>
|
<ADMINFIELD>0</ADMINFIELD>
|
||||||
<VALEXI>X</VALEXI>
|
<VALEXI>X</VALEXI>
|
||||||
<SHLPORIGIN>F</SHLPORIGIN>
|
<SHLPORIGIN>F</SHLPORIGIN>
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
</DD03P>
|
</DD03P>
|
||||||
<DD03P>
|
<DD03P>
|
||||||
<FIELDNAME>EQUAL_AVERAGE</FIELDNAME>
|
<FIELDNAME>EQUAL_AVERAGE</FIELDNAME>
|
||||||
<ROLLNAME>FLAG</ROLLNAME>
|
<ROLLNAME>XSDBOOLEAN</ROLLNAME>
|
||||||
<ADMINFIELD>0</ADMINFIELD>
|
<ADMINFIELD>0</ADMINFIELD>
|
||||||
<VALEXI>X</VALEXI>
|
<VALEXI>X</VALEXI>
|
||||||
<SHLPORIGIN>F</SHLPORIGIN>
|
<SHLPORIGIN>F</SHLPORIGIN>
|
||||||
|
@ -28,9 +28,12 @@
|
||||||
</DD03P>
|
</DD03P>
|
||||||
<DD03P>
|
<DD03P>
|
||||||
<FIELDNAME>STANDARD_DEVIATION</FIELDNAME>
|
<FIELDNAME>STANDARD_DEVIATION</FIELDNAME>
|
||||||
<ROLLNAME>NUM1</ROLLNAME>
|
|
||||||
<ADMINFIELD>0</ADMINFIELD>
|
<ADMINFIELD>0</ADMINFIELD>
|
||||||
<COMPTYPE>E</COMPTYPE>
|
<INTTYPE>N</INTTYPE>
|
||||||
|
<INTLEN>000002</INTLEN>
|
||||||
|
<DATATYPE>NUMC</DATATYPE>
|
||||||
|
<LENG>000001</LENG>
|
||||||
|
<MASK> NUMC</MASK>
|
||||||
</DD03P>
|
</DD03P>
|
||||||
<DD03P>
|
<DD03P>
|
||||||
<FIELDNAME>CELL_STYLE</FIELDNAME>
|
<FIELDNAME>CELL_STYLE</FIELDNAME>
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
<DD04V>
|
<DD04V>
|
||||||
<ROLLNAME>ZEXCEL_DOCSECURITY</ROLLNAME>
|
<ROLLNAME>ZEXCEL_DOCSECURITY</ROLLNAME>
|
||||||
<DDLANGUAGE>E</DDLANGUAGE>
|
<DDLANGUAGE>E</DDLANGUAGE>
|
||||||
<DOMNAME>NUMC1</DOMNAME>
|
|
||||||
<HEADLEN>55</HEADLEN>
|
<HEADLEN>55</HEADLEN>
|
||||||
<SCRLEN1>10</SCRLEN1>
|
<SCRLEN1>10</SCRLEN1>
|
||||||
<SCRLEN2>15</SCRLEN2>
|
<SCRLEN2>15</SCRLEN2>
|
||||||
|
@ -16,7 +15,9 @@
|
||||||
<SCRTEXT_M>DocSecurity</SCRTEXT_M>
|
<SCRTEXT_M>DocSecurity</SCRTEXT_M>
|
||||||
<SCRTEXT_L>DocSecurity</SCRTEXT_L>
|
<SCRTEXT_L>DocSecurity</SCRTEXT_L>
|
||||||
<DTELMASTER>E</DTELMASTER>
|
<DTELMASTER>E</DTELMASTER>
|
||||||
<REFKIND>D</REFKIND>
|
<DATATYPE>NUMC</DATATYPE>
|
||||||
|
<LENG>000001</LENG>
|
||||||
|
<OUTPUTLEN>000001</OUTPUTLEN>
|
||||||
</DD04V>
|
</DD04V>
|
||||||
</asx:values>
|
</asx:values>
|
||||||
</asx:abap>
|
</asx:abap>
|
||||||
|
|
|
@ -6,5 +6,7 @@ INTERFACE zif_excel_writer
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!io_excel TYPE REF TO zcl_excel
|
!io_excel TYPE REF TO zcl_excel
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ep_file) TYPE xstring .
|
VALUE(ep_file) TYPE xstring
|
||||||
|
RAISING
|
||||||
|
zcx_excel.
|
||||||
ENDINTERFACE.
|
ENDINTERFACE.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user