abap2xlsx/ZA2X/PROG/ZDEMO_EXCEL26.slnk
Ivan 24c5fca308 Update slinkees
Update of all the slinkees files with the latest version of SAPLink to
simplify merge of pull request
2015-01-12 14:55:28 -06:00

376 lines
20 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<PROG NAME="ZDEMO_EXCEL26" VARCL="X" SUBC="1" RSTAT="T" RMAND="001" RLOAD="E" FIXPT="X" UCCHECK="X">
<textPool>
<language SPRAS="E">
<textElement ID="R" ENTRY="abap2xlsx Demo: Test Excel Reader (Now in ZDEMO_EXCEL15)" LENGTH="56 "/>
<textElement ID="S" KEY="P_PATH" ENTRY="D ." LENGTH="24 "/>
<textElement ID="S" KEY="P_READER" ENTRY=" Write back after using Reader" LENGTH="37 "/>
</language>
</textPool>
<pfstatus>
<pfstatus_sta CODE="ALV_STATUS" MODAL="D" ACTCODE="000001" PFKCODE="000001" BUTCODE="0001" INT_NOTE="Standard for General List Output"/>
<pfstatus_fun CODE="%PC" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_EXPORT" ICON_ID="@49@" FUN_TEXT="Local file..."/>
<pfstatus_fun CODE="%SC" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_SEARCH" ICON_ID="@13@" FUN_TEXT="Find"/>
<pfstatus_fun CODE="%SC+" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_SEARCH_NEXT" ICON_ID="@4E@" FUN_TEXT="Find next"/>
<pfstatus_fun CODE="%SL" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Mail recipient"/>
<pfstatus_fun CODE="&amp;ABC" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="ABC Analysis"/>
<pfstatus_fun CODE="&amp;ALL" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_SELECT_ALL" ICON_ID="@4B@" FUN_TEXT="Select all"/>
<pfstatus_fun CODE="&amp;AQW" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Word processing..."/>
<pfstatus_fun CODE="&amp;AVE" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_ALV_VARIANT_SAVE" ICON_ID="@DN@" FUN_TEXT="Save layout..."/>
<pfstatus_fun CODE="&amp;CRB" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_TOTAL_LEFT" ICON_ID="@0B@" FUN_TEXT="First Column"/>
<pfstatus_fun CODE="&amp;CRE" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_TOTAL_RIGHT" ICON_ID="@0C@" FUN_TEXT="Last column"/>
<pfstatus_fun CODE="&amp;CRL" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_COLUMN_LEFT" ICON_ID="@0D@" FUN_TEXT="Column left"/>
<pfstatus_fun CODE="&amp;CRR" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_COLUMN_RIGHT" ICON_ID="@0E@" FUN_TEXT="Column right"/>
<pfstatus_fun CODE="&amp;EB9" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_TABLE_SETTINGS" ICON_ID="@36@" FUN_TEXT="Call Up Report"/>
<pfstatus_fun CODE="&amp;ETA" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_SELECT_DETAIL" ICON_ID="@16@" FUN_TEXT="Details"/>
<pfstatus_fun CODE="&amp;F03" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Back"/>
<pfstatus_fun CODE="&amp;F12" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_CANCEL" ICON_ID="@0W@" FUN_TEXT="Cancel"/>
<pfstatus_fun CODE="&amp;F15" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Exit"/>
<pfstatus_fun CODE="&amp;IC1" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_SELECT_DETAIL" ICON_ID="@16@" FUN_TEXT="Choose" PATH="S"/>
<pfstatus_fun CODE="&amp;ILD" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_FILTER_UNDO" ICON_ID="@GD@" FUN_TEXT="Delete Filter"/>
<pfstatus_fun CODE="&amp;ILT" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME=" ICON_FILTER" ICON_ID="@4G@" FUN_TEXT="Set filter"/>
<pfstatus_fun CODE="&amp;LFO" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_INFORMATION" ICON_ID="@0S@" FUN_TEXT="List status..."/>
<pfstatus_fun CODE="&amp;NFO" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_INFORMATION" ICON_ID="@0S@" FUN_TEXT="Selections..." INFO_TEXT="Selections"/>
<pfstatus_fun CODE="&amp;NTE" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Refresh"/>
<pfstatus_fun CODE="&amp;OAD" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_ALV_VARIANT_CHOOSE" ICON_ID="@DM@" FUN_TEXT="Select layout..."/>
<pfstatus_fun CODE="&amp;ODN" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_SORT_DOWN" ICON_ID="@3F@" FUN_TEXT="Sort in descendin."/>
<pfstatus_fun CODE="&amp;OL0" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_ALV_VARIANTS" ICON_ID="@LZ@" FUN_TEXT="Change layout..."/>
<pfstatus_fun CODE="&amp;OMP" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Collapse"/>
<pfstatus_fun CODE="&amp;OUP" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_SORT_UP" ICON_ID="@3E@" FUN_TEXT="Sort in Ascending..."/>
<pfstatus_fun CODE="&amp;RNT" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_PRINT" ICON_ID="@0X@" FUN_TEXT="Print"/>
<pfstatus_fun CODE="&amp;RNT_PREV" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Print preview"/>
<pfstatus_fun CODE="&amp;SAL" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_DESELECT_ALL" ICON_ID="@4D@" FUN_TEXT="Deselect all"/>
<pfstatus_fun CODE="&amp;SUM" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_INTERMEDIATE_SUM" ICON_ID="@5V@" FUN_TEXT="Subtotals..."/>
<pfstatus_fun CODE="&amp;UMC" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_SUM" ICON_ID="@3Z@" FUN_TEXT="Total"/>
<pfstatus_fun CODE="&amp;XML" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="XML Export..."/>
<pfstatus_fun CODE="&amp;XPA" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Expand"/>
<pfstatus_fun CODE="&amp;XXL" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Spreadsheet..."/>
<pfstatus_fun CODE="EXCEL" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_XLV" ICON_ID="@J3@" FUN_TEXT="Excel" ICON_TEXT="Export to Excel" INFO_TEXT="Export to Excel"/>
<pfstatus_fun CODE="P" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="First Page"/>
<pfstatus_fun CODE="P+" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_NEXT_PAGE" ICON_ID="@30@" FUN_TEXT="Next page"/>
<pfstatus_fun CODE="P++" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_LAST_PAGE" ICON_ID="@31@" FUN_TEXT="Last Page"/>
<pfstatus_fun CODE="P-" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_PREVIOUS_PAGE" ICON_ID="@2Z@" FUN_TEXT="Previous Page"/>
<pfstatus_fun CODE="P--" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_FIRST_PAGE" ICON_ID="@2Y@" FUN_TEXT="First Page"/>
<pfstatus_mtx CODE="000001" TEXT_TYPE="S" TEXT="List"/>
<pfstatus_mtx CODE="000002" TEXT_TYPE="S" TEXT="Edit"/>
<pfstatus_mtx CODE="000003" TEXT_TYPE="S" TEXT="Goto"/>
<pfstatus_mtx CODE="000004" TEXT_TYPE="S" TEXT="Settings"/>
<pfstatus_act CODE="000001" NO="01" MENUCODE="000001"/>
<pfstatus_act CODE="000001" NO="02" MENUCODE="000002"/>
<pfstatus_act CODE="000001" NO="03" MENUCODE="000003"/>
<pfstatus_act CODE="000001" NO="04" MENUCODE="000004"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="01" PFNO="39"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="02" PFNO="37"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="04" PFNO="05"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="05" PFNO="06"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="07" PFNO="28"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="08" PFNO="40"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="09" PFNO="29"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="10" PFNO="38"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="12" PFNO="30"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="13" PFNO="42"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="15" PFNO="45"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="17" PFNO="32"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="18" PFNO="33"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="19" PFNO="34"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="20" PFNO="09"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="22" PFNO="41"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="23" PFNO="07"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="25" PFNO="18"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="26" PFNO="26"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="27" PFNO="27"/>
<pfstatus_but PFK_CODE="000001" CODE="0001" NO="28" PFNO="19"/>
<pfstatus_pfk CODE="000001" PFNO="02" FUNCODE="&amp;IC1" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="03" FUNCODE="&amp;F03" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="05" FUNCODE="&amp;ALL" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="06" FUNCODE="&amp;SAL" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="07" FUNCODE="&amp;NFO" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="08" FUNCODE="&amp;NTE" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="09" FUNCODE="EXCEL" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="12" FUNCODE="&amp;F12" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="15" FUNCODE="&amp;F15" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="18" FUNCODE="&amp;CRB" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="19" FUNCODE="&amp;CRE" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="21" FUNCODE="P" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="22" FUNCODE="P-" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="23" FUNCODE="P+" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="24" FUNCODE="P++" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="25" FUNCODE="&amp;ABC" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="26" FUNCODE="&amp;CRL" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="27" FUNCODE="&amp;CRR" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="28" FUNCODE="&amp;OUP" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="29" FUNCODE="&amp;ILT" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="30" FUNCODE="&amp;UMC" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="31" FUNCODE="%SL" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="32" FUNCODE="&amp;OL0" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="33" FUNCODE="&amp;OAD" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="34" FUNCODE="&amp;AVE" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="35" FUNCODE="&amp;XPA" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="37" FUNCODE="&amp;EB9" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="38" FUNCODE="&amp;ILD" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="39" FUNCODE="&amp;ETA" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="40" FUNCODE="&amp;ODN" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="41" FUNCODE="&amp;LFO" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="42" FUNCODE="&amp;SUM" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="43" FUNCODE="&amp;XXL" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="44" FUNCODE="&amp;AQW" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="45" FUNCODE="%PC" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="46" FUNCODE="&amp;RNT_PREV" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="47" FUNCODE="&amp;OMP" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="48" FUNCODE="&amp;XML" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="71" FUNCODE="%SC" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="80" FUNCODE="P--" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="81" FUNCODE="P-" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="82" FUNCODE="P+" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="83" FUNCODE="P++" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="84" FUNCODE="%SC+" FUNNO="001"/>
<pfstatus_pfk CODE="000001" PFNO="86" FUNCODE="&amp;RNT" FUNNO="001"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="%PC"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="%SC"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="%SC+"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="%SL"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;ABC"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;ALL"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;AQW"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;AVE"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;CRB"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;CRE"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;CRL"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;CRR"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;EB9"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;ETA"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;F03"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;F12"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;F15"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;IC1"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;ILD"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;ILT"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;LFO"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;NFO"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;NTE"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;OAD"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;ODN"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;OL0"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;OMP"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;OUP"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;RNT"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;RNT_PREV"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;SAL"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;SUM"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;UMC"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;XML"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;XPA"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="&amp;XXL"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="EXCEL"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="P"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="P+"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="P++"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="P-"/>
<pfstatus_set STATUS="ALV_STATUS" FUNCTION="P--"/>
<pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000001" MODAL="D" INT_NOTE="Standard for General List Output"/>
<pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000001" MODAL="D" INT_NOTE="Standard for General List Output"/>
<pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000001" SUB_CODE="0001" MODAL="D" INT_NOTE="Standard for General List Output"/>
</pfstatus>
<source>*--------------------------------------------------------------------*
* REPORT ZDEMO_EXCEL26
* Demo for method zcl_excel_worksheet-bind_object:
* export data from ALV (CL_GUI_ALV_GRID) object or cl_salv_table object
* to Excel.
*--------------------------------------------------------------------*
report zdemo_excel26.
*----------------------------------------------------------------------*
* CLASS lcl_handle_events DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
class lcl_handle_events definition.
public section.
methods:
on_user_command for event added_function of cl_salv_events
importing e_salv_function.
endclass. &quot;lcl_handle_events DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_handle_events IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
class lcl_handle_events implementation.
method on_user_command.
perform user_command.&quot; using e_salv_function text-i08.
endmethod. &quot;on_user_command
endclass. &quot;lcl_handle_events IMPLEMENTATION
*--------------------------------------------------------------------*
* DATA DECLARATION
*--------------------------------------------------------------------*
data: lo_excel type ref to zcl_excel,
lo_worksheet type ref to zcl_excel_worksheet,
lo_salv type ref to cl_salv_table,
gr_events type ref to lcl_handle_events,
lr_events type ref to cl_salv_events_table,
gt_sbook type table of sbook.
data: l_path type string, &quot; local dir
lv_workdir type string,
lv_file_separator type c.
constants:
lv_default_file_name type string value &apos;26_Bind_ALV.xlsx&apos;.
*--------------------------------------------------------------------*
*START-OF-SELECTION
*--------------------------------------------------------------------*
start-of-selection.
* get data
* ------------------------------------------
select *
into table gt_sbook[]
from sbook &quot;#EC CI_NOWHERE
up to 10 rows.
* Display ALV
* ------------------------------------------
try.
cl_salv_table=&gt;factory(
exporting
list_display = abap_false
importing
r_salv_table = lo_salv
changing
t_table = gt_sbook[] ).
catch cx_salv_msg .
endtry.
try.
lo_salv-&gt;set_screen_status(
exporting
report = sy-repid
pfstatus = &apos;ALV_STATUS&apos;
set_functions = lo_salv-&gt;c_functions_all ).
catch cx_salv_msg .
endtry.
lr_events = lo_salv-&gt;get_event( ).
create object gr_events.
set handler gr_events-&gt;on_user_command for lr_events.
lo_salv-&gt;display( ).
*&amp;---------------------------------------------------------------------*
*&amp; Form USER_COMMAND
*&amp;---------------------------------------------------------------------*
* ALV user command
*--------------------------------------------------------------------*
form user_command .
if sy-ucomm = &apos;EXCEL&apos;.
* get save file path
cl_gui_frontend_services=&gt;get_sapgui_workdir( changing sapworkdir = l_path ).
cl_gui_cfw=&gt;flush( ).
cl_gui_frontend_services=&gt;directory_browse(
exporting initial_folder = l_path
changing selected_folder = l_path ).
if l_path is initial.
cl_gui_frontend_services=&gt;get_sapgui_workdir(
changing sapworkdir = lv_workdir ).
l_path = lv_workdir.
endif.
cl_gui_frontend_services=&gt;get_file_separator(
changing file_separator = lv_file_separator ).
concatenate l_path lv_file_separator lv_default_file_name
into l_path.
* export file to save file path
perform export_to_excel.
endif.
endform. &quot; USER_COMMAND
*--------------------------------------------------------------------*
* FORM EXPORT_TO_EXCEL
*--------------------------------------------------------------------*
* This subroutine is principal demo session
*--------------------------------------------------------------------*
form export_to_excel.
data: lo_converter type ref to zcl_excel_converter.
* create zcl_excel_worksheet object
create object lo_excel.
lo_worksheet = lo_excel-&gt;get_active_worksheet( ).
lo_worksheet-&gt;set_title( ip_title = &apos;Sheet1&apos; ).
* write to excel using method Bin_object
try.
lo_worksheet-&gt;bind_alv(
io_alv = lo_salv
it_table = gt_sbook
i_top = 2
i_left = 1
).
catch zcx_excel .
endtry.
perform write_file.
endform. &quot;EXPORT_TO_EXCEL
*&amp;---------------------------------------------------------------------*
*&amp; Form WRITE_FILE
*&amp;---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --&gt; p1 text
* &lt;-- p2 text
*----------------------------------------------------------------------*
form write_file .
data: lt_file type solix_tab,
l_bytecount type i,
l_file type xstring.
data: lo_excel_writer type ref to zif_excel_writer.
data: ls_seoclass type seoclass.
create object lo_excel_writer type zcl_excel_writer_2007.
l_file = lo_excel_writer-&gt;write_file( lo_excel ).
select single * into ls_seoclass
from seoclass
where clsname = &apos;CL_BCS_CONVERT&apos;.
if sy-subrc = 0.
call method (ls_seoclass-clsname)=&gt;xstring_to_solix
exporting
iv_xstring = l_file
receiving
et_solix = lt_file.
l_bytecount = xstrlen( l_file ).
else.
&quot; Convert to binary
call function &apos;SCMS_XSTRING_TO_BINARY&apos;
exporting
buffer = l_file
importing
output_length = l_bytecount
tables
binary_tab = lt_file.
endif.
cl_gui_frontend_services=&gt;gui_download( exporting bin_filesize = l_bytecount
filename = l_path
filetype = &apos;BIN&apos;
changing data_tab = lt_file ).
endform. &quot; WRITE_FILE</source>
</PROG>