abap2xlsx/ZA2X/PROG/ZDEMO_EXCEL37.slnk
2012-11-30 17:54:06 +00:00

102 lines
4.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<PROG NAME="ZDEMO_EXCEL37" VARCL="X" SUBC="1" RSTAT="T" RMAND="100" RLOAD="E" FIXPT="X" UCCHECK="X">
<textPool>
<language SPRAS="D">
<textElement ID="R" ENTRY="Xlsx-Datei lesen und dann wieder ausgeben" LENGTH="70 "/>
<textElement ID="S" KEY="P_UPFILE" ENTRY=" Hochzuladende Datei" LENGTH="27 "/>
</language>
<language SPRAS="E">
<textElement ID="R" ENTRY="Read xlsx-file and output" LENGTH="25 "/>
<textElement ID="S" KEY="P_UPFILE" ENTRY=" File to upload" LENGTH="22 "/>
</language>
</textPool>
<source>REPORT zdemo_excel37.
DATA: excel TYPE REF TO zcl_excel,
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 &apos;37-passthrough.xlsx&apos;.
SELECTION-SCREEN BEGIN OF BLOCK blx WITH FRAME.
PARAMETERS: p_upfile TYPE string DEFAULT &apos;c:\temp\whatever.xlsx&apos; LOWER CASE.
SELECTION-SCREEN END OF BLOCK blx.
INCLUDE zdemo_excel_outputopt_incl.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_upfile.
PERFORM f4_p_upfile CHANGING p_upfile.
START-OF-SELECTION.
TRY.
CREATE OBJECT reader TYPE zcl_excel_reader_2007.
* CREATE OBJECT reader TYPE zcl_excel_reader_xlsm.
excel = reader-&gt;load_file( p_upfile ).
&quot;Use template for charts
excel-&gt;use_template = abap_true.
*--------------------------------------------------------------------*
* 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-&gt;load_file( i_filename = p_upfile
* iv_use_alternate_zip = &apos;ZCL_EXCEL_ABAP_ZIP&apos; ).
*--------------------------------------------------------------------*
*** Create output
lcl_output=&gt;output( excel ).
CATCH cx_root INTO go_error.
MESSAGE &apos;Error reading excelfile&apos; TYPE &apos;I&apos;.
gv_message = go_error-&gt;get_text( ).
IF gv_message IS NOT INITIAL.
MESSAGE gv_message TYPE &apos;I&apos;.
ENDIF.
ENDTRY.
*&amp;---------------------------------------------------------------------*
*&amp; Form F4_P_UPFILE
*&amp;---------------------------------------------------------------------*
FORM f4_p_upfile CHANGING p_upfile TYPE string.
DATA: lv_repid TYPE syrepid,
lt_fields TYPE dynpread_tabtype,
ls_field LIKE LINE OF lt_fields,
lt_files TYPE filetable.
lv_repid = sy-repid.
CALL FUNCTION &apos;DYNP_VALUES_READ&apos;
EXPORTING
dyname = lv_repid
dynumb = &apos;1000&apos;
request = &apos;A&apos;
TABLES
dynpfields = lt_fields
EXCEPTIONS
invalid_abapworkarea = 01
invalid_dynprofield = 02
invalid_dynproname = 03
invalid_dynpronummer = 04
invalid_request = 05
no_fielddescription = 06
undefind_error = 07.
READ TABLE lt_fields INTO ls_field WITH KEY fieldname = &apos;P_UPFILE&apos;.
p_upfile = ls_field-fieldvalue.
cl_gui_frontend_services=&gt;file_open_dialog( EXPORTING
default_filename = p_upfile
file_filter = zcl_excel_common=&gt;c_xlsx_file_filter
CHANGING
file_table = lt_files
rc = sy-tabix
EXCEPTIONS
OTHERS = 1 ).
READ TABLE lt_files INDEX 1 INTO p_upfile.
ENDFORM. &quot; F4_P_UPFILE</source>
</PROG>