ABAP upload file(*.txt *.csv *.xls)
转自:http://blog.csdn.net/jy00873757/article/details/8534492
在SAP我们经常会用到*.txt, *.csv, *.xls三种文件格式
*.TXT
1. 一般用GUI_UPLOAD来处理, 请看下面的例子:
- TYPES: BEGIN OF ty_luke,
- key1 TYPE zluke-key1,
- year1 TYPE zluke-year1,
- month1 TYPE zluke-month1,
- test TYPE zluke-test,
- END OF ty_luke.
- DATA: lw_luke TYPE ty_luke,
- lt_luke TYPE STANDARD TABLE OF ty_luke.
- DATA: lv_file TYPE string VALUE 'D:\ZZERO2.TXT'.
- CALL FUNCTION 'GUI_UPLOAD'
- EXPORTING
- filename = lv_file
- filetype = 'ASC'
- has_field_separator = 'X'
- TABLES
- data_tab = lt_luke
- EXCEPTIONS
- file_open_error = 1
- file_read_error = 2
- OTHERS = 3.
- IF sy-subrc <> 0.
- * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
- * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
- ENDIF.
- BREAK-POINT ID z_zero_test.
2. 这是upload的文件

3. 读取文件的结果

*CSV
1. 首先CSV是不能处理中文的, 请看下面截图:

当我保存这个文件后再打开, 字已经变了

2. 常用FM: KCD_CSV_FILE_TO_INTERN_CONVERT
- TYPES truxs_t_text_data(4096) TYPE c OCCURS 0.
- DATA: lv_file TYPE rlgrap-filename VALUE 'D:\UPLOAD.CSV'.
- TYPES: BEGIN OF kcde_intern_struc.
- INCLUDE STRUCTURE kcde_cells.
- * row type kcde_row_col,
- * col type kcde_row_col,
- * value type kcde_intern_value,
- TYPES: END OF kcde_intern_struc.
- TYPES: BEGIN OF ty_file,
- zfld1(4) TYPE c,
- zfld2(5) TYPE c,
- zfld3(6) TYPE c,
- END OF ty_file.
- DATA:lv_raw TYPE truxs_t_text_data.
- DATA: lt_file TYPE STANDARD TABLE OF ty_file,
- ls_file TYPE ty_file.
- DATA: lt_temp TYPE STANDARD TABLE OF kcde_intern_struc,
- ls_temp TYPE kcde_intern_struc.
- FIELD-SYMBOLS: <fs_file>.
- DATA: lv_index TYPE i.
- CALL FUNCTION 'KCD_CSV_FILE_TO_INTERN_CONVERT'
- EXPORTING
- i_filename = lv_file
- i_separator = ','
- TABLES
- e_intern = lt_temp
- EXCEPTIONS
- upload_csv = 1
- upload_filetype = 2
- OTHERS = 3.
- IF sy-subrc = 0.
- CLEAR: ls_temp, ls_file.
- LOOP AT lt_temp INTO ls_temp.
- CLEAR: lv_index.
- lv_index = ls_temp-col.
- ASSIGN COMPONENT lv_index OF STRUCTURE ls_file TO <fs_file>.
- IF sy-subrc = 0.
- <fs_file> = ls_temp-value.
- ENDIF.
- AT END OF row.
- APPEND ls_file TO lt_file.
- CLEAR ls_file.
- ENDAT.
- CLEAR ls_temp.
- ENDLOOP.
- ENDIF.
- BREAK-POINT.
3. Upload的文件

4. 读取文件的结果:

5. 加上我后面那段逻辑处理, 就能得到最后的结果

6. 注意: 这个FM不能处理",
把文件改成如下图所示:

再运行程序, 程序就会dump, 想知道为什么, 自己debug一下吧
*.XLS
1. 常用FM: TEXT_CONVERT_XLS_TO_SAP
- TYPE-POOLS: truxs.
- DATA: lv_file TYPE rlgrap-filename VALUE 'D:\ZZERO3.XLS'.
- TYPES: BEGIN OF ty_data,
- key(3) TYPE c,
- year(4) TYPE c,
- month(2) TYPE c,
- test(4) TYPE c,
- END OF ty_data.
- DATA: lv_raw TYPE truxs_t_text_data.
- DATA: lw_data TYPE ty_data,
- lt_data TYPE STANDARD TABLE OF ty_data.
- CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
- EXPORTING
- * I_FIELD_SEPERATOR =
- * I_LINE_HEADER =
- i_tab_raw_data = lv_raw
- i_filename = lv_file
- TABLES
- i_tab_converted_data = lt_data
- 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.
2. Upload的文件

3. 读取文件的结果:

