*&---------------------------------------------------------------------*
*& Form CREATE_XLS
*&---------------------------------------------------------------------*
* Вывод XLS
*----------------------------------------------------------------------*
FORM create_xls USING p_sel ps_hdr pt_xls TYPE table.
DATA lv_temp_dir TYPE string.
DATA lv_filename TYPE string.
DATA lr_xml TYPE REF TO if_ixml.
DATA lr_document TYPE REF TO if_ixml_document.
DATA lr_stream_factory TYPE REF TO if_ixml_stream_factory.
DATA lr_istream TYPE REF TO if_ixml_istream.
DATA lr_ostream TYPE REF TO if_ixml_ostream.
DATA lt_data_xml TYPE swxmlcont.
DATA lo_excel TYPE ole2_object.
DATA lo_wbook TYPE ole2_object.
DATA lo_abook TYPE ole2_object.
DATA lv_rc TYPE char8.
DATA lv_trans_name TYPE char30.
* Директория TEMP
cl_gui_frontend_services=>get_temp_directory( CHANGING temp_dir = lv_temp_dir ).
cl_gui_cfw=>flush( ).
CONCATENATE lv_temp_dir '\' 'Выгрузка_' sy-datum '_' sy-timlo '.xls'
INTO lv_filename.
* Создание XLM
lr_xml = cl_ixml=>create( ).
lr_document = lr_xml->create_document( ).
lr_stream_factory = lr_xml->create_stream_factory( ).
lr_ostream = lr_stream_factory->create_ostream_itable( table = lt_data_xml[] ).
* Трансформация
CONCATENATE 'ZTR_NAME' p_sel
INTO lv_trans_name.
CALL TRANSFORMATION (lv_trans_name)
SOURCE is_hdr = ps_hdr it_outtab = pt_xls[]
RESULT XML lr_ostream.
* Выгрузка на локальную машину
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = lv_filename
filetype = 'BIN'
CHANGING
data_tab = lt_data_xml[]
EXCEPTIONS
file_write_error = 1
OTHERS = 99.
* Преобразование
CREATE OBJECT lo_excel 'Excel.Application'.
SET PROPERTY OF lo_excel 'Visible' = 0.
SET PROPERTY OF lo_excel 'DisplayAlerts' = 'False'.
GET PROPERTY OF lo_excel 'WorkBooks' = lo_wbook.
CALL METHOD OF lo_wbook 'Open' = lv_rc
EXPORTING
#1 = lv_filename.
GET PROPERTY OF lo_excel 'ActiveWorkBook' = lo_abook.
CALL METHOD OF lo_abook 'SaveAs' = lv_rc
EXPORTING
#1 = lv_filename
#2 = 56.
CALL METHOD OF lo_abook 'Close'.
CALL METHOD OF lo_excel 'Quit'.
CLEAR: lo_excel, lo_wbook.
* Открытие файла
cl_gui_frontend_services=>execute( document = lv_filename operation = 'OPEN' ).
*
ENDFORM. " CREATE_XLS
transformation XXX
< xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" version="1.0">
< xsl:strip-space elements="*"/>
< xsl:template match="/">
< ?xml version="1.0"?>
< ?mso-application progid="Excel.Sheet"?>
< xsl:processing-instruction name="mso-application" progid="Excel.Sheet"?>
< xsl:text?>progid="Excel.Sheet"?>
< /xsl:processing-instruction?>
< Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
* / Example of table fill
< xsl:for-each select="asx:abap/asx:values/IT_OUTTAB/ZS_FI_EXCEL">
< Row ss:Height="13.5" ss:StyleID="s94">
< Cell ss:StyleID="s91">< xsl:value-of select="LIFNR_NAME"/>< /Data>< /Cell>
< /Row>
< /xsl:for-each>
*/ Example of single field in structure
< Cell ss:StyleID="s96">< xsl:value-of select="asx:abap/asx:values/IS_HDR/SUM_WRBTR"/>< /Data>< /Cell>
< /Workbook>
< /xsl:template>
< /xsl:transform>
Комментариев нет:
Отправить комментарий