ABAP读取文件 两种文件
来源:互联网 发布:编程中什么是栈 编辑:程序博客网 时间:2024/06/08 13:45
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读取文件
- ABAP 读取文件 GUI_UPLOAD
- 两种IP文件的读取
- 资源文件的两种读取方式
- QT两种读取文件方式
- java 读取资源文件两种方法
- CSV文件准确读取两种思路
- 读取.properties文件的两种方式
- 缓存读取文件的两种方式
- abap 读取文件的Function Model
- java 读取文件 两例
- 两种从资源文件中读取常量的方法
- JAVA读取XML文件的两种方法
- 读取属性文件(.properties)的两种方法
- 在c#中读取Excel文件提供两种方法
- C# 两种读取CSV文件方法实例
- Flex读取XML文件的两种方法
- 字节流/字符流
- Mysql优化之基础回顾篇
- Android View深入学习——实现QQ滑动显示隐藏按钮ListView
- 【java基础】JAVA常用正则表达式
- poj2752 kmp 最短子串重复次数
- ABAP读取文件 两种文件
- 适配器模式
- php设计模式之单例模式
- Android 之摇一摇录音(加速度传感器)
- SpringMVC处理请求流程(转载)
- iOS之 多线程的深入探究
- c++23、C++中类的交叉引用
- ABAP 读取文件 GUI_UPLOAD
- C语言assert