ABAP upload file(*.txt *.csv *.xls)的更多相关文章
- mysql 查询导出(txt,csv,xls)
1 简介 工作中产品经常会临时找我导出一些数据,导出mysql查询结果数据有几种方法,下面介绍3种. ① mysql -u -p -e "sql" db > filep ...
- java读取txt/pdf/xls/xlsx/doc/docx/ppt/pptx
环境准备txt利用common-iopdf利用pdfbox剩下的用POI关于POI,读取xls没啥特别的,主要是读取doc和ppt,需要下载poi源代码,然后将poi-src-3.7-20101029 ...
- Upload file
<h3>Upload File</h3> <form action="@Url.Action("Upload","UploadCo ...
- Data access between different DBMS and other txt/csv data source by DB Query Analyzer
1 About DB Query Analyzer DB Query Analyzer is presented by Master Genfeng,Ma from Chinese Mainl ...
- [数据科学] 从csv, xls文件中提取数据
在python语言中,用丰富的函数库来从文件中提取数据,这篇博客讲解怎么从csv, xls文件中得到想要的数据. 点击下载数据文件http://seanlahman.com/files/databas ...
- 页面无刷新Upload File
页面无刷新Upload File. 利用jquery.form.js的ajaxForm提交文件. 具体参考以下代码: 前台html <%@ Page Language="C#" ...
- JMeter学习-027-JMeter参数文件(脚本分发)路径问题:jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable解决方法
前些天,在进行分布式参数化测试的时候,出现了如题所示的错误报错信息.此文,针对此做一个简略的重现及分析说明. JMX脚本线程组参数配置如下所示: 参数文件路径配置如下所示: 执行JMX脚本后,服务器对 ...
- jQuery文件上传插件jQuery Upload File 有上传进度条
jQuery文件上传插件jQuery Upload File 有上传进度条 jQuery文件上传插件jQuery Upload File,插件使用简单,支持单文件和多文件上传,支持文件拖拽上传,有进度 ...
- Angular HttpClient upload file with FormData
从sof上找到一个example:https://stackoverflow.com/questions/46206643/asp-net-core-2-0-and-angular-4-3-file- ...
随机推荐
- 初学React,setState后获取到的thisstate没变,还是初始state?
问题:(javascript)初学React,setState后获取到的thisstate没变,还是初始state?描述: getInitialState(){ return {data:[]}; } ...
- js对象浅拷贝和深拷贝详解
js对象浅拷贝和深拷贝详解 作者:i10630226 字体:[增加 减小] 类型:转载 时间:2016-09-05我要评论 这篇文章主要为大家详细介绍了JavaScript对象的浅拷贝和深拷贝代码,具 ...
- Android JNI&NDK编程小结及建议
前言 由于网上关于JNI/NDK相关的知识点介绍的比较零散而且不具备参照性,所以写了这篇JNI/NDK笔记,便于作为随时查阅的工具类型的文章,本文主要的介绍了在平时项目中常用的命令.JNI数据类型.签 ...
- Linux 双网卡 不同网段 网络互通
环境如下: 现状:一台linux主机上有两个网卡eth0 和eth1 ,机器能访问192网的服务资源,但不能访问10网段的资源. 要求:linux能通过eth1访问10网段的资源 路由: 网卡: 操作 ...
- MFC中 CDateTimeCtrl 自定义日期显示格式
MFC里的DateTimePicker控件 ,通过属性来设置的话只能设置两种显示方式,要么日期,要么时间,很多时候我们需要在一个DateTimePicker里日期和时间同时显示. 这个时候只能通过自定 ...
- SilverLight.3-Validation:一、银光验证。ValidatesOnExpression和NotifyOnValidationError
ylbtech-SilverLight-DataBindings_BindingADataObjects_Validation:一.银光验证.ValidatesOnExpression和NotifyO ...
- circular-array-loop(蛮难的)
https://leetcode.com/problems/circular-array-loop/ 题目蛮难的,有一些坑. 前后两个指针追赶找环的方法,基本可以归结为一种定式.可以多总结. pack ...
- Maven引入Hadoop依赖报错:Missing artifact jdk.tools:jdk.tools:jar:1.6
Maven引入Hadoop依赖报错:Missing artifact jdk.tools:jdk.tools:jar:1.6 原因是缺少tools.jar的依赖,tools.jar在jdk的安装目录中 ...
- Python 2.7 升 3.4
Ubuntu 14.04 已经安装有python3.4.0 命令行使用python3 或者创建链接即可 ln -s /usr/bin/python3 /usr/bin/python [推荐此方法,然后 ...
- CSS3 background属性
background: #00FF00 url(bgimage.gif) no-repeat fixed top; background 简写属性在一个声明中设置所有的背景属性. 可以设置如下属性: ...