ABAP读取文件
来源:互联网 发布:淘宝卖家怎么看客流量 编辑:程序博客网 时间:2024/06/08 02:53
ABAP读取文本文件分两种情况:第一种是本地文本文件,第二种是服务器文本文件。它读取方式不一样,本地文件可以直接用 CALL FUNCTION 'WS_UPLOAD'来实现,
然再进行处理,服务器读取文件需要用OPEN DATASET来读取,然后再进行处理。以下是两种读取方式的代码:
一、调用的代码:
PARAMETERS:P_FLNAME LIKE RLGRAP-FILENAME LOWER CASE .
本地文本文件: PERFORM FRM_GET_DATA TABLES IT_ITAB
USING P_FLNAME
'0'.
服务器文本文件:PERFORM FRM_GET_FILE_FRM_SERVER TABLES IT_ITAB
USING P_FLNAME
'0'.
二、两种读取方式:
(1)读取本地文本文件,参数说明:P_ITAB--读取文件存放内表,P_FILENAME--文件所在目录,P_STARTLINE--读取文件的起始行。
FORM FRM_GET_DATA TABLES P_ITAB USING P_FILENAME LIKE RLGRAP-FILENAME P_STARTLINE.
DATA:FRM_IT_DATA TYPE STRING OCCURS 0 WITH HEADER LINE,
FRM_IT_FIELD TYPE STRING OCCURS 0 WITH HEADER LINE,
FRM_TABCHAR TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
FIELD-SYMBOLS <FRM_FIELD> TYPE ANY.
IF P_FILENAME IS INITIAL.
RETURN.
ENDIF.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = P_FILENAME
FILETYPE = 'ASC'
TABLES
DATA_TAB = FRM_IT_DATA
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
NO_AUTHORITY = 10
OTHERS = 11.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
RETURN.
ENDIF.
LOOP AT FRM_IT_DATA.
IF SY-TABIX < P_STARTLINE.
CONTINUE.
ENDIF.
SPLIT FRM_IT_DATA AT FRM_TABCHAR INTO TABLE FRM_IT_FIELD.
CLEAR P_ITAB.
LOOP AT FRM_IT_FIELD.
ASSIGN COMPONENT SY-TABIX OF STRUCTURE P_ITAB TO <FRM_FIELD>.
<FRM_FIELD> = FRM_IT_FIELD.
ENDLOOP.
IF P_ITAB IS NOT INITIAL.
APPEND P_ITAB.
ENDIF.
ENDLOOP.
ENDFORM.
(2)读取服务器文本文件,参数说明:P_ITAB--读取文件存放内表,P_FILENAME--文件所在目录,P_STARTLINE--读取文件的起始行。
FORM FRM_GET_FILE_FRM_SERVER TABLES P_IT_ITAB USING P_FILENAME P_DATALINE.
DATA:FRM_L_REPCHAR TYPE EDI_REPCHR,
FRM_L_OS_MESSAGE(200),
FRM_DATASET(100)..
DATA: FRM_WA TYPE STRING.
DATA: FRM_TAB VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,"获得跳格符.
FRM_ENT VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF."获得跳格符.
DATA: FRM_IT_DATA TYPE STRING OCCURS 0 WITH HEADER LINE.
DATA: FRM_IT_TAB_ROWNUM TYPE I.
FIELD-SYMBOLS <FRM_FILED>.
FRM_DATASET = P_FILENAME.
CONDENSE FRM_DATASET NO-GAPS.
"打开文件
OPEN DATASET FRM_DATASET FOR INPUT IN TEXT MODE ENCODING NON-UNICODE
REPLACEMENT CHARACTER FRM_L_REPCHAR MESSAGE FRM_L_OS_MESSAGE.
IF SY-SUBRC NE 0.
RETURN.
ENDIF.
REFRESH P_IT_ITAB.
"循环读取文件,处理转换成格式
DO.
"读取数据
READ DATASET FRM_DATASET INTO FRM_WA.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
IF SY-INDEX < P_DATALINE.
CONTINUE.
ENDIF.
"替换回车符为空格
REPLACE FRM_ENT WITH '' INTO FRM_WA.
CONDENSE FRM_WA.
IF FRM_WA IS INITIAL OR FRM_WA = ''.
CONTINUE.
ENDIF.
"拆分字段
SPLIT FRM_WA AT FRM_TAB INTO TABLE FRM_IT_DATA.
FRM_IT_TAB_ROWNUM = LINES( FRM_IT_DATA ).
LOOP AT FRM_IT_DATA.
ASSIGN COMPONENT SY-TABIX OF STRUCTURE P_IT_ITAB TO <FRM_FILED>.
<FRM_FILED> = FRM_IT_DATA.
ENDLOOP.
APPEND P_IT_ITAB.
ENDDO.
ENDFORM.
- ABAP读取文件
- ABAP 读取文件 GUI_UPLOAD
- ABAP读取文件 两种文件
- abap 读取文件的Function Model
- ABAP读取Excel文件,转成对应格式内表
- ABAP 写数据到SAP服务器文件并读取
- ABAP通过OLEDB读取本地Access(MDB)文件
- ABAP 写数据到SAP服务器文件并读取
- ABAP写数据到SAP服务器文件并读取
- ABAP EXCEL文件读取函数 TEXT_CONVERT_XLS_TO_SAP的使用
- ABAP通过OLEDB读取本地Access(MDB)文件
- ABAP读取长文本
- ABAP读取 attachment
- 【abap】abap读取透明表的读取速度问题BSEG
- ABAP--如何读取地址信息
- ABAP--如何读取地址信息
- ABAP:读取长文本内容
- ABAP 打开文件
- 浅谈执行力
- asp.net 级联菜单
- Android 笔记 Canvas Bitmap
- 点击空链接页面返回问题---已解决
- 如何实现具有层次结构的 TreeView <四> (WPF/TreeView/Style/Template)
- ABAP读取文件
- Direct3D轮回:游戏场景之河流
- Linux 的多线程编程的高效开发经验
- jdbc中的batch
- 通用Makefile
- A*,八数码
- map
- 我对单源最短路径的思考
- 源码网站1