mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 10:56:14 +08:00
issue #234 : We may not ship patched copy of CL_ABAP_ZIP. Removed from trunk and switched coding to dynamic methodcalls.
git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@365 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049
This commit is contained in:
parent
3081783b51
commit
82c6b78f09
|
@ -1,929 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<CLAS CLSNAME="ZCL_EXCEL_ABAP_ZIP" VERSION="1" LANGU="E" DESCRIPT="Alternate Zip Utility" UUID="E22EF0F7F3E02BF1B7380050568C0F65" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSFINAL="X" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 ">
|
||||
<types CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="T_EXT" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="1 " TYPTYPE="4" SRCROW1="6 " SRCCOLUMN1="4 " SRCROW2="17 " SRCCOLUMN2="20 " TYPESRC_LENG="458 " TYPESRC="BEGIN OF T_EXT,
|
||||
min_extract_version TYPE i,
|
||||
gen_flags TYPE i,
|
||||
compressed TYPE i,
|
||||
compsize TYPE i,
|
||||
crc32(4) TYPE x,
|
||||
filename_len TYPE i,
|
||||
filename TYPE xstring,
|
||||
extra_len TYPE i,
|
||||
extra TYPE xstring,
|
||||
content TYPE xstring,
|
||||
END OF T_EXT
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="T_EXTS" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="2 " TYPTYPE="4" SRCROW1="19 " SRCCOLUMN1="4 " SRCROW2="19 " SRCCOLUMN2="29 " TYPESRC_LENG="28 " TYPESRC="T_EXTS TYPE TABLE OF T_EXT
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="T_FILE" VERSION="1" LANGU="E" EXPOSURE="2" STATE="1" EDITORDER="1 " TYPTYPE="4" SRCROW1="12 " SRCCOLUMN1="4 " SRCROW2="17 " SRCCOLUMN2="21 " TYPESRC_LENG="147 " TYPESRC="BEGIN OF T_FILE,
|
||||
name TYPE string,
|
||||
date TYPE d,
|
||||
time TYPE t,
|
||||
size TYPE i,
|
||||
END OF T_FILE
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="T_FILES" VERSION="1" LANGU="E" EXPOSURE="2" STATE="1" EDITORDER="2 " TYPTYPE="4" SRCROW1="19 " SRCCOLUMN1="4 " SRCROW2="19 " SRCCOLUMN2="31 " TYPESRC_LENG="30 " TYPESRC="T_FILES TYPE TABLE OF T_FILE
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="T_SPLICE_ENTRY" VERSION="1" LANGU="E" EXPOSURE="2" STATE="1" EDITORDER="3 " TYPTYPE="4" SRCROW1="21 " SRCCOLUMN1="4 " SRCROW2="26 " SRCCOLUMN2="29 " TYPESRC_LENG="187 " TYPESRC="BEGIN OF T_SPLICE_ENTRY,
|
||||
name TYPE string,
|
||||
offset TYPE i,
|
||||
length TYPE i,
|
||||
compressed TYPE i,
|
||||
END OF T_SPLICE_ENTRY
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="T_SPLICE_ENTRIES" VERSION="1" LANGU="E" EXPOSURE="2" STATE="1" EDITORDER="4 " TYPTYPE="4" SRCROW1="28 " SRCCOLUMN1="4 " SRCROW2="28 " SRCCOLUMN2="74 " TYPESRC_LENG="73 " TYPESRC="T_SPLICE_ENTRIES TYPE STANDARD TABLE OF T_SPLICE_ENTRY WITH DEFAULT KEY
|
||||
"/>
|
||||
<publicSection>class ZCL_EXCEL_ABAP_ZIP definition
|
||||
public
|
||||
final
|
||||
create public .
|
||||
|
||||
*"* public components of class ZCL_EXCEL_ABAP_ZIP
|
||||
*"* do not include other source files here!!!
|
||||
public section.
|
||||
type-pools IHTTP .
|
||||
|
||||
types:
|
||||
BEGIN OF T_FILE,
|
||||
name TYPE string,
|
||||
date TYPE d,
|
||||
time TYPE t,
|
||||
size TYPE i,
|
||||
END OF T_FILE .
|
||||
types:
|
||||
T_FILES TYPE TABLE OF T_FILE .
|
||||
types:
|
||||
BEGIN OF T_SPLICE_ENTRY,
|
||||
name TYPE string,
|
||||
offset TYPE i,
|
||||
length TYPE i,
|
||||
compressed TYPE i,
|
||||
END OF T_SPLICE_ENTRY .
|
||||
types:
|
||||
T_SPLICE_ENTRIES TYPE STANDARD TABLE OF T_SPLICE_ENTRY WITH DEFAULT KEY .
|
||||
|
||||
data FILES type T_FILES read-only .
|
||||
type-pools ABAP .
|
||||
data SUPPORT_UNICODE_NAMES type ABAP_BOOL value ABAP_FALSE. "#EC NOTEXT .
|
||||
|
||||
methods LOAD
|
||||
importing
|
||||
!ZIP type XSTRING
|
||||
exceptions
|
||||
ZIP_PARSE_ERROR .
|
||||
methods SAVE
|
||||
returning
|
||||
value(ZIP) type XSTRING .
|
||||
methods GET
|
||||
importing
|
||||
!NAME type STRING optional
|
||||
value(INDEX) type I default 0
|
||||
exporting
|
||||
!CONTENT type XSTRING
|
||||
exceptions
|
||||
ZIP_INDEX_ERROR
|
||||
ZIP_DECOMPRESSION_ERROR .
|
||||
methods ADD
|
||||
importing
|
||||
!NAME type STRING
|
||||
!CONTENT type XSEQUENCE .
|
||||
methods DELETE
|
||||
importing
|
||||
!NAME type STRING optional
|
||||
value(INDEX) type I default 0
|
||||
exceptions
|
||||
ZIP_INDEX_ERROR .
|
||||
class-methods CRC32
|
||||
importing
|
||||
!CONTENT type XSTRING
|
||||
returning
|
||||
value(CRC32) type I .
|
||||
class-methods SPLICE
|
||||
importing
|
||||
!ZIP type XSTRING
|
||||
returning
|
||||
value(ENTRIES) type T_SPLICE_ENTRIES .</publicSection>
|
||||
<protectedSection>*"* protected components of class CL_ABAP_ZIP
|
||||
*"* do not include other source files here!!!
|
||||
protected section.</protectedSection>
|
||||
<privateSection>*"* private components of class CL_ABAP_ZIP
|
||||
*"* do not include other source files here!!!
|
||||
private section.
|
||||
|
||||
types:
|
||||
BEGIN OF T_EXT,
|
||||
min_extract_version TYPE i,
|
||||
gen_flags TYPE i,
|
||||
compressed TYPE i,
|
||||
compsize TYPE i,
|
||||
crc32(4) TYPE x,
|
||||
filename_len TYPE i,
|
||||
filename TYPE xstring,
|
||||
extra_len TYPE i,
|
||||
extra TYPE xstring,
|
||||
content TYPE xstring,
|
||||
END OF T_EXT .
|
||||
types:
|
||||
T_EXTS TYPE TABLE OF T_EXT .
|
||||
|
||||
data EXTS type T_EXTS .
|
||||
class-data CRC32_MAP type XSTRING .</privateSection>
|
||||
<localImplementation>CLASS msdos IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD from_date. " IMPORTING msdos_date TYPE i RETURNING value(date) TYPE d
|
||||
|
||||
* MS-DOS format for date:
|
||||
* Bits 15:9 = year - 1980
|
||||
* Bits 8:5 = month of year
|
||||
* Bits 4:0 = day of month
|
||||
|
||||
CONSTANTS: mFE00(2) TYPE x VALUE 'FE00',
|
||||
m01E0(2) TYPE x VALUE '01E0',
|
||||
m001F(2) TYPE x VALUE '001F'.
|
||||
|
||||
DATA: x(2) TYPE x,
|
||||
year TYPE i,
|
||||
month TYPE i,
|
||||
day TYPE i,
|
||||
c4(4) TYPE c,
|
||||
str TYPE string.
|
||||
|
||||
* Bits 15:9 = year - 1980
|
||||
x = msdos_date.
|
||||
x = x BIT-AND mFE00.
|
||||
x = x DIV 512. " >> 9
|
||||
x = x BIT-AND m001F.
|
||||
year = x.
|
||||
year = year + 1980.
|
||||
WRITE year TO c4 USING EDIT MASK 'RR____'.
|
||||
CONCATENATE str c4 INTO str.
|
||||
|
||||
* Bits 8:5 = month of year
|
||||
x = msdos_date.
|
||||
x = x BIT-AND m01E0.
|
||||
x = x DIV 32. " >> 5
|
||||
x = x BIT-AND m001F.
|
||||
month = x.
|
||||
WRITE month TO c4 USING EDIT MASK 'RR__'.
|
||||
CONCATENATE str c4 INTO str.
|
||||
|
||||
* Bits 4:0 = day of month
|
||||
x = msdos_date.
|
||||
x = x BIT-AND m001F.
|
||||
day = x.
|
||||
WRITE day TO c4 USING EDIT MASK 'RR__'.
|
||||
CONCATENATE str c4 INTO str.
|
||||
|
||||
* Build date
|
||||
TRANSLATE str USING ' 0'.
|
||||
date = str.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD from_time. " IMPORTING msdos_time TYPE i RETURNING value(time) TYPE t.
|
||||
|
||||
* MS-DOS format for time:
|
||||
* Bits 15:11 = hour (24-hour clock)
|
||||
* Bits 10:5 = minute
|
||||
* Bits 4:0 = second/2
|
||||
|
||||
CONSTANTS: mF100(2) TYPE x VALUE 'F100',
|
||||
m07E0(2) TYPE x VALUE '07E0',
|
||||
m003F(2) TYPE x VALUE '003F',
|
||||
m001F(2) TYPE x VALUE '001F'.
|
||||
|
||||
DATA: x(2) TYPE x,
|
||||
hour TYPE i,
|
||||
min TYPE i,
|
||||
c4(4) TYPE c,
|
||||
str TYPE string.
|
||||
|
||||
* Bits 15:11 = hour (24-hour clock)
|
||||
x = msdos_time.
|
||||
x = x BIT-AND mF100.
|
||||
x = x DIV 2048. " >> 11
|
||||
x = x BIT-AND m001F.
|
||||
hour = x.
|
||||
WRITE hour TO c4 USING EDIT MASK 'RR__'.
|
||||
CONCATENATE str c4 INTO str.
|
||||
|
||||
* Bits 10:5 = minute
|
||||
x = msdos_time.
|
||||
x = x BIT-AND m07E0.
|
||||
x = x DIV 32. " >> 5
|
||||
x = x BIT-AND m003F.
|
||||
min = x.
|
||||
WRITE min TO c4 USING EDIT MASK 'RR__'.
|
||||
CONCATENATE str c4 INTO str.
|
||||
|
||||
* Bits 4:0 = second/2
|
||||
CONCATENATE str '00' INTO str.
|
||||
|
||||
* Build time
|
||||
TRANSLATE str USING ' 0'.
|
||||
time = str.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD to_date. " IMPORTING date TYPE d RETURNING value(msdos_date) TYPE i.
|
||||
|
||||
* MS-DOS format for date:
|
||||
* Bits 15:9 = year - 1980
|
||||
* Bits 8:5 = month of year
|
||||
* Bits 4:0 = day of month
|
||||
|
||||
DATA: xdate(2) TYPE x,
|
||||
x(2) TYPE x,
|
||||
year TYPE i,
|
||||
month TYPE i,
|
||||
day TYPE i.
|
||||
|
||||
* Bits 15:9 = year - 1980
|
||||
year = date+0(4).
|
||||
x = year - 1980.
|
||||
x = x * 512. " << 9
|
||||
xdate = xdate BIT-OR x.
|
||||
|
||||
* Bits 8:5 = month of year
|
||||
month = date+4(2).
|
||||
x = month.
|
||||
x = x * 32. " << 5
|
||||
xdate = xdate BIT-OR x.
|
||||
|
||||
* Bits 4:0 = day of month
|
||||
day = date+6(2).
|
||||
x = day.
|
||||
xdate = xdate BIT-OR x.
|
||||
|
||||
msdos_date = xdate.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD to_time. " IMPORTING time TYPE t RETURNING value(msdos_time) TYPE i.
|
||||
|
||||
* MS-DOS format for time:
|
||||
* Bits 15:11 = hour (24-hour clock)
|
||||
* Bits 10:5 = minute
|
||||
* Bits 4:0 = second/2
|
||||
|
||||
DATA: xtime(2) TYPE x,
|
||||
x(2) TYPE x,
|
||||
hour TYPE i,
|
||||
min TYPE i,
|
||||
sec TYPE i.
|
||||
|
||||
* Bits 15:11 = hour (24-hour clock)
|
||||
hour = time+0(2).
|
||||
x = hour.
|
||||
x = x * 2048. " << 11
|
||||
xtime = xtime BIT-OR x.
|
||||
|
||||
* Bits 10:5 = minute
|
||||
min = time+2(2).
|
||||
x = min.
|
||||
x = x * 32. " << 5
|
||||
xtime = xtime BIT-OR x.
|
||||
|
||||
* Bits 4:0 = seconds
|
||||
sec = time+4(2).
|
||||
x = sec / 2.
|
||||
xtime = xtime BIT-OR x.
|
||||
|
||||
msdos_time = xtime.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
ENDCLASS.</localImplementation>
|
||||
<localTypes>CLASS msdos DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
CLASS-METHODS: to_date IMPORTING date TYPE d RETURNING value(msdos_date) TYPE i.
|
||||
CLASS-METHODS: to_time IMPORTING time TYPE t RETURNING value(msdos_time) TYPE i.
|
||||
CLASS-METHODS: from_date IMPORTING msdos_date TYPE i RETURNING value(date) TYPE d.
|
||||
CLASS-METHODS: from_time IMPORTING msdos_time TYPE i RETURNING value(time) TYPE t.
|
||||
ENDCLASS.</localTypes>
|
||||
<localMacros>*"* use this source file for any macro definitions you need
|
||||
*"* in the implementation part of the class</localMacros>
|
||||
<typeUsage CLSNAME="ZCL_EXCEL_ABAP_ZIP" TYPEGROUP="ABAP" VERSION="1" TPUTYPE="0" IMPLICIT="X"/>
|
||||
<typeUsage CLSNAME="ZCL_EXCEL_ABAP_ZIP" TYPEGROUP="IHTTP" VERSION="1" TPUTYPE="0" EXPLICIT="X"/>
|
||||
<forwardDeclaration>ABAP</forwardDeclaration>
|
||||
<forwardDeclaration>IHTTP</forwardDeclaration>
|
||||
<attribute CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="CRC32_MAP" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="2 " ATTDECLTYP="1" ATTEXPVIRT="0" TYPTYPE="1" TYPE="XSTRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="EXTS" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="T_EXTS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="FILES" VERSION="1" LANGU="E" EXPOSURE="2" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTRDONLY="X" ATTEXPVIRT="0" TYPTYPE="1" TYPE="T_FILES" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="SUPPORT_UNICODE_NAMES" VERSION="1" LANGU="E" DESCRIPT="Feature initially disabled because of compatibility" EXPOSURE="2" STATE="1" EDITORDER="2 " ATTDECLTYP="0" ATTVALUE="ABAP_FALSE" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ABAP_BOOL" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<method CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="ADD" VERSION="1" LANGU="E" DESCRIPT="Adds a File to a Zip Folder" EXPOSURE="2" STATE="1" EDITORDER="4 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="ADD" SCONAME="NAME" VERSION="1" LANGU="E" DESCRIPT="Name (Case-Sensitive)" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="ADD" SCONAME="CONTENT" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="XSEQUENCE"/>
|
||||
<source>METHOD ADD.
|
||||
|
||||
FIELD-SYMBOLS: <file> TYPE t_file,
|
||||
<ext> TYPE t_ext.
|
||||
|
||||
APPEND INITIAL LINE TO files ASSIGNING <file>.
|
||||
APPEND INITIAL LINE TO exts ASSIGNING <ext>.
|
||||
|
||||
<file>-name = name.
|
||||
<file>-date = sy-datum.
|
||||
<file>-time = sy-uzeit.
|
||||
<file>-size = XSTRLEN( content ).
|
||||
|
||||
* general purpose flag bit 11 (Language encoding flag (EFS)
|
||||
CONSTANTS: gen_flags_unicode(2) TYPE x VALUE '0800'.
|
||||
* see: http://www.pkware.com/documents/casestudies/APPNOTE.TXT, APPENDIX D
|
||||
* zip normaly used IBM Code Page 437 mapped to SAP Printer EPESCP IBM 437
|
||||
|
||||
DATA: conv TYPE REF TO cl_abap_conv_out_ce,
|
||||
conv_cp437 TYPE REF TO cl_abap_conv_out_ce,
|
||||
conv_utf8 TYPE REF TO cl_abap_conv_out_ce,
|
||||
cp437 TYPE abap_encoding value '1142', " IBM 437
|
||||
utf8 TYPE abap_encoding value '4110'. " UTF-8
|
||||
if support_unicode_names = abap_true.
|
||||
conv = cl_abap_conv_out_ce=>create( encoding = utf8
|
||||
ignore_cerr = abap_true
|
||||
replacement = '#' ).
|
||||
else.
|
||||
conv = cl_abap_conv_out_ce=>create( encoding = cp437
|
||||
ignore_cerr = abap_true
|
||||
replacement = '#' ).
|
||||
endif.
|
||||
conv->convert( EXPORTING data = <file>-name IMPORTING buffer = <ext>-filename ).
|
||||
<ext>-filename_len = XSTRLEN( <ext>-filename ).
|
||||
<ext>-extra_len = 0.
|
||||
<ext>-extra = ''.
|
||||
<ext>-min_extract_version = 20.
|
||||
if support_unicode_names = abap_true.
|
||||
<ext>-gen_flags = gen_flags_unicode.
|
||||
else.
|
||||
<ext>-gen_flags = 0.
|
||||
endif.
|
||||
|
||||
IF <file>-size > 0.
|
||||
<ext>-compressed = 8. " gzip Deflate
|
||||
<ext>-crc32 = crc32( content ).
|
||||
cl_abap_gzip=>compress_binary(
|
||||
EXPORTING raw_in = content
|
||||
raw_in_len = <file>-size
|
||||
IMPORTING gzip_out = <ext>-content
|
||||
gzip_out_len = <ext>-compsize ).
|
||||
ELSE. " folder
|
||||
<ext>-compressed = 0. " gzip Stored
|
||||
<ext>-crc32 = 0.
|
||||
<ext>-compsize = 0.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="CRC32" VERSION="1" LANGU="E" DESCRIPT="Calculate a CRC32 Value" EXPOSURE="2" STATE="1" EDITORDER="6 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="CRC32" SCONAME="CONTENT" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="XSTRING"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="CRC32" SCONAME="CRC32" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="I"/>
|
||||
<source>METHOD CRC32.
|
||||
|
||||
* Let us ask our friendly neighbour whether there is a CRC32 in the kernel (thanks guys!)
|
||||
IF cl_http_utility=>is_ict_system_call_implemented( ihttp_scid_crc32_checksum ) IS INITIAL.
|
||||
SYSTEM-CALL ict "#EC CI_SYSTEMCALL
|
||||
DID
|
||||
ihttp_scid_crc32_checksum
|
||||
PARAMETERS
|
||||
content " > xstr
|
||||
crc32. " < unsigned int
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
* Do the calculations by hand. This is going to be slow. This is going to be a pain.
|
||||
* What is a man to do?
|
||||
|
||||
CONSTANTS: magic_nr(4) TYPE x VALUE 'EDB88320',
|
||||
mFFFFFFFF(4) TYPE x VALUE 'FFFFFFFF',
|
||||
m7FFFFFFF(4) TYPE x VALUE '7FFFFFFF',
|
||||
m00FFFFFF(4) TYPE x VALUE '00FFFFFF',
|
||||
m000000FF(4) TYPE x VALUE '000000FF',
|
||||
m000000(3) TYPE x VALUE '000000'.
|
||||
|
||||
IF XSTRLEN( crc32_map ) = 0.
|
||||
DO 256 TIMES.
|
||||
DATA: c(4) TYPE x, low_bit(4) TYPE x.
|
||||
c = sy-index - 1.
|
||||
DO 8 TIMES.
|
||||
low_bit = '00000001'. low_bit = c BIT-AND low_bit. " c & 1
|
||||
c = c DIV 2. c = c BIT-AND m7FFFFFFF. " c >> 1 (top is zero, but in ABAP signed!)
|
||||
IF low_bit IS NOT INITIAL.
|
||||
c = c BIT-XOR magic_nr.
|
||||
ENDIF.
|
||||
ENDDO.
|
||||
CONCATENATE crc32_map c INTO crc32_map IN BYTE MODE.
|
||||
ENDDO.
|
||||
ENDIF.
|
||||
|
||||
DATA: len TYPE i, n TYPE i. "#EC *
|
||||
DATA: crc(4) TYPE x VALUE mFFFFFFFF, x4(4) TYPE x, idx(4) TYPE x.
|
||||
|
||||
len = XSTRLEN( content ).
|
||||
DO len TIMES.
|
||||
n = sy-index - 1.
|
||||
CONCATENATE m000000 content+n(1) INTO idx IN BYTE MODE.
|
||||
idx = ( crc BIT-XOR idx ) BIT-AND m000000FF.
|
||||
idx = idx * 4.
|
||||
x4 = crc32_map+idx(4).
|
||||
crc = crc DIV 256. crc = crc BIT-AND m00FFFFFF. " c >> 8
|
||||
crc = x4 BIT-XOR crc.
|
||||
ENDDO.
|
||||
crc = crc BIT-XOR mFFFFFFFF.
|
||||
|
||||
crc32 = crc.
|
||||
|
||||
ENDMETHOD.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="DELETE" VERSION="1" LANGU="E" DESCRIPT="Deletes a File in the Zip Folder" EXPOSURE="2" STATE="1" EDITORDER="5 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="DELETE" SCONAME="NAME" VERSION="1" LANGU="E" DESCRIPT="Name (Case-Sensitive)" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING" PAROPTIONL="X"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="DELETE" SCONAME="INDEX" VERSION="1" LANGU="E" DESCRIPT="Either Name or Index" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="1" TYPE="I" PARVALUE="0" PAROPTIONL="X"/>
|
||||
<exception CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="DELETE" SCONAME="ZIP_INDEX_ERROR" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="1 "/>
|
||||
<source>METHOD DELETE.
|
||||
|
||||
IF index = 0.
|
||||
READ TABLE files TRANSPORTING NO FIELDS WITH KEY name = name.
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
RAISE zip_index_error. "#EC RAISE_OK
|
||||
ENDIF.
|
||||
index = sy-tabix.
|
||||
ENDIF.
|
||||
|
||||
IF index < 1 OR index > LINES( files ).
|
||||
RAISE zip_index_error. "#EC RAISE_OK
|
||||
ENDIF.
|
||||
|
||||
DELETE files INDEX index.
|
||||
DELETE exts INDEX index.
|
||||
|
||||
ENDMETHOD.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="GET" VERSION="1" LANGU="E" DESCRIPT="Reads a File from the Zip Folder" EXPOSURE="2" STATE="1" EDITORDER="3 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="GET" SCONAME="NAME" VERSION="1" LANGU="E" DESCRIPT="Name (Case-Sensitive)" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING" PAROPTIONL="X"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="GET" SCONAME="INDEX" VERSION="1" LANGU="E" DESCRIPT="Either Name or Index" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="1" TYPE="I" PARVALUE="0" PAROPTIONL="X"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="GET" SCONAME="CONTENT" VERSION="1" LANGU="E" DESCRIPT="Contents" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="XSTRING"/>
|
||||
<exception CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="GET" SCONAME="ZIP_INDEX_ERROR" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="1 "/>
|
||||
<exception CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="GET" SCONAME="ZIP_DECOMPRESSION_ERROR" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="2 "/>
|
||||
<source>METHOD GET.
|
||||
|
||||
FIELD-SYMBOLS: <ext> TYPE t_ext.
|
||||
|
||||
IF index IS INITIAL.
|
||||
READ TABLE files TRANSPORTING NO FIELDS WITH KEY name = name.
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
RAISE zip_index_error. "#EC RAISE_OK
|
||||
ENDIF.
|
||||
index = sy-tabix.
|
||||
ENDIF.
|
||||
|
||||
IF index < 1 OR index > LINES( files ).
|
||||
RAISE zip_index_error. "#EC RAISE_OK
|
||||
ENDIF.
|
||||
|
||||
READ TABLE exts INDEX index ASSIGNING <ext>.
|
||||
|
||||
IF <ext>-compressed IS INITIAL.
|
||||
content = <ext>-content.
|
||||
ELSE.
|
||||
cl_abap_gzip=>decompress_binary(
|
||||
EXPORTING gzip_in = <ext>-content
|
||||
gzip_in_len = <ext>-compsize
|
||||
IMPORTING raw_out = content ).
|
||||
ENDIF.
|
||||
|
||||
IF crc32( content ) <> <ext>-crc32.
|
||||
RAISE zip_decompression_error. "#EC RAISE_OK
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="LOAD" VERSION="1" LANGU="E" DESCRIPT="Loads a Zip File" EXPOSURE="2" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="LOAD" SCONAME="ZIP" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="XSTRING"/>
|
||||
<exception CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="LOAD" SCONAME="ZIP_PARSE_ERROR" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="1 "/>
|
||||
<source>METHOD load.
|
||||
|
||||
* Documentation from: http://www.pkware.com/company/standards/appnote/appnote.txt
|
||||
|
||||
* Start to decode new ZIP file
|
||||
CLEAR: files, exts.
|
||||
REFRESH: files, exts.
|
||||
|
||||
* Global offset for moving through file
|
||||
DATA: offset TYPE i.
|
||||
|
||||
DEFINE next. " move offset
|
||||
offset = offset + &1.
|
||||
END-OF-DEFINITION.
|
||||
|
||||
* DATA: l1(1) TYPE x, h1(1) TYPE x, l2(1) TYPE x, h2(1) TYPE x, xstr TYPE xstring.
|
||||
DATA: w2(2) TYPE x, w4(4) TYPE x, xstr TYPE xstring.
|
||||
DEFINE read2. " read two bytes as integer and move offset
|
||||
* l1 = zip+offset(1). offset = offset + 1.
|
||||
* h1 = zip+offset(1). offset = offset + 1.
|
||||
* CONCATENATE h1 l1 INTO xstr IN BYTE MODE.
|
||||
w2 = zip+offset(2).
|
||||
offset = offset + 2.
|
||||
concatenate w2+1(1) w2+0(1) into xstr in byte mode.
|
||||
&1 = xstr.
|
||||
END-OF-DEFINITION.
|
||||
|
||||
DEFINE read4. " read four bytes as integer and move offset
|
||||
* l1 = zip+offset(1). offset = offset + 1.
|
||||
* h1 = zip+offset(1). offset = offset + 1.
|
||||
* l2 = zip+offset(1). offset = offset + 1.
|
||||
* h2 = zip+offset(1). offset = offset + 1.
|
||||
* CONCATENATE h2 l2 h1 l1 INTO xstr IN BYTE MODE.
|
||||
w4 = zip+offset(4).
|
||||
offset = offset + 4.
|
||||
concatenate w4+3(1) w4+2(1) w4+1(1) w4+0(1) into xstr in byte mode.
|
||||
&1 = xstr.
|
||||
END-OF-DEFINITION.
|
||||
|
||||
CONSTANTS: gen_flags_encrypted(2) TYPE x VALUE '0001',
|
||||
gen_flags_unicode(2) TYPE x VALUE '0800'. " general purpose flag bit 11
|
||||
DATA: gen_flags(2) TYPE x.
|
||||
|
||||
* We convert all names from xstring into string
|
||||
* see: http://www.pkware.com/documents/casestudies/APPNOTE.TXT, APPENDIX D
|
||||
* zip normaly used IBM Code Page 437 mapped to SAP Printer EPESCP IBM 437
|
||||
DATA: conv TYPE REF TO cl_abap_conv_in_ce,
|
||||
conv_cp437 TYPE REF TO cl_abap_conv_in_ce,
|
||||
conv_utf8 TYPE REF TO cl_abap_conv_in_ce,
|
||||
cp437 TYPE abap_encoding VALUE '1142', " IBM 437
|
||||
utf8 TYPE abap_encoding VALUE '4110'. " UTF-8
|
||||
|
||||
conv_cp437 = cl_abap_conv_in_ce=>create( encoding = cp437
|
||||
ignore_cerr = abap_true
|
||||
replacement = '#' ).
|
||||
conv_utf8 = cl_abap_conv_in_ce=>create( encoding = utf8
|
||||
ignore_cerr = abap_true
|
||||
replacement = '#' ).
|
||||
|
||||
* The maximum length of the ZIP file for scanning.
|
||||
DATA: max_length TYPE i.
|
||||
max_length = XSTRLEN( zip ) - 4.
|
||||
|
||||
* Extract information about all files.
|
||||
DATA: msdos_date TYPE i, msdos_time TYPE i, file_no TYPE i VALUE 0.
|
||||
FIELD-SYMBOLS: <file> TYPE t_file,
|
||||
<ext> TYPE t_ext.
|
||||
*--------------------------------------------------------------------*
|
||||
* Insert Begin - Get local file headers by central directory record
|
||||
* Documentation: http://en.wikipedia.org/wiki/Zip_(file_format)
|
||||
*--------------------------------------------------------------------*
|
||||
* ### End of central directory record
|
||||
* 0 4 End of central directory signature = 0x06054b50
|
||||
* 4 2 Number of this disk
|
||||
* 6 2 Disk where central directory starts
|
||||
* 8 2 Number of central directory records on this disk
|
||||
*10 ->2 Total number of central directory records
|
||||
*12 4 Size of central directory (bytes)
|
||||
*16 ->4 Offset of start of central directory,relative to start of archive
|
||||
*20 2 Comment length (n)
|
||||
*22 n Comment
|
||||
*--------------------------------------------------------------------*
|
||||
* ### Central directory file header
|
||||
* 0 4 Central directory file header signature = 0x02014b50
|
||||
* 4 2 Version made by
|
||||
* 6 2 Version needed to extract (minimum)
|
||||
* 8 2 General purpose bit flag
|
||||
*10 2 Compression method
|
||||
*12 2 File last modification time
|
||||
*14 2 File last modification date
|
||||
*16 4 CRC-32
|
||||
*20 4 Compressed size
|
||||
*24 4 Uncompressed size
|
||||
*28 2 File name length (n)
|
||||
*30 2 Extra field length (m)
|
||||
*32 2 File comment length (k)
|
||||
*34 2 Disk number where file starts
|
||||
*36 2 Internal file attributes
|
||||
*38 4 External file attributes
|
||||
*42 4 Relative offset of local file header.
|
||||
*46 n File name
|
||||
*46+n m Extra field
|
||||
*46+n+m k File comment
|
||||
*--------------------------------------------------------------------*
|
||||
CONSTANTS: cv_end_central_directory(4) TYPE x VALUE '504B0506'.
|
||||
DATA: lt_match_results TYPE match_result_tab,
|
||||
lv_match_count TYPE i,
|
||||
ls_match_result LIKE LINE OF lt_match_results,
|
||||
|
||||
lv_entries_in_central_dir TYPE i,
|
||||
lv_offset_central_dir TYPE i,
|
||||
lv_offset_local_fileheader TYPE i,
|
||||
lv_file_name_length TYPE i,
|
||||
lv_extra_field_length TYPE i,
|
||||
lv_file_comment_length TYPE i,
|
||||
|
||||
lv_file_length TYPE i.
|
||||
|
||||
* Read "end of central directory record" to find "central directory record"
|
||||
FIND cv_end_central_directory IN zip IN BYTE MODE
|
||||
RESULTS lt_match_results MATCH COUNT lv_match_count .
|
||||
IF lv_match_count IS INITIAL.
|
||||
RAISE zip_parse_error. "#EC RAISE_OK
|
||||
ENDIF.
|
||||
READ TABLE lt_match_results INTO ls_match_result INDEX lv_match_count.
|
||||
|
||||
offset = ls_match_result-offset + 10.
|
||||
read2 lv_entries_in_central_dir.
|
||||
|
||||
offset = ls_match_result-offset + 16.
|
||||
read4 lv_offset_central_dir.
|
||||
|
||||
offset = lv_offset_central_dir.
|
||||
|
||||
DO lv_entries_in_central_dir TIMES.
|
||||
|
||||
offset = lv_offset_central_dir + 24.
|
||||
read4 lv_file_length. " uncompressed size
|
||||
|
||||
IF lv_file_length > 0. " Directoryentries in central file header have no local file header
|
||||
*--------------------------------------------------------------------*
|
||||
* Insert End - Get local file headers by central directory record
|
||||
*--------------------------------------------------------------------*
|
||||
|
||||
* WHILE offset < max_length AND zip+offset(4) = '504B0304'. "-cdr
|
||||
|
||||
|
||||
file_no = file_no + 1.
|
||||
APPEND INITIAL LINE TO files ASSIGNING <file>.
|
||||
APPEND INITIAL LINE TO exts ASSIGNING <ext>.
|
||||
*--------------------------------------------------------------------*
|
||||
* Insert Begin - Get local file headers by central directory record
|
||||
*--------------------------------------------------------------------*
|
||||
* Get position of local file header
|
||||
* CRC32, filesize, compressed size are set in central directory header
|
||||
* but not necessarily in local file header --> use this here
|
||||
offset = lv_offset_central_dir + 16.
|
||||
read4 <ext>-crc32. " crc-32
|
||||
read4 <ext>-compsize. " compressed size
|
||||
read4 <file>-size. " uncompressed size
|
||||
ENDIF.
|
||||
|
||||
* Get offset of local file header to continue old coding
|
||||
offset = lv_offset_central_dir + 42.
|
||||
read4 lv_offset_local_fileheader.
|
||||
|
||||
* and prepare next central directory entry
|
||||
offset = lv_offset_central_dir + 28.
|
||||
read2 lv_file_name_length .
|
||||
read2 lv_extra_field_length .
|
||||
read2 lv_file_comment_length.
|
||||
|
||||
ADD 46 TO lv_offset_central_dir.
|
||||
ADD lv_file_name_length TO lv_offset_central_dir.
|
||||
ADD lv_extra_field_length TO lv_offset_central_dir.
|
||||
ADD lv_file_comment_length TO lv_offset_central_dir.
|
||||
CHECK lv_file_length > 0. " Directoryentries in central file header have no local file header
|
||||
|
||||
offset = lv_offset_local_fileheader.
|
||||
*--------------------------------------------------------------------*
|
||||
* Insert End - Get local file headers by central directory record
|
||||
*--------------------------------------------------------------------*
|
||||
next 4. " local file header signature
|
||||
read2 <ext>-min_extract_version. " version needed to extract = 2.0 - File is compressed using Deflate
|
||||
read2 <ext>-gen_flags. " general purpose bit flag
|
||||
read2 <ext>-compressed. " compression method: deflated
|
||||
read2 msdos_time. " last mod file time
|
||||
read2 msdos_date. " last mod file date
|
||||
* read4 <ext>-crc32. " crc-32 "-cdr
|
||||
* read4 <ext>-compsize. " compressed size "-cdr
|
||||
* read4 <file>-size. " uncompressed size "-cdr
|
||||
next 12. "+cdr
|
||||
read2 <ext>-filename_len. " file name length
|
||||
read2 <ext>-extra_len. " extra field length
|
||||
|
||||
gen_flags = <ext>-gen_flags.
|
||||
gen_flags = gen_flags BIT-AND gen_flags_unicode. " bit 11: Language encoding flag
|
||||
IF gen_flags <> 0 AND support_unicode_names = abap_true.
|
||||
conv = conv_utf8. " utf-8 filename extension
|
||||
ELSE.
|
||||
conv = conv_cp437. " IBM CP437
|
||||
ENDIF.
|
||||
|
||||
<ext>-filename = zip+offset(<ext>-filename_len).
|
||||
conv->convert( EXPORTING input = <ext>-filename IMPORTING data = <file>-name ).
|
||||
next <ext>-filename_len.
|
||||
|
||||
<ext>-extra = zip+offset(<ext>-extra_len).
|
||||
next <ext>-extra_len.
|
||||
|
||||
IF <ext>-gen_flags <> 8.
|
||||
|
||||
<ext>-content = zip+offset(<ext>-compsize).
|
||||
next <ext>-compsize.
|
||||
|
||||
ELSE.
|
||||
|
||||
* Sometimes sequence in file and directory do not match.
|
||||
* READ TABLE markers INTO marker WITH KEY no = file_no.
|
||||
* DATA: cached_offset TYPE i. cached_offset = offset. offset = marker-offset + 16.
|
||||
DATA result_tab TYPE match_result_tab.
|
||||
FIELD-SYMBOLS <match> LIKE LINE OF result_tab.
|
||||
FIND ALL OCCURRENCES OF <ext>-filename IN zip RESULTS result_tab IN BYTE MODE.
|
||||
* --- start of modification:
|
||||
* The following modification was necessary to handle zip-archives containing files
|
||||
* where the name of one file is a sub-string of the name of another file
|
||||
|
||||
* --- deleted code:
|
||||
* Loop till the end of the result_tab to get the entry from the Central Directory
|
||||
* LOOP at result_tab ASSIGNING <match>.
|
||||
* ENDLOOP .
|
||||
* DATA: cached_offset TYPE i. cached_offset = offset. offset = <match>-offset - 30.
|
||||
|
||||
DATA: cached_offset TYPE i. cached_offset = offset.
|
||||
DATA: l_filename_length TYPE i.
|
||||
SORT result_tab BY offset DESCENDING.
|
||||
LOOP AT result_tab ASSIGNING <match>.
|
||||
offset = <match>-offset - 18.
|
||||
read2 l_filename_length.
|
||||
IF l_filename_length = XSTRLEN( <ext>-filename ).
|
||||
EXIT.
|
||||
ENDIF.
|
||||
ENDLOOP .
|
||||
|
||||
offset = <match>-offset - 30.
|
||||
* --- end of modification
|
||||
|
||||
read4 <ext>-crc32.
|
||||
read4 <ext>-compsize.
|
||||
read4 <file>-size.
|
||||
next 18.
|
||||
offset = cached_offset.
|
||||
<ext>-content = zip+offset(<ext>-compsize).
|
||||
next <ext>-compsize.
|
||||
next 16. " I032850
|
||||
|
||||
ENDIF.
|
||||
|
||||
<file>-time = msdos=>from_time( msdos_time ).
|
||||
<file>-date = msdos=>from_date( msdos_date ).
|
||||
|
||||
gen_flags = <ext>-gen_flags.
|
||||
gen_flags = gen_flags BIT-AND gen_flags_encrypted.
|
||||
|
||||
IF NOT ( <ext>-min_extract_version <= 20 )
|
||||
* OR NOT ( <ext>-gen_flags = 0 OR <ext>-gen_flags = 2 OR <ext>-gen_flags = 8 )
|
||||
OR ( gen_flags = gen_flags_encrypted )
|
||||
OR NOT ( <ext>-compressed = 0 OR <ext>-compressed = 8 ).
|
||||
RAISE zip_parse_error. "#EC RAISE_OK
|
||||
ENDIF.
|
||||
|
||||
* ENDWHILE. "-cdr
|
||||
ENDDO. "+cdr
|
||||
|
||||
ENDMETHOD.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="SAVE" VERSION="1" LANGU="E" DESCRIPT="Creates a Zip File" EXPOSURE="2" STATE="1" EDITORDER="2 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="SAVE" SCONAME="ZIP" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="XSTRING"/>
|
||||
<source>METHOD SAVE.
|
||||
|
||||
* Documentation from: http://www.pkware.com/company/standards/appnote/appnote.txt
|
||||
|
||||
DATA: x2(2) TYPE x, x4(4) TYPE x.
|
||||
|
||||
DEFINE writeX4. " write xstring
|
||||
x4 = &2.
|
||||
CONCATENATE &1 x4 INTO &1 IN BYTE MODE.
|
||||
END-OF-DEFINITION.
|
||||
|
||||
DEFINE write2. " write two bytes from integer
|
||||
x2 = &2.
|
||||
CONCATENATE &1 x2+1(1) x2+0(1) INTO &1 IN BYTE MODE.
|
||||
END-OF-DEFINITION.
|
||||
|
||||
DEFINE write4. " write four bytes from integer
|
||||
x4 = &2.
|
||||
CONCATENATE &1 x4+3(1) x4+2(1) x4+1(1) x4+0(1) INTO &1 IN BYTE MODE.
|
||||
END-OF-DEFINITION.
|
||||
|
||||
* Process all files. We write in parallel the zip and the central directory to use later
|
||||
DATA: msdos_date TYPE i, msdos_time TYPE i.
|
||||
FIELD-SYMBOLS: <file> TYPE t_file,
|
||||
<ext> TYPE t_ext.
|
||||
DATA: dir TYPE xstring, start_offset(4) TYPE x.
|
||||
|
||||
LOOP AT files ASSIGNING <file>.
|
||||
READ TABLE exts INDEX sy-tabix ASSIGNING <ext>.
|
||||
start_offset = XSTRLEN( zip ).
|
||||
|
||||
msdos_time = msdos=>to_time( <file>-time ).
|
||||
msdos_date = msdos=>to_date( <file>-date ).
|
||||
|
||||
* zip data stream
|
||||
writeX4 zip '504B0304'. " local file header signature
|
||||
write2 zip <ext>-min_extract_version. " version needed to extract = 2.0 - File is compressed using Deflate
|
||||
write2 zip <ext>-gen_flags. " general purpose bit flag
|
||||
write2 zip <ext>-compressed. " compression method: deflated
|
||||
write2 zip msdos_time. " last mod file time
|
||||
write2 zip msdos_date. " last mod file date
|
||||
write4 zip <ext>-crc32. " crc-32
|
||||
write4 zip <ext>-compsize. " compressed size
|
||||
write4 zip <file>-size. " uncompressed size
|
||||
write2 zip <ext>-filename_len. " file name length
|
||||
write2 zip <ext>-extra_len. " extra field length
|
||||
|
||||
CONCATENATE zip <ext>-filename <ext>-extra <ext>-content INTO zip IN BYTE MODE.
|
||||
|
||||
* central directory stream (which has a lare duplicate sequence of zip header)
|
||||
DATA: dup_offset TYPE i. dup_offset = start_offset + 4.
|
||||
writeX4 dir '504B0102'. " central file header signature
|
||||
write2 dir 19. " version made by (== pkzip 2.04g)
|
||||
CONCATENATE dir zip+dup_offset(26) INTO dir IN BYTE MODE. " part which matches exactly zip header
|
||||
write2 dir 0. " file comment length
|
||||
write2 dir 0. " disk number start
|
||||
write2 dir 0. " internal file attributes
|
||||
write4 dir 0. " external file attributes
|
||||
write4 dir start_offset. " relative offset of local header
|
||||
CONCATENATE dir <ext>-filename <ext>-extra INTO dir IN BYTE MODE. " file name + extra info
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
* Write Central Directory
|
||||
DATA: lines_files TYPE i. lines_files = LINES( files ).
|
||||
DATA: xstrlen_dir TYPE i. xstrlen_dir = XSTRLEN( dir ).
|
||||
DATA: offset_dir TYPE i. offset_dir = XSTRLEN( zip ).
|
||||
|
||||
CONCATENATE zip dir INTO zip IN BYTE MODE.
|
||||
writeX4 zip '504B0506'. " End of central directory
|
||||
write2 zip 0. " number of this disk
|
||||
write2 zip 0. " number of the disk with the start of the central directory
|
||||
write2 zip lines_files. " total number of entries in the central directory on this disk
|
||||
write2 zip lines_files. " total number of entries in the central directory
|
||||
write4 zip xstrlen_dir. " size of the central directory
|
||||
write4 zip offset_dir. " offset of start of central directory
|
||||
write2 zip 0. " ZIP file comment length
|
||||
|
||||
ENDMETHOD.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="SPLICE" VERSION="1" LANGU="E" DESCRIPT="Loads and Splits a Zip File" EXPOSURE="2" STATE="1" EDITORDER="7 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="SPLICE" SCONAME="ZIP" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="XSTRING"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_ABAP_ZIP" CMPNAME="SPLICE" SCONAME="ENTRIES" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="T_SPLICE_ENTRIES"/>
|
||||
<source>METHOD SPLICE.
|
||||
|
||||
* Documentation from: http://www.pkware.com/company/standards/appnote/appnote.txt
|
||||
|
||||
* Local variables.
|
||||
FIELD-SYMBOLS:
|
||||
<entry> LIKE LINE OF entries.
|
||||
DATA: filename_len TYPE i,
|
||||
extra_len TYPE i,
|
||||
filename TYPE xstring.
|
||||
|
||||
* Start to decode new ZIP file
|
||||
CLEAR: entries.
|
||||
REFRESH: entries.
|
||||
|
||||
* Global offset for moving through file
|
||||
DATA: offset TYPE i.
|
||||
|
||||
DATA: w2(2) TYPE x, w4(4) TYPE x, xstr TYPE xstring.
|
||||
DEFINE read2. "#EC NEEDED read two bytes as integer and move offset
|
||||
w2 = zip+offset(2).
|
||||
offset = offset + 2.
|
||||
CONCATENATE w2+1(1) w2+0(1) INTO xstr IN BYTE MODE.
|
||||
&1 = xstr.
|
||||
END-OF-DEFINITION.
|
||||
|
||||
DEFINE read4. "#EC NEEDED read four bytes as integer and move offset
|
||||
w4 = zip+offset(4).
|
||||
offset = offset + 4.
|
||||
CONCATENATE w4+3(1) w4+2(1) w4+1(1) w4+0(1) INTO xstr IN BYTE MODE.
|
||||
&1 = xstr.
|
||||
END-OF-DEFINITION.
|
||||
|
||||
* We convert all names from xstring into string
|
||||
DATA: conv TYPE REF TO cl_abap_conv_in_ce.
|
||||
conv = cl_abap_conv_in_ce=>create( ).
|
||||
|
||||
* Extract information about all files.
|
||||
WHILE zip+offset(4) = '504B0304'. " local file header signature
|
||||
|
||||
APPEND INITIAL LINE TO entries ASSIGNING <entry>.
|
||||
|
||||
offset = offset + 8. " next 4=(header). read2 <ext>-min_extract_version. read2 <ext>-gen_flags.
|
||||
read2 <entry>-compressed. " compression method: deflated
|
||||
offset = offset + 8. " read2 msdos_time. read2 msdos_date. read4 <ext>-crc32.
|
||||
read4 <entry>-length. " compressed size
|
||||
offset = offset + 4. " uncompressed size
|
||||
read2 filename_len. " file name length
|
||||
read2 extra_len. " extra field length
|
||||
|
||||
filename = zip+offset(filename_len).
|
||||
conv->convert( EXPORTING input = filename IMPORTING data = <entry>-name ).
|
||||
|
||||
<entry>-offset = offset + filename_len + extra_len.
|
||||
offset = <entry>-offset + <entry>-length.
|
||||
|
||||
ENDWHILE.
|
||||
|
||||
DELETE entries WHERE length = 0.
|
||||
|
||||
ENDMETHOD.</source>
|
||||
</method>
|
||||
</CLAS>
|
|
@ -1,13 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<CLAS CLSNAME="ZCL_EXCEL_READER_2007" VERSION="1" LANGU="E" DESCRIPT="Read Excel 2007 into ZCL_EXCEL" UUID="DFAC2E4C81CE84F1B39B000C29B7D360" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 ">
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_RELATIONSHIP" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="1 " TYPTYPE="4" SRCROW1="6 " SRCCOLUMN1="4 " SRCROW2="11 " SRCCOLUMN2="29 " TYPESRC_LENG="222 " TYPESRC="BEGIN OF t_relationship,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_RELATIONSHIP" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="1 " TYPTYPE="4" SRCROW1="6 " SRCCOLUMN1="4 " SRCROW2="11 " SRCCOLUMN2="29 " TYPESRC_LENG="216 " TYPESRC="BEGIN OF t_relationship,
|
||||
id TYPE string,
|
||||
type TYPE string,
|
||||
target TYPE string,
|
||||
worksheet TYPE REF TO zcl_excel_worksheet,
|
||||
END OF t_relationship
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_FILEVERSION" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="2 " TYPTYPE="4" SRCROW1="13 " SRCCOLUMN1="4 " SRCROW2="19 " SRCCOLUMN2="26 " TYPESRC_LENG="254 " TYPESRC="BEGIN OF t_fileversion,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_FILEVERSION" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="2 " TYPTYPE="4" SRCROW1="13 " SRCCOLUMN1="4 " SRCROW2="19 " SRCCOLUMN2="26 " TYPESRC_LENG="247 " TYPESRC="BEGIN OF t_fileversion,
|
||||
appname TYPE string,
|
||||
lastedited TYPE string,
|
||||
lowestedited TYPE string,
|
||||
|
@ -15,56 +15,56 @@
|
|||
codename TYPE string,
|
||||
END OF t_fileversion
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_SHEET" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="3 " TYPTYPE="4" SRCROW1="21 " SRCCOLUMN1="4 " SRCROW2="26 " SRCCOLUMN2="22 " TYPESRC_LENG="188 " TYPESRC="BEGIN OF t_sheet,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_SHEET" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="3 " TYPTYPE="4" SRCROW1="21 " SRCCOLUMN1="4 " SRCROW2="26 " SRCCOLUMN2="22 " TYPESRC_LENG="182 " TYPESRC="BEGIN OF t_sheet,
|
||||
name TYPE string,
|
||||
sheetid TYPE string,
|
||||
id TYPE string,
|
||||
state TYPE string,
|
||||
END OF t_sheet
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_WORKBOOKPR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="4 " TYPTYPE="4" SRCROW1="28 " SRCCOLUMN1="4 " SRCROW2="31 " SRCCOLUMN2="27 " TYPESRC_LENG="150 " TYPESRC="BEGIN OF t_workbookpr,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_WORKBOOKPR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="4 " TYPTYPE="4" SRCROW1="28 " SRCCOLUMN1="4 " SRCROW2="31 " SRCCOLUMN2="27 " TYPESRC_LENG="146 " TYPESRC="BEGIN OF t_workbookpr,
|
||||
codename TYPE string,
|
||||
defaultthemeversion TYPE string,
|
||||
END OF t_workbookpr
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_SHEETPR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="5 " TYPTYPE="4" SRCROW1="33 " SRCCOLUMN1="4 " SRCROW2="35 " SRCCOLUMN2="24 " TYPESRC_LENG="96 " TYPESRC="BEGIN OF t_sheetpr,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_SHEETPR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="5 " TYPTYPE="4" SRCROW1="33 " SRCCOLUMN1="4 " SRCROW2="35 " SRCCOLUMN2="24 " TYPESRC_LENG="93 " TYPESRC="BEGIN OF t_sheetpr,
|
||||
codename TYPE string,
|
||||
END OF t_sheetpr
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_RANGE" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="6 " TYPTYPE="4" SRCROW1="37 " SRCCOLUMN1="4 " SRCROW2="40 " SRCCOLUMN2="22 " TYPESRC_LENG="143 " TYPESRC='BEGIN OF t_range,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_RANGE" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="6 " TYPTYPE="4" SRCROW1="37 " SRCCOLUMN1="4 " SRCROW2="40 " SRCCOLUMN2="22 " TYPESRC_LENG="139 " TYPESRC='BEGIN OF t_range,
|
||||
name TYPE string,
|
||||
localsheetid TYPE string, " issue #163
|
||||
END OF t_range
|
||||
'/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_FILLS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="7 " TYPTYPE="4" SRCROW1="42 " SRCCOLUMN1="4 " SRCROW2="42 " SRCCOLUMN2="91 " TYPESRC_LENG="90 " TYPESRC="t_fills TYPE STANDARD TABLE OF REF TO zcl_excel_style_fill WITH NON-UNIQUE DEFAULT KEY
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_FILLS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="7 " TYPTYPE="4" SRCROW1="42 " SRCCOLUMN1="4 " SRCROW2="42 " SRCCOLUMN2="91 " TYPESRC_LENG="89 " TYPESRC="t_fills TYPE STANDARD TABLE OF REF TO zcl_excel_style_fill WITH NON-UNIQUE DEFAULT KEY
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_BORDERS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="8 " TYPTYPE="4" SRCROW1="44 " SRCCOLUMN1="4 " SRCROW2="44 " SRCCOLUMN2="94 " TYPESRC_LENG="93 " TYPESRC="t_borders TYPE STANDARD TABLE OF REF TO zcl_excel_style_borders WITH NON-UNIQUE DEFAULT KEY
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_BORDERS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="8 " TYPTYPE="4" SRCROW1="44 " SRCCOLUMN1="4 " SRCROW2="44 " SRCCOLUMN2="94 " TYPESRC_LENG="92 " TYPESRC="t_borders TYPE STANDARD TABLE OF REF TO zcl_excel_style_borders WITH NON-UNIQUE DEFAULT KEY
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_FONTS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="9 " TYPTYPE="4" SRCROW1="46 " SRCCOLUMN1="4 " SRCROW2="46 " SRCCOLUMN2="91 " TYPESRC_LENG="90 " TYPESRC="t_fonts TYPE STANDARD TABLE OF REF TO zcl_excel_style_font WITH NON-UNIQUE DEFAULT KEY
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_FONTS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="9 " TYPTYPE="4" SRCROW1="46 " SRCCOLUMN1="4 " SRCROW2="46 " SRCCOLUMN2="91 " TYPESRC_LENG="89 " TYPESRC="t_fonts TYPE STANDARD TABLE OF REF TO zcl_excel_style_font WITH NON-UNIQUE DEFAULT KEY
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_STYLE_REFS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="10 " TYPTYPE="4" SRCROW1="48 " SRCCOLUMN1="4 " SRCROW2="48 " SRCCOLUMN2="89 " TYPESRC_LENG="88 " TYPESRC="t_style_refs TYPE STANDARD TABLE OF REF TO zcl_excel_style WITH NON-UNIQUE DEFAULT KEY
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_STYLE_REFS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="10 " TYPTYPE="4" SRCROW1="48 " SRCCOLUMN1="4 " SRCROW2="48 " SRCCOLUMN2="89 " TYPESRC_LENG="87 " TYPESRC="t_style_refs TYPE STANDARD TABLE OF REF TO zcl_excel_style WITH NON-UNIQUE DEFAULT KEY
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_NUM_FORMAT" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="11 " TYPTYPE="4" SRCROW1="50 " SRCCOLUMN1="4 " SRCROW2="53 " SRCCOLUMN2="20 " TYPESRC_LENG="123 " TYPESRC="BEGIN OF t_num_format,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_NUM_FORMAT" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="11 " TYPTYPE="4" SRCROW1="50 " SRCCOLUMN1="4 " SRCROW2="53 " SRCCOLUMN2="20 " TYPESRC_LENG="119 " TYPESRC="BEGIN OF t_num_format,
|
||||
id TYPE string,
|
||||
format TYPE REF TO zcl_excel_style_number_format,
|
||||
END OF t_num_format
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_NUM_FORMATS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="12 " TYPTYPE="4" SRCROW1="55 " SRCCOLUMN1="4 " SRCROW2="55 " SRCCOLUMN2="69 " TYPESRC_LENG="68 " TYPESRC="t_num_formats TYPE HASHED TABLE OF t_num_format WITH UNIQUE KEY id
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_NUM_FORMATS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="12 " TYPTYPE="4" SRCROW1="55 " SRCCOLUMN1="4 " SRCROW2="55 " SRCCOLUMN2="69 " TYPESRC_LENG="67 " TYPESRC="t_num_formats TYPE HASHED TABLE OF t_num_format WITH UNIQUE KEY id
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_COLOR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="13 " TYPTYPE="4" SRCROW1="57 " SRCCOLUMN1="4 " SRCROW2="62 " SRCCOLUMN2="15 " TYPESRC_LENG="132 " TYPESRC="BEGIN OF t_color,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_COLOR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="13 " TYPTYPE="4" SRCROW1="57 " SRCCOLUMN1="4 " SRCROW2="62 " SRCCOLUMN2="15 " TYPESRC_LENG="126 " TYPESRC="BEGIN OF t_color,
|
||||
indexed TYPE string,
|
||||
rgb TYPE string,
|
||||
theme TYPE string,
|
||||
tint TYPE string,
|
||||
END OF t_color
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_REL_DRAWING" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="14 " TYPTYPE="4" SRCROW1="64 " SRCCOLUMN1="4 " SRCROW2="68 " SRCCOLUMN2="23 " TYPESRC_LENG="132 " TYPESRC="BEGIN OF t_rel_drawing,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_REL_DRAWING" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="14 " TYPTYPE="4" SRCROW1="64 " SRCCOLUMN1="4 " SRCROW2="68 " SRCCOLUMN2="23 " TYPESRC_LENG="127 " TYPESRC="BEGIN OF t_rel_drawing,
|
||||
id TYPE string,
|
||||
content TYPE xstring,
|
||||
file_ext TYPE string,
|
||||
END OF t_rel_drawing
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_REL_DRAWINGS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="15 " TYPTYPE="4" SRCROW1="70 " SRCCOLUMN1="4 " SRCROW2="70 " SRCCOLUMN2="82 " TYPESRC_LENG="81 " TYPESRC="t_rel_drawings TYPE STANDARD TABLE OF t_rel_drawing WITH NON-UNIQUE DEFAULT KEY
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_REL_DRAWINGS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="15 " TYPTYPE="4" SRCROW1="70 " SRCCOLUMN1="4 " SRCROW2="70 " SRCCOLUMN2="82 " TYPESRC_LENG="80 " TYPESRC="t_rel_drawings TYPE STANDARD TABLE OF t_rel_drawing WITH NON-UNIQUE DEFAULT KEY
|
||||
"/>
|
||||
<implementing CLSNAME="ZCL_EXCEL_READER_2007" REFCLSNAME="ZIF_EXCEL_READER" VERSION="1" EXPOSURE="2" STATE="1" RELTYPE="1"/>
|
||||
<publicSection>class ZCL_EXCEL_READER_2007 definition
|
||||
|
@ -233,7 +233,7 @@ private section.
|
|||
|
||||
data EXCEL2007 type XSTRING .
|
||||
data ZIP type ref to CL_ABAP_ZIP .
|
||||
data ALTERNATE_ZIP type ref to ZCL_EXCEL_ABAP_ZIP .
|
||||
data ALTERNATE_ZIP type ref to OBJECT .
|
||||
data SHARED_STRINGS type STRINGTAB .
|
||||
data STYLES type T_STYLE_REFS .</privateSection>
|
||||
<localImplementation>*"* local class implementation for public class
|
||||
|
@ -258,13 +258,13 @@ private section.
|
|||
</textPool>
|
||||
<typeUsage CLSNAME="ZCL_EXCEL_READER_2007" TYPEGROUP="IXML" VERSION="1" TPUTYPE="0" EXPLICIT="X"/>
|
||||
<forwardDeclaration>IXML</forwardDeclaration>
|
||||
<attribute CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="ALTERNATE_ZIP" VERSION="1" LANGU="E" DESCRIPT="Alternate Zip Utility" EXPOSURE="0" STATE="1" EDITORDER="3 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL_ABAP_ZIP" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="ALTERNATE_ZIP" VERSION="1" LANGU="E" DESCRIPT="Alternate Zip Utility" EXPOSURE="0" STATE="1" EDITORDER="3 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="OBJECT" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="EXCEL2007" VERSION="1" LANGU="E" DESCRIPT="Excel 2007 data" EXPOSURE="0" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="XSTRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="SHARED_STRINGS" VERSION="1" LANGU="E" DESCRIPT="Table with Strings" EXPOSURE="0" STATE="1" EDITORDER="4 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRINGTAB" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="STYLES" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="5 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="T_STYLE_REFS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="ZIP" VERSION="1" LANGU="E" DESCRIPT="Zip Utility" EXPOSURE="0" STATE="1" EDITORDER="2 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_ABAP_ZIP" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<interfaceMethod CLSNAME="ZCL_EXCEL_READER_2007" CPDNAME="ZIF_EXCEL_READER~CAN_READ_FILE">
|
||||
<source>METHOD zif_excel_reader~can_read_file.
|
||||
<source>method ZIF_EXCEL_READER~CAN_READ_FILE.
|
||||
*--------------------------------------------------------------------*
|
||||
* issue #230 - Pimp my Code
|
||||
* - Stefan Schmöcker, (done) 2012-11-07
|
||||
|
@ -274,10 +274,10 @@ private section.
|
|||
*--------------------------------------------------------------------*
|
||||
* For now always Unknown
|
||||
r_readable = abap_undefined.
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</interfaceMethod>
|
||||
<interfaceMethod CLSNAME="ZCL_EXCEL_READER_2007" CPDNAME="ZIF_EXCEL_READER~LOAD">
|
||||
<source>METHOD zif_excel_reader~load.
|
||||
<source>method ZIF_EXCEL_READER~LOAD.
|
||||
*--------------------------------------------------------------------*
|
||||
* ToDos:
|
||||
* 2do§1 Map Document Properties to ZCL_EXCEL
|
||||
|
@ -377,10 +377,10 @@ ENDMETHOD.</source>
|
|||
ENDWHILE.
|
||||
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</interfaceMethod>
|
||||
<interfaceMethod CLSNAME="ZCL_EXCEL_READER_2007" CPDNAME="ZIF_EXCEL_READER~LOAD_FILE">
|
||||
<source>METHOD zif_excel_reader~load_file.
|
||||
<source>method ZIF_EXCEL_READER~LOAD_FILE.
|
||||
*--------------------------------------------------------------------*
|
||||
* ToDos:
|
||||
* 2do§1 decision whether to load from frontend or backend
|
||||
|
@ -528,12 +528,12 @@ ENDMETHOD.</source>
|
|||
*--------------------------------------------------------------------*
|
||||
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</interfaceMethod>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="FILL_STRUCT_FROM_ATTRIBUTES" VERSION="1" LANGU="E" DESCRIPT="Fills structure fields based on XML node attributes" EXPOSURE="1" STATE="1" EDITORDER="2 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="FILL_STRUCT_FROM_ATTRIBUTES" SCONAME="IP_ELEMENT" VERSION="1" LANGU="E" DESCRIPT="IF_IXML_ELEMENT" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_IXML_ELEMENT"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="FILL_STRUCT_FROM_ATTRIBUTES" SCONAME="CP_STRUCTURE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="1" TYPE="ANY"/>
|
||||
<source>METHOD fill_struct_from_attributes.
|
||||
<source>method FILL_STRUCT_FROM_ATTRIBUTES.
|
||||
*--------------------------------------------------------------------*
|
||||
* issue #230 - Pimp my Code
|
||||
* - Stefan Schmöcker, (done) 2012-11-07
|
||||
|
@ -579,7 +579,7 @@ ENDMETHOD.</source>
|
|||
ENDWHILE.
|
||||
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="GET_FROM_ZIP_ARCHIVE" VERSION="1" LANGU="E" DESCRIPT="Read file from ZIP Archive" EXPOSURE="1" STATE="1" EDITORDER="3 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="GET_FROM_ZIP_ARCHIVE" SCONAME="I_FILENAME" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
|
||||
|
@ -652,12 +652,21 @@ ENDMETHOD.</source>
|
|||
* May become obsolete if SAP fixes standard CL_ABAP_ZIP
|
||||
*--------------------------------------------------------------------*
|
||||
IF me->alternate_zip IS NOT BOUND.
|
||||
CREATE OBJECT me->alternate_zip.
|
||||
alternate_zip->load( EXPORTING
|
||||
CREATE OBJECT me->alternate_zip TYPE (zif_excel_reader~gv_use_alternate_zip).
|
||||
TRY.
|
||||
CALL METHOD me->alternate_zip->('LOAD')
|
||||
EXPORTING
|
||||
zip = me->excel2007
|
||||
EXCEPTIONS
|
||||
zip_parse_error = 1
|
||||
OTHERS = 2 ).
|
||||
OTHERS = 2.
|
||||
CATCH cx_sy_dyn_call_illegal_method.
|
||||
lv_errormessage = 'Method LOAD missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed
|
||||
RAISE EXCEPTION TYPE zcx_excel
|
||||
EXPORTING
|
||||
error = lv_errormessage.
|
||||
ENDTRY.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
lv_errormessage = 'ZIP parse error'(002).
|
||||
RAISE EXCEPTION TYPE zcx_excel
|
||||
|
@ -669,14 +678,22 @@ ENDMETHOD.</source>
|
|||
*--------------------------------------------------------------------*
|
||||
* Extract requested filename from archive if possible
|
||||
*--------------------------------------------------------------------*
|
||||
alternate_zip->get( EXPORTING
|
||||
TRY.
|
||||
CALL METHOD me->alternate_zip->('GET')
|
||||
EXPORTING
|
||||
name = i_filename
|
||||
IMPORTING
|
||||
content = r_content " Contents
|
||||
EXCEPTIONS
|
||||
zip_index_error = 1
|
||||
zip_decompression_error = 2
|
||||
OTHERS = 3 ).
|
||||
OTHERS = 3.
|
||||
CATCH cx_sy_dyn_call_illegal_method.
|
||||
lv_errormessage = 'Method GET missing in alternative zipclass'. "#EC NOTEXT This is a workaround until class CL_ABAP_ZIP is fixed
|
||||
RAISE EXCEPTION TYPE zcx_excel
|
||||
EXPORTING
|
||||
error = lv_errormessage.
|
||||
ENDTRY.
|
||||
IF sy-subrc <> 0.
|
||||
lv_errormessage = 'File not found in zip-archive'(003).
|
||||
RAISE EXCEPTION TYPE zcx_excel
|
||||
|
@ -695,7 +712,7 @@ ENDMETHOD.</source>
|
|||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="GET_IXML_FROM_ZIP_ARCHIVE" SCONAME="IS_NORMALIZING" VERSION="1" LANGU="E" DESCRIPT="Boolean Variable (X=True, -=False, Space=Unknown)" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="BOOLEAN" PARVALUE="'X'" PAROPTIONL="X"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="GET_IXML_FROM_ZIP_ARCHIVE" SCONAME="R_IXML" VERSION="1" LANGU="E" DESCRIPT="IF_IXML_DOCUMENT" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="IF_IXML_DOCUMENT"/>
|
||||
<exception CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="GET_IXML_FROM_ZIP_ARCHIVE" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
|
||||
<source>METHOD get_ixml_from_zip_archive.
|
||||
<source>method GET_IXML_FROM_ZIP_ARCHIVE.
|
||||
*--------------------------------------------------------------------*
|
||||
* ToDos:
|
||||
* 2do§1 Add comment what is being achieved here
|
||||
|
@ -734,13 +751,13 @@ ENDMETHOD.</source>
|
|||
lo_parser->set_validating( mode = if_ixml_parser=>co_no_validation ).
|
||||
lo_parser->parse( ).
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_DRAWING_ANCHOR" VERSION="1" LANGU="E" DESCRIPT="Loads worksheet" EXPOSURE="1" STATE="1" EDITORDER="6 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_DRAWING_ANCHOR" SCONAME="IO_ANCHOR_ELEMENT" VERSION="1" LANGU="E" DESCRIPT="IF_IXML_ELEMENT" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_IXML_ELEMENT"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_DRAWING_ANCHOR" SCONAME="IO_WORKSHEET" VERSION="1" LANGU="E" DESCRIPT="Excel creator" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_DRAWING_ANCHOR" SCONAME="IT_RELATED_DRAWINGS" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="T_REL_DRAWINGS"/>
|
||||
<source>METHOD load_drawing_anchor.
|
||||
<source>method LOAD_DRAWING_ANCHOR.
|
||||
|
||||
TYPES: BEGIN OF t_c_nv_pr,
|
||||
name TYPE string,
|
||||
|
@ -881,12 +898,12 @@ ENDMETHOD.</source>
|
|||
ip_width = ls_size-width
|
||||
ip_height = ls_size-height ).
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_SHARED_STRINGS" VERSION="1" LANGU="E" DESCRIPT="Loads shared strings table" EXPOSURE="1" STATE="1" EDITORDER="9 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_SHARED_STRINGS" SCONAME="IP_PATH" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
|
||||
<exception CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_SHARED_STRINGS" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
|
||||
<source>METHOD load_shared_strings.
|
||||
<source>method LOAD_SHARED_STRINGS.
|
||||
*--------------------------------------------------------------------*
|
||||
* ToDos:
|
||||
* 2do§1 Support partial formatting of strings in cells
|
||||
|
@ -1000,13 +1017,13 @@ ENDMETHOD.</source>
|
|||
lo_node_si ?= lo_node_si->get_next( ).
|
||||
ENDWHILE.
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLES" VERSION="1" LANGU="E" DESCRIPT="Loads styles" EXPOSURE="1" STATE="1" EDITORDER="10 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLES" SCONAME="IP_PATH" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLES" SCONAME="IP_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Excel creator" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL"/>
|
||||
<exception CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLES" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
|
||||
<source>METHOD load_styles.
|
||||
<source>method LOAD_STYLES.
|
||||
|
||||
*--------------------------------------------------------------------*
|
||||
* issue #230 - Pimp my Code
|
||||
|
@ -1184,12 +1201,12 @@ ENDMETHOD.</source>
|
|||
ENDWHILE.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLE_BORDERS" VERSION="1" LANGU="E" DESCRIPT="Loads 'borders' part of styles" EXPOSURE="1" STATE="1" EDITORDER="11 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLE_BORDERS" SCONAME="IP_XML" VERSION="1" LANGU="E" DESCRIPT="IF_IXML_DOCUMENT" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_IXML_DOCUMENT"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLE_BORDERS" SCONAME="EP_BORDERS" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="T_BORDERS"/>
|
||||
<source>METHOD load_style_borders.
|
||||
<source>method LOAD_STYLE_BORDERS.
|
||||
|
||||
*--------------------------------------------------------------------*
|
||||
* issue #230 - Pimp my Code
|
||||
|
@ -1275,12 +1292,12 @@ ENDMETHOD.</source>
|
|||
ENDWHILE.
|
||||
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLE_FILLS" VERSION="1" LANGU="E" DESCRIPT="Loads 'fills' part of styles" EXPOSURE="1" STATE="1" EDITORDER="12 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLE_FILLS" SCONAME="IP_XML" VERSION="1" LANGU="E" DESCRIPT="IF_IXML_DOCUMENT" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_IXML_DOCUMENT"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLE_FILLS" SCONAME="EP_FILLS" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="T_FILLS"/>
|
||||
<source>METHOD load_style_fills.
|
||||
<source>method LOAD_STYLE_FILLS.
|
||||
*--------------------------------------------------------------------*
|
||||
* ToDos:
|
||||
* 2do§1 Support gradientFill
|
||||
|
@ -1360,12 +1377,12 @@ ENDMETHOD.</source>
|
|||
ENDWHILE.
|
||||
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLE_FONTS" VERSION="1" LANGU="E" DESCRIPT="Loads 'fonts' part of styles" EXPOSURE="1" STATE="1" EDITORDER="13 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLE_FONTS" SCONAME="IP_XML" VERSION="1" LANGU="E" DESCRIPT="IF_IXML_DOCUMENT" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_IXML_DOCUMENT"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLE_FONTS" SCONAME="EP_FONTS" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="T_FONTS"/>
|
||||
<source>METHOD load_style_fonts.
|
||||
<source>method LOAD_STYLE_FONTS.
|
||||
|
||||
*--------------------------------------------------------------------*
|
||||
* issue #230 - Pimp my Code
|
||||
|
@ -1447,12 +1464,12 @@ ENDMETHOD.</source>
|
|||
ENDWHILE.
|
||||
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLE_NUM_FORMATS" VERSION="1" LANGU="E" DESCRIPT="Loads 'number format' part of styles" EXPOSURE="1" STATE="1" EDITORDER="14 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLE_NUM_FORMATS" SCONAME="IP_XML" VERSION="1" LANGU="E" DESCRIPT="IF_IXML_DOCUMENT" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_IXML_DOCUMENT"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_STYLE_NUM_FORMATS" SCONAME="EP_NUM_FORMATS" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="T_NUM_FORMATS"/>
|
||||
<source>METHOD load_style_num_formats.
|
||||
<source>method LOAD_STYLE_NUM_FORMATS.
|
||||
*--------------------------------------------------------------------*
|
||||
* ToDos:
|
||||
* 2do§1 Explain gaps in predefined formats
|
||||
|
@ -1541,13 +1558,13 @@ ENDMETHOD.</source>
|
|||
* 2do§1 Is 49 really the last redefined format?
|
||||
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKBOOK" VERSION="1" LANGU="E" DESCRIPT="Loads workbook" EXPOSURE="1" STATE="1" EDITORDER="5 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKBOOK" SCONAME="IV_WORKBOOK_FULL_FILENAME" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKBOOK" SCONAME="IO_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Excel creator" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL"/>
|
||||
<exception CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKBOOK" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
|
||||
<source>METHOD load_workbook.
|
||||
<source>method LOAD_WORKBOOK.
|
||||
*--------------------------------------------------------------------*
|
||||
* ToDos:
|
||||
* 2do§1 Move macro-reading from zcl_excel_reader_xlsm to this class
|
||||
|
@ -1833,13 +1850,13 @@ ENDMETHOD.</source>
|
|||
|
||||
ENDWHILE.
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET" VERSION="1" LANGU="E" DESCRIPT="Loads worksheet" EXPOSURE="1" STATE="1" EDITORDER="7 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET" SCONAME="IP_PATH" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET" SCONAME="IO_WORKSHEET" VERSION="1" LANGU="E" DESCRIPT="Excel creator" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET"/>
|
||||
<exception CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
|
||||
<source>METHOD load_worksheet.
|
||||
<source>method LOAD_WORKSHEET.
|
||||
TYPES: BEGIN OF t_cell,
|
||||
r TYPE string,
|
||||
t TYPE string,
|
||||
|
@ -2359,13 +2376,13 @@ ENDMETHOD.</source>
|
|||
ENDIF.
|
||||
" End fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET_DRAWING" VERSION="1" LANGU="E" DESCRIPT="Loads worksheet drawings" EXPOSURE="1" STATE="1" EDITORDER="8 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET_DRAWING" SCONAME="IP_PATH" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET_DRAWING" SCONAME="IO_WORKSHEET" VERSION="1" LANGU="E" DESCRIPT="Excel creator" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET"/>
|
||||
<exception CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET_DRAWING" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
|
||||
<source>METHOD load_worksheet_drawing.
|
||||
<source>method LOAD_WORKSHEET_DRAWING.
|
||||
|
||||
TYPES: BEGIN OF t_c_nv_pr,
|
||||
name TYPE string,
|
||||
|
@ -2472,12 +2489,12 @@ ENDMETHOD.</source>
|
|||
|
||||
ENDDO.
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="RESOLVE_PATH" VERSION="1" LANGU="E" DESCRIPT="Return path after ../ values are removed" EXPOSURE="1" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="RESOLVE_PATH" SCONAME="IP_PATH" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="RESOLVE_PATH" SCONAME="RP_RESULT" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/>
|
||||
<source>METHOD resolve_path.
|
||||
<source>method RESOLVE_PATH.
|
||||
*--------------------------------------------------------------------*
|
||||
* ToDos:
|
||||
* 2do§1 Determine whether the replacement should be done
|
||||
|
@ -2515,6 +2532,6 @@ ENDMETHOD.</source>
|
|||
REPLACE REGEX '[^/]*/\.\./' IN rp_result WITH ``.
|
||||
|
||||
|
||||
ENDMETHOD.</source>
|
||||
endmethod.</source>
|
||||
</method>
|
||||
</CLAS>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<CLAS CLSNAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" UUID="DFA646E0B030A0F1B39A000C29B7D360" CATEGORY="40" EXPOSURE="2" STATE="1" RELEASE="0" AUTHOR="BCUSER" CREATEDON="20100812" CHANGEDON="00000000" CHGDANYON="00000000" CLSFINAL="X" CLSCCINCL="X" FIXPT="X" UNICODE="X" R3RELEASE="702" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 " REFCLSNAME="CX_STATIC_CHECK">
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<CLAS CLSNAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" UUID="DFA646E0B030A0F1B39A000C29B7D360" CATEGORY="40" EXPOSURE="2" STATE="1" RELEASE="0" CLSFINAL="X" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 " REFCLSNAME="CX_STATIC_CHECK">
|
||||
<publicSection>class ZCX_EXCEL definition
|
||||
public
|
||||
inheriting from CX_STATIC_CHECK
|
||||
|
@ -10,14 +10,17 @@
|
|||
*"* do not include other source files here!!!
|
||||
public section.
|
||||
|
||||
constants ZCX_EXCEL type SOTR_CONC value 'DFA64849FDF4F6F1B39A000C29B7D360'. "#EC NOTEXT
|
||||
constants ZCX_EXCEL type SOTR_CONC value 'E21BC660E7235AF1B7380050568C0F65'. "#EC NOTEXT
|
||||
data ERROR type STRING .
|
||||
|
||||
methods CONSTRUCTOR
|
||||
importing
|
||||
!TEXTID like TEXTID optional
|
||||
!PREVIOUS like PREVIOUS optional
|
||||
!ERROR type STRING optional .</publicSection>
|
||||
!ERROR type STRING optional .
|
||||
|
||||
methods IF_MESSAGE~GET_TEXT
|
||||
redefinition .</publicSection>
|
||||
<protectedSection>*"* protected components of class ZCX_EXCEL
|
||||
*"* do not include other source files here!!!
|
||||
protected section.</protectedSection>
|
||||
|
@ -32,18 +35,30 @@ private section.</privateSection>
|
|||
*"* implementation or private method's signature</localTypes>
|
||||
<localMacros>*"* use this source file for any macro definitions you need
|
||||
*"* in the implementation part of the class</localMacros>
|
||||
<textPool/>
|
||||
<attribute CLSNAME="ZCX_EXCEL" CMPNAME="ERROR" VERSION="1" LANGU="E" EXPOSURE="2" STATE="1" EDITORDER="2 " AUTHOR="BCUSER" CREATEDON="20100812" CHANGEDBY="BCUSER" CHANGEDON="20100812" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCX_EXCEL" CMPNAME="ZCX_EXCEL" VERSION="1" LANGU="E" EXPOSURE="2" STATE="1" EDITORDER="1 " AUTHOR="BCUSER" CREATEDON="20100812" CHANGEDBY="BCUSER" CHANGEDON="20100812" ATTDECLTYP="2" ATTVALUE="'DFA64849FDF4F6F1B39A000C29B7D360'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SOTR_CONC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " LOCKED="X" TYPESRC_LENG="0 ">
|
||||
<sotr PAKET="$TMP" CREA_LAN="E" TRALA_TYPE="1" CREA_NAME="BCUSER" CREA_TSTUT="20100812193211" CHAN_NAME="BCUSER" CHAN_TSTUT="20100812193211" LST_IMPORT="00000000" TRALA_VEC="00000000000000000000" CATGY_VEC="00000000000000000000" OBJID_VEC="08000000000000000000">
|
||||
<sotrText LANGU="E" LFD_NUM="0001" FLAG_CNTXT="X" CREA_NAME="BCUSER" CREA_TSTUT="20100812193211" CHAN_NAME="BCUSER" CHAN_TSTUT="20100812193211" STATUS="R" VERSION="0002" LENGTH="255" TEXT="&ERROR&"/>
|
||||
<attribute CLSNAME="ZCX_EXCEL" CMPNAME="ERROR" VERSION="1" LANGU="E" EXPOSURE="2" STATE="1" EDITORDER="2 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCX_EXCEL" CMPNAME="ZCX_EXCEL" VERSION="1" LANGU="E" EXPOSURE="2" STATE="1" EDITORDER="1 " ATTDECLTYP="2" ATTVALUE="'E21BC660E7235AF1B7380050568C0F65'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SOTR_CONC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " LOCKED="X" TYPESRC_LENG="0 ">
|
||||
<sotr PAKET="$TMP" CREA_LAN="E" TRALA_TYPE="1" LST_IMPORT="00000000" TRALA_VEC="00000000000000000000" CATGY_VEC="00000000000000000000" OBJID_VEC="08000000000000000000">
|
||||
<sotrText LANGU="E" LFD_NUM="0001" FLAG_CNTXT="X" STATUS="R" VERSION="0002" LENGTH="255" TEXT="&ERROR&"/>
|
||||
</sotr>
|
||||
</attribute>
|
||||
<inheritance CLSNAME="ZCX_EXCEL" REFCLSNAME="CX_STATIC_CHECK" VERSION="1" STATE="1" AUTHOR="BCUSER" CREATEDON="20100812" CHANGEDON="00000000"/>
|
||||
<method CLSNAME="ZCX_EXCEL" CMPNAME="CONSTRUCTOR" VERSION="1" LANGU="E" DESCRIPT="CONSTRUCTOR" EXPOSURE="2" STATE="1" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20100812" CHANGEDON="00000000" MTDTYPE="2" MTDDECLTYP="0" LOCKED="X" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCX_EXCEL" CMPNAME="CONSTRUCTOR" SCONAME="TEXTID" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="2" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20100812" CHANGEDBY="BCUSER" CHANGEDON="20100812" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="0" TYPE="TEXTID" PAROPTIONL="X"/>
|
||||
<parameter CLSNAME="ZCX_EXCEL" CMPNAME="CONSTRUCTOR" SCONAME="PREVIOUS" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="2" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20100812" CHANGEDBY="BCUSER" CHANGEDON="20100812" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="0" TYPE="PREVIOUS" PAROPTIONL="X"/>
|
||||
<parameter CLSNAME="ZCX_EXCEL" CMPNAME="CONSTRUCTOR" SCONAME="ERROR" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="2" EDITORDER="3 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20100812" CHANGEDON="00000000" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING" PAROPTIONL="X"/>
|
||||
<inheritance CLSNAME="ZCX_EXCEL" REFCLSNAME="CX_STATIC_CHECK" VERSION="1" STATE="1">
|
||||
<redefinition CLSNAME="ZCX_EXCEL" REFCLSNAME="CX_STATIC_CHECK" VERSION="1" MTDNAME="IF_MESSAGE~GET_TEXT"/>
|
||||
</inheritance>
|
||||
<interfaceMethod CLSNAME="ZCX_EXCEL" CPDNAME="IF_MESSAGE~GET_TEXT">
|
||||
<source>METHOD if_message~get_text.
|
||||
IF me->ERROR IS NOT INITIAL.
|
||||
result = me->ERROR .
|
||||
ELSE.
|
||||
CALL METHOD super->if_message~get_text
|
||||
RECEIVING
|
||||
result = result.
|
||||
ENDIF.
|
||||
ENDMETHOD.</source>
|
||||
</interfaceMethod>
|
||||
<method CLSNAME="ZCX_EXCEL" CMPNAME="CONSTRUCTOR" VERSION="1" LANGU="E" DESCRIPT="CONSTRUCTOR" EXPOSURE="2" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="2" MTDDECLTYP="0" LOCKED="X" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCX_EXCEL" CMPNAME="CONSTRUCTOR" SCONAME="TEXTID" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="2" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="0" TYPE="TEXTID" PAROPTIONL="X"/>
|
||||
<parameter CLSNAME="ZCX_EXCEL" CMPNAME="CONSTRUCTOR" SCONAME="PREVIOUS" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="2" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="0" TYPE="PREVIOUS" PAROPTIONL="X"/>
|
||||
<parameter CLSNAME="ZCX_EXCEL" CMPNAME="CONSTRUCTOR" SCONAME="ERROR" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="2" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING" PAROPTIONL="X"/>
|
||||
<source>method CONSTRUCTOR.
|
||||
CALL METHOD SUPER->CONSTRUCTOR
|
||||
EXPORTING
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<INTF CLSNAME="ZIF_EXCEL_READER" VERSION="1" LANGU="E" DESCRIPT="Reader Interface" UUID="E21BC668FB3740F1B7380050568C0F65" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" UNICODE="X">
|
||||
<attribute CLSNAME="ZIF_EXCEL_READER" CMPNAME="GV_USE_ALTERNATE_ZIP" VERSION="1" LANGU="E" DESCRIPT="Use alternate CL_ABAP_ZIP" EXPOSURE="2" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTRDONLY="X" ATTEXPVIRT="0" TYPTYPE="1" TYPE="FLAG" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZIF_EXCEL_READER" CMPNAME="GV_USE_ALTERNATE_ZIP" VERSION="1" LANGU="E" DESCRIPT="Use alternate CL_ABAP_ZIP" EXPOSURE="2" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTRDONLY="X" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SEOCLSNAME" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<method CLSNAME="ZIF_EXCEL_READER" CMPNAME="CAN_READ_FILE" VERSION="1" LANGU="E" DESCRIPT="Can the current ZIF_EXCEL_READER read the file?" EXPOSURE="2" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZIF_EXCEL_READER" CMPNAME="CAN_READ_FILE" SCONAME="I_FILENAME" VERSION="1" LANGU="E" DESCRIPT="Filename" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
|
||||
<parameter CLSNAME="ZIF_EXCEL_READER" CMPNAME="CAN_READ_FILE" SCONAME="R_READABLE" VERSION="1" LANGU="E" DESCRIPT="Boolean Variable (X=True, -=False, Space=Unknown)" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="BOOLEAN"/>
|
||||
</method>
|
||||
<method CLSNAME="ZIF_EXCEL_READER" CMPNAME="LOAD" VERSION="1" LANGU="E" DESCRIPT="Loads ZCL_EXCEL from provided xstring" EXPOSURE="2" STATE="1" EDITORDER="3 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZIF_EXCEL_READER" CMPNAME="LOAD" SCONAME="I_EXCEL2007" VERSION="1" LANGU="E" DESCRIPT="Excel 2007 data" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="XSTRING"/>
|
||||
<parameter CLSNAME="ZIF_EXCEL_READER" CMPNAME="LOAD" SCONAME="IV_USE_ALTERNATE_ZIP" VERSION="1" LANGU="E" DESCRIPT="Use modified CL_ABAP_ZIP to read libre-office files" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PARVALUE="SPACE"/>
|
||||
<parameter CLSNAME="ZIF_EXCEL_READER" CMPNAME="LOAD" SCONAME="IV_USE_ALTERNATE_ZIP" VERSION="1" LANGU="E" DESCRIPT="Use modified CL_ABAP_ZIP to read libre-office files" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SEOCLSNAME" PARVALUE="SPACE"/>
|
||||
<parameter CLSNAME="ZIF_EXCEL_READER" CMPNAME="LOAD" SCONAME="R_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Excel creator" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL"/>
|
||||
<exception CLSNAME="ZIF_EXCEL_READER" CMPNAME="LOAD" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
|
||||
</method>
|
||||
<method CLSNAME="ZIF_EXCEL_READER" CMPNAME="LOAD_FILE" VERSION="1" LANGU="E" DESCRIPT="Loads ZCL_EXCEL from file" EXPOSURE="2" STATE="1" EDITORDER="2 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZIF_EXCEL_READER" CMPNAME="LOAD_FILE" SCONAME="I_FILENAME" VERSION="1" LANGU="E" DESCRIPT="Filename" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
|
||||
<parameter CLSNAME="ZIF_EXCEL_READER" CMPNAME="LOAD_FILE" SCONAME="IV_USE_ALTERNATE_ZIP" VERSION="1" LANGU="E" DESCRIPT="Use modified CL_ABAP_ZIP to read libre-office files" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PARVALUE="SPACE"/>
|
||||
<parameter CLSNAME="ZIF_EXCEL_READER" CMPNAME="LOAD_FILE" SCONAME="IV_USE_ALTERNATE_ZIP" VERSION="1" LANGU="E" DESCRIPT="Use modified CL_ABAP_ZIP to read libre-office files" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SEOCLSNAME" PARVALUE="SPACE"/>
|
||||
<parameter CLSNAME="ZIF_EXCEL_READER" CMPNAME="LOAD_FILE" SCONAME="R_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Excel creator" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL"/>
|
||||
<exception CLSNAME="ZIF_EXCEL_READER" CMPNAME="LOAD_FILE" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
|
||||
</method>
|
||||
|
|
|
@ -13,7 +13,9 @@
|
|||
<source>REPORT zdemo_excel37.
|
||||
|
||||
DATA: excel TYPE REF TO zcl_excel,
|
||||
reader TYPE REF TO zif_excel_reader.
|
||||
reader TYPE REF TO zif_excel_reader,
|
||||
go_error TYPE REF TO cx_root,
|
||||
gv_message type string.
|
||||
|
||||
|
||||
CONSTANTS: gc_save_file_name TYPE string VALUE '37-passthrough.xlsx'.
|
||||
|
@ -34,10 +36,21 @@ START-OF-SELECTION.
|
|||
CREATE OBJECT reader TYPE zcl_excel_reader_2007.
|
||||
* CREATE OBJECT reader TYPE zcl_excel_reader_xlsm.
|
||||
excel = reader->load_file( p_upfile ).
|
||||
*--------------------------------------------------------------------*
|
||||
* CL_ABAP_ZIP may have problems reading LibreOffice generated files
|
||||
* You may have to use alternate ZIP-Class - see comments in issue #234 in abap2xlsx at developers network
|
||||
* excel = reader->load_file( i_filename = p_upfile
|
||||
* iv_use_alternate_zip = 'ZCL_EXCEL_ABAP_ZIP' ).
|
||||
*--------------------------------------------------------------------*
|
||||
|
||||
*** Create output
|
||||
lcl_output=>output( excel ).
|
||||
CATCH cx_root.
|
||||
CATCH cx_root INTO go_error.
|
||||
MESSAGE 'Error reading excelfile' TYPE 'I'.
|
||||
gv_message = go_error->get_text( ).
|
||||
IF gv_message IS NOT INITIAL.
|
||||
MESSAGE gv_message TYPE 'I'.
|
||||
ENDIF.
|
||||
ENDTRY.
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user