xml方式上传模板,以二进制的方式下载数据到文件
1.模板处理
1)将excel模板另存为xml文件,tcode:strans (简单方式转换)上传到系统内,一般excel保存一行标题、一行数据。
2)以txt方式打开文档,从第二行开始复制到源代码
内
3)xml内可以定义变量,数据行设置loop,将数据行的数据改为输出的内表变量。
增加:声明的标题变量,赋值如下
程序内调用传参
增加:loop数据行
字段field写法:
|
非空判断
4)注意要将txt内的行数限制删掉,
修改后源代码:
1996-12-17T01:32:42Z
2019-12-06T07:09:24Z
16.00
12600
23256
32767
32767
False
False
|
机构
|
部门名称
|
员工编号
|
姓名
|
职衔等级
|
标准岗位
|
核算起期
|
薪酬标准
|
固浮比
|
基本工资合计
|
变动时间1
|
对应职级1
|
薪酬标准1
|
固浮比1
|
基本工资合计
|
变动时间2
|
对应职级2
|
薪酬标准2
|
固浮比2
|
基本工资合计
|
变动时间3
|
对应职级3
|
薪酬标准3
|
固浮比3
|
基本工资合计
|
变动时间4
|
对应职级4
|
薪酬标准4
|
固浮比4
|
基本工资合计
|
变动时间5
|
对应职级5
|
薪酬标准5
|
固浮比5
|
基本工资合计
|
变动时间6
|
对应职级6
|
薪酬标准6
|
固浮比6
|
基本工资合计
|
终止日期
|
年奖基数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9
600
600
3
2
False
False
False
False
False
False
- 程序编写
FORM frm_export_file .
DATA: lv_xml TYPE string.
DATA: lo_xml_doc TYPE REF TO cl_xml_document.
DATA: lw_xstring TYPE xstring.
DATA: lv_filename TYPE string.
DATA: lt_binary TYPE TABLE OF tbl1024,
lv_length TYPE i,
lv_length2 TYPE sapb-length.
DATA: lv_file LIKE rlgrap-filename,
lv_title TYPE string.
"获取文件保存路径及文件名称
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
CHANGING
file_name = lv_file
EXCEPTIONS
mask_too_long = 1
OTHERS = 2.
IF sy-subrc <> 0.
ELSE.
"标题赋值
lv_title = '总公司' && pybegda+0(4) && '年度年终奖基数报表'.
* 调用transform 生成xml
CALL TRANSFORMATION zhr_upgrade_111_temp
SOURCE root = gt_output[] "输出的内容
title = lv_title
RESULT XML lv_xml.
REPLACE FIRST OCCURRENCE OF 'encoding="utf-16″' IN lv_xml WITH 'encoding="gbk"'.
* 将string转换成xstring
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING
text = lv_xml
IMPORTING
buffer = lw_xstring
EXCEPTIONS
failed = 1.
IF sy-subrc EQ 0.
* 生成文件名
lv_filename = lv_file.
* 将xstring转成二进制
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lw_xstring
* APPEND_TO_TABLE = ' '
IMPORTING
output_length = lv_length
TABLES
binary_tab = lt_binary.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_filename
filetype = 'BIN'
no_auth_check = 'X'
codepage = '8400'
TABLES
data_tab = lt_binary.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ENDIF.
ENDFORM.