abap2xlsx/ZA2X/PROG/ZDEMO_EXCEL38.slnk
2012-12-05 16:30:25 +00:00

116 lines
4.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<PROG NAME="ZDEMO_EXCEL38" VARCL="X" SUBC="1" RSTAT="T" RMAND="100" RLOAD="E" FIXPT="X" UCCHECK="X">
<textPool>
<language SPRAS="E">
<textElement ID="R" ENTRY="Read file and output" LENGTH="20 "/>
<textElement ID="S" KEY="S_ICON" ENTRY="D ." LENGTH="9 "/>
</language>
</textPool>
<source>REPORT.
DATA: lo_excel TYPE REF TO zcl_excel,
lo_worksheet TYPE REF TO zcl_excel_worksheet,
lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime,
lo_drawing TYPE REF TO zcl_excel_drawing.
TYPES: BEGIN OF gty_icon,
* name TYPE icon_name, &quot;Fix #228
name TYPE iconname, &quot;Fix #228
objid TYPE w3objid,
END OF gty_icon,
gtyt_icon TYPE STANDARD TABLE OF gty_icon WITH NON-UNIQUE DEFAULT KEY.
DATA: lt_icon TYPE gtyt_icon,
lv_row TYPE sytabix,
ls_wwwdatatab TYPE wwwdatatab,
lt_mimedata TYPE STANDARD TABLE OF w3mime WITH NON-UNIQUE DEFAULT KEY,
lv_xstring TYPE xstring.
FIELD-SYMBOLS: &lt;icon&gt; LIKE LINE OF lt_icon,
&lt;mimedata&gt; LIKE LINE OF lt_mimedata.
CONSTANTS: gc_save_file_name TYPE string VALUE &apos;38_SAP-Icons.xlsx&apos;.
INCLUDE zdemo_excel_outputopt_incl.
TABLES: icon.
SELECT-OPTIONS: s_icon FOR icon-name DEFAULT &apos;ICON_LED_*&apos; OPTION CP.
START-OF-SELECTION.
&quot; Creates active sheet
CREATE OBJECT lo_excel.
&quot; Get active sheet
lo_worksheet = lo_excel-&gt;get_active_worksheet( ).
lo_worksheet-&gt;set_title( ip_title = &apos;Demo Icons&apos; ).
lo_column_dimension = lo_worksheet-&gt;get_column_dimension( ip_column = &apos;A&apos; ).
lo_column_dimension-&gt;set_auto_size( &apos;X&apos; ).
lo_column_dimension = lo_worksheet-&gt;get_column_dimension( ip_column = &apos;B&apos; ).
lo_column_dimension-&gt;set_auto_size( &apos;X&apos; ).
* Get all icons
SELECT name
INTO TABLE lt_icon
FROM icon
WHERE name IN s_icon
ORDER BY name.
LOOP AT lt_icon ASSIGNING &lt;icon&gt;.
lv_row = sy-tabix.
*--------------------------------------------------------------------*
* Set name of icon
*--------------------------------------------------------------------*
lo_worksheet-&gt;set_cell( ip_row = lv_row
ip_column = &apos;A&apos;
ip_value = &lt;icon&gt;-name ).
*--------------------------------------------------------------------*
* Check whether the mime-repository holds some icondata for us
*--------------------------------------------------------------------*
* Get key
SELECT SINGLE objid
INTO &lt;icon&gt;-objid
FROM wwwdata
WHERE text = &lt;icon&gt;-name.
CHECK sy-subrc = 0. &quot; :o(
lo_worksheet-&gt;set_cell( ip_row = lv_row
ip_column = &apos;B&apos;
ip_value = &lt;icon&gt;-objid ).
* Load mimedata
CLEAR lt_mimedata.
CLEAR ls_wwwdatatab.
ls_wwwdatatab-relid = &apos;MI&apos; .
ls_wwwdatatab-objid = &lt;icon&gt;-objid.
CALL FUNCTION &apos;WWWDATA_IMPORT&apos;
EXPORTING
key = ls_wwwdatatab
TABLES
mime = lt_mimedata
EXCEPTIONS
wrong_object_type = 1
import_error = 2
OTHERS = 3.
CHECK sy-subrc = 0. &quot; :o(
lo_drawing = lo_excel-&gt;add_new_drawing( ).
lo_drawing-&gt;set_position( ip_from_row = lv_row
ip_from_col = &apos;C&apos; ).
CLEAR lv_xstring.
LOOP AT lt_mimedata ASSIGNING &lt;mimedata&gt;.
CONCATENATE lv_xstring &lt;mimedata&gt;-line INTO lv_xstring IN BYTE MODE.
ENDLOOP.
lo_drawing-&gt;set_media( ip_media = lv_xstring
ip_media_type = zcl_excel_drawing=&gt;c_media_type_jpg
ip_width = 16
ip_height = 14 ).
lo_worksheet-&gt;add_drawing( lo_drawing ).
ENDLOOP.
*** Create output
lcl_output=&gt;output( lo_excel ).</source>
</PROG>