上传文件到SAP
转载:https://www.cnblogs.com/caizjian/archive/2013/04/12/3016192.html
上传EXCEL和text到SAP内表 ,SAP内表导出EXCEL
相关文章:http://www.cnblogs.com/caizjian/p/3271757.html EXCEL
http://www.cnblogs.com/caizjian/archive/2013/04/12/3016284.html TXT
*&---------------------------------------------------------------------*
*& Report ZTEST_UP_EXCEL
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_UP_EXCEL.
TYPE-POOLS TRUXS.
*定义内表
DATA:BEGIN OF gt_tab OCCURS 0,
matnr TYPE matnr, "物料
maktx TYPE makt-maktx, "描述
date TYPE dats, "日期
END OF gt_tab.
*传输的参数
DATA it_raw TYPE truxs_t_text_data.
*定义输入框,也就是显示的路径
PARAMETERS p_file TYPE IBIPPARMS-PATH .
*这个只用在批处理这边 后面要紧接着下面的上传文件弹出选择框的函数
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
*上传文件弹出选择框的函数
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
START-OF-SELECTION.
CLEAR it_raw.
*上传excel文件的函数
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
" I_FIELD_SEPERATOR = 分隔符,默认为tab
" I_LINE_HEADER = 'X' "X 表示取出表头
i_tab_raw_data = it_raw "传输的参数,没有实际用处 但是必输
i_filename = P_FILE "文件路径
TABLES
i_tab_converted_data = gt_tab[] "导入到的内表
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
BREAK-POINT.
*=====把内表导出成excel
CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
EXPORTING
I_FIELD_SEPERATOR = ','
* I_LINE_HEADER =
i_filename = P_FILE "导出路径
* I_APPL_KEEP = ' '
tables
i_tab_sap_data = gt_tab[] "导出内表
* CHANGING
* I_TAB_CONVERTED_DATA = it_raw
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
注意:
1. 导出的话最好把字段类型先全部转换成字符型
2、SAP_CONVERT_TO_XLS_FORMAT只能导出excel 不能导出txt
3、TEXT_CONVERT_XLS_TO_SAP 既可以导入txt也可以导入excel
4、TEXT_CONVERT_XLS_TO_SAP 导入excel或者txt的时候,金额或者含有小数类型的话 小于1的两位小数 导入到内表会被自动放大100倍 或者100倍,解决办法有两种
第一种是把excel中该单元格中的金额转换成文本型(txt类型没法改,只能用第二种方法),不是单元格转换成文本,而是值,转换后单元格左上右有绿色小三角;
第二种是把上传到的内表该字段定义为字符型,上传后再赋值给另外一张内表。


浙公网安备 33010602011771号