&---------------------------------------------------------------------
*& Report ZHTEST_011
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
REPORT zhtest_011.
DATA : l_xml TYPE REF TO cl_xml_document .
DATA: lo_gui TYPE REF TO cl_gui_frontend_services.
DATA: bin_tab TYPE STANDARD TABLE OF tabl1024.
DATA: fullpath TYPE string,
lv_strs TYPE string,
length TYPE i.
DATA : lt_t001 TYPE TABLE OF t001 .
DATA : lt_t001a TYPE TABLE OF t001 .
SELECT * INTO TABLE lt_t001 FROM t001 .
CALL TRANSFORMATION id SOURCE lt_t001 = lt_t001
RESULT XML DATA(xmlsss) .
- merged_document1 = ls_file-zfiles .
CREATE OBJECT l_xml .
CALL METHOD l_xml->parse_xstring
EXPORTING
stream = xmlsss. "xml_out is the variable which is holding the xml string
CALL METHOD l_xml->render_2_string
IMPORTING
stream = lv_strs.
CALL METHOD l_xml->display.
fullpath = ‘D:\test01’ && sy-uzeit && ‘.xls’ .
CLEAR : lt_t001 .
CALL TRANSFORMATION id SOURCE XML xmlsss
RESULT lt_t001 = lt_t001a .
CALL FUNCTION ‘SCMS_XSTRING_TO_BINARY’
EXPORTING
buffer = xmlsss
IMPORTING
output_length = length
TABLES
binary_tab = bin_tab.
CREATE OBJECT lo_gui .
lo_gui->gui_download( EXPORTING
filename = fullpath
filetype = ‘BIN’
bin_filesize = length
CHANGING
data_tab = bin_tab ) .
WRITE : xmlsss .
ZTRANTOXSTRING - 2进制流文件
FUNCTION ZTRANTOXSTRING.
*“----------------------------------------------------------------------
"“本地接口:
*” EXPORTING
*” REFERENCE(EV_XSTRING) TYPE XSTRING
*" REFERENCE(EV_SIZE) TYPE I
*" TABLES
*" IT_FCAT TYPE LVC_T_FCAT
*" IT_OUT
*" ET_BIN_TAB
*"----------------------------------------------------------------------
FIELD-SYMBOLS :
TYPE ANY TABLE .DATA: BIN_TAB TYPE TABLE OF SOLIX .
*DATA: bin_tab TYPE STANDARD TABLE OF tabl1024.
DATA : LV_VALUEP TYPE P DECIMALS 2,
L_VALUE TYPE STRING,
L_FULLPATH TYPE STRING,
LENGTH TYPE I,
LV_ZTYPE TYPE I,
LV_STR TYPE STRING.
**** SET HEADER
LOOP AT IT_FCAT INTO DATA(LS_FIELDCAT).
CONCATENATE LV_STR LS_FIELDCAT-SCRTEXT_L CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB INTO LV_STR .
ENDLOOP.
CONCATENATE LV_STR CL_ABAP_CHAR_UTILITIES=>CR_LF INTO LV_STR .
**** SET DATA
LOOP AT IT_OUT ASSIGNING FIELD-SYMBOL() .
LOOP AT IT_FCAT INTO LS_FIELDCAT .
ASSIGN COMPONENT LS_FIELDCAT-FIELDNAME OF STRUCTURE TO FIELD-SYMBOL() .
IF SY-SUBRC = 0 .
L_VALUE = .
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB IN L_VALUE WITH '' ."去掉单引号
REPLACE ALL OCCURRENCES OF '"' IN L_VALUE WITH '' ."去掉单引号
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>VERTICAL_TAB IN L_VALUE WITH '' ."去掉双引号
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>NEWLINE IN L_VALUE WITH '' ."去掉逗号
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>CR_LF IN L_VALUE WITH '' ."去掉斜杠
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>FORM_FEED IN L_VALUE WITH '' ."去掉斜杠
IF LS_FIELDCAT-INTTYPE = 'P' AND <FS> < 0 .
LV_VALUEP = <FS> .
LV_VALUEP = - LV_VALUEP .
L_VALUE = '-' && LV_VALUEP .
ENDIF .
CONCATENATE LV_STR L_VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB INTO LV_STR .
ENDIF .
ENDLOOP.
CONCATENATE LV_STR CL_ABAP_CHAR_UTILITIES=>CR_LF INTO LV_STR .
ENDLOOP .
CALL FUNCTION ‘SCMS_STRING_TO_XSTRING’
EXPORTING
TEXT = LV_STR
-
MIMETYPE = 'APPLICATION/PDF;charset=utf-16le ' ENCODING = '8400'
IMPORTING
BUFFER = EV_XSTRING
EXCEPTIONS
FAILED = 1
OTHERS = 2.
IF SY-SUBRC <> 0. -
Implement suitable error handling here
ENDIF.CALL FUNCTION ‘SCMS_XSTRING_TO_BINARY’
EXPORTING
BUFFER = EV_XSTRING
IMPORTING
OUTPUT_LENGTH = LENGTH
TABLES
BINARY_TAB = BIN_TAB.ET_BIN_TAB[] = BIN_TAB[] .
EV_SIZE = LENGTH .
IF LV_ZTYPE = ‘1’ .
L_FULLPATH = ‘D:\test01’ && SY-DATUM && SY-UZEIT && ‘.xls’ .
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
FILENAME = L_FULLPATH "lv_fullpath
FILETYPE = ‘BIN’ -
write_field_separator = 'X' TABLES DATA_TAB = BIN_TAB
-
fieldnames = gt_hd .
ENDIF.
ENDFUNCTION.