SAP ABAP编程 txt数据批量上传至内表
2014-09-02 13:46
411 查看
REPORT Y_FUNTION_TEST.
*********数据定义*********************************************
DATA: BEGIN OF TAB_DATA0,
LAST_NAME TYPE C LENGTH 20,
FIRST_NAME TYPE C LENGTH 20,
TELNO TYPE C LENGTH 20,
END OF TAB_DATA0.
DATA: TAB_DATA LIKE TABLE OF TAB_DATA0.
DATA REC_DATA LIKE TAB_DATA0.
***********************导文件******************************
DATA :G_DATAFILE TYPE STRING, "导入文件Local ASCII Text File
G_LOGFILE TYPE STRING, "Log File
G_IDX TYPE I VALUE 0,
G_RTNCODE TYPE I.
SELECTION-SCREEN SKIP 1.
PARAMETERS F_INFILE LIKE RLGRAP-FILENAME OBLIGATORY.
***********************初始化屏幕*****************************
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR F_INFILE.
PERFORM SELECT_FILE CHANGING F_INFILE. "选择本地的ASCII数据文件
START-OF-SELECTION.
PERFORM UPLOAD_DATA USING G_RTNCODE. "将本地的ASCII数据文件上传并保存在内部表 ITAB_DATA
IF G_RTNCODE = 0.
LOOP AT TAB_DATA INTO REC_DATA.
WRITE: / REC_DATA-LAST_NAME,REC_DATA-FIRST_NAME,REC_DATA-TELNO.
ENDLOOP.
ENDIF.
* 将本地的ASCII数据文件上传并保存在内部表 ITAB_DATA
*----------------------------------------------------------------------*
* -->P_RTNCODE text
*----------------------------------------------------------------------*
FORM UPLOAD_DATA CHANGING P_RTNCODE.
DATA: L_FILENAME TYPE RLGRAP-FILENAME,
L_RC TYPE I,
L_FILETABLE TYPE FILETABLE,
L_RLT TYPE C.
P_RTNCODE = -1.
G_DATAFILE = F_INFILE.
L_RLT = CL_GUI_FRONTEND_SERVICES=>FILE_EXIST( G_DATAFILE ).
IF L_RLT IS INITIAL.
EXIT.
ENDIF.
P_RTNCODE = 0.
* 上传文件
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = G_DATAFILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
READ_BY_LINE = 'X'
TABLES
DATA_TAB = TAB_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
DP_OUT_OF_MEMORY = 10
ACCESS_DENIED = 11.
*ALSM_EXCEL_TO_INTERNAL_TABLE
IF SY-SUBRC <> 0.
MESSAGE '上传文件时出错!' TYPE 'i' .
P_RTNCODE = -1.
ENDIF.
ENDFORM. "UPLOAD_DATA
* 选择本地的ASCII数据文件
*----------------------------------------------------------------------*
* -->T_SELFILE text
*----------------------------------------------------------------------*
FORM SELECT_FILE CHANGING T_SELFILE.
DATA: L_RC TYPE I,
L_FILETABLE TYPE FILETABLE.
* 打开txt文件
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = '请选择导入文件'
FILE_FILTER = '文本文件 (*.txt)|*.txt|全部文件 (*.*)|*.*|'
MULTISELECTION = SPACE
CHANGING
FILE_TABLE = L_FILETABLE
RC = L_RC
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC = 0 AND L_RC = 1.
READ TABLE L_FILETABLE INTO T_SELFILE INDEX 1.
ENDIF.
ENDFORM. "SELECT_FILE
*********数据定义*********************************************
DATA: BEGIN OF TAB_DATA0,
LAST_NAME TYPE C LENGTH 20,
FIRST_NAME TYPE C LENGTH 20,
TELNO TYPE C LENGTH 20,
END OF TAB_DATA0.
DATA: TAB_DATA LIKE TABLE OF TAB_DATA0.
DATA REC_DATA LIKE TAB_DATA0.
***********************导文件******************************
DATA :G_DATAFILE TYPE STRING, "导入文件Local ASCII Text File
G_LOGFILE TYPE STRING, "Log File
G_IDX TYPE I VALUE 0,
G_RTNCODE TYPE I.
SELECTION-SCREEN SKIP 1.
PARAMETERS F_INFILE LIKE RLGRAP-FILENAME OBLIGATORY.
***********************初始化屏幕*****************************
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR F_INFILE.
PERFORM SELECT_FILE CHANGING F_INFILE. "选择本地的ASCII数据文件
START-OF-SELECTION.
PERFORM UPLOAD_DATA USING G_RTNCODE. "将本地的ASCII数据文件上传并保存在内部表 ITAB_DATA
IF G_RTNCODE = 0.
LOOP AT TAB_DATA INTO REC_DATA.
WRITE: / REC_DATA-LAST_NAME,REC_DATA-FIRST_NAME,REC_DATA-TELNO.
ENDLOOP.
ENDIF.
* 将本地的ASCII数据文件上传并保存在内部表 ITAB_DATA
*----------------------------------------------------------------------*
* -->P_RTNCODE text
*----------------------------------------------------------------------*
FORM UPLOAD_DATA CHANGING P_RTNCODE.
DATA: L_FILENAME TYPE RLGRAP-FILENAME,
L_RC TYPE I,
L_FILETABLE TYPE FILETABLE,
L_RLT TYPE C.
P_RTNCODE = -1.
G_DATAFILE = F_INFILE.
L_RLT = CL_GUI_FRONTEND_SERVICES=>FILE_EXIST( G_DATAFILE ).
IF L_RLT IS INITIAL.
EXIT.
ENDIF.
P_RTNCODE = 0.
* 上传文件
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = G_DATAFILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
READ_BY_LINE = 'X'
TABLES
DATA_TAB = TAB_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
DP_OUT_OF_MEMORY = 10
ACCESS_DENIED = 11.
*ALSM_EXCEL_TO_INTERNAL_TABLE
IF SY-SUBRC <> 0.
MESSAGE '上传文件时出错!' TYPE 'i' .
P_RTNCODE = -1.
ENDIF.
ENDFORM. "UPLOAD_DATA
* 选择本地的ASCII数据文件
*----------------------------------------------------------------------*
* -->T_SELFILE text
*----------------------------------------------------------------------*
FORM SELECT_FILE CHANGING T_SELFILE.
DATA: L_RC TYPE I,
L_FILETABLE TYPE FILETABLE.
* 打开txt文件
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = '请选择导入文件'
FILE_FILTER = '文本文件 (*.txt)|*.txt|全部文件 (*.*)|*.*|'
MULTISELECTION = SPACE
CHANGING
FILE_TABLE = L_FILETABLE
RC = L_RC
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC = 0 AND L_RC = 1.
READ TABLE L_FILETABLE INTO T_SELFILE INDEX 1.
ENDIF.
ENDFORM. "SELECT_FILE
相关文章推荐
- SAP ABAP编程 批量查询事务码对应的授权对象和字段值
- ABAP动态生成代码上传TXT数据
- 批量备SAP中CBO ABAP 程序代码为TXT文件备份
- SAP ABAP编程 excel数据批量上传--用ALV展示
- 批量备SAP中CBO ABAP 程序代码为TXT文件备份
- ABAP根据输入的表名动态生成上传TXT数据的代码
- SAP ABAP将内表数据导出到TXT和从TXT读取到内表
- java操作txt或xls文件批量导入数据
- ABAP--关于SAP Control Framework(入门GUI编程的不错的基础介绍)
- ABAP--关于SAP Control Framework(入门GUI编程的不错的基础介绍)
- aspupload 批量上传图片并存入数据库,取得multipart/form-data的表单数据
- Mini SAP 6.2 安装 ABAP/4 编程
- Mini SAP 6.2 安装 ABAP/4 编程
- ABAP--如何进行sap的金额数据存储和显示之间的转换(CURRENCY_AMOUNT_DISPLAY_TO_SAP)
- 读取Excel的内容,实现数据批量上传
- 读取Excel的内容,实现数据批量上传(转)
- [转]Mini SAP 6.2 安装 ABAP/4 编程
- Mini SAP 6.2 安装 ABAP/4 编程
- [转帖]ABAP实践学习--ABAP中将SAP数据按格式保存到EXCEL(OLE)
- ABAP--关于SAP Control Framework(入门GUI编程的不错的基础介绍)