您的位置:首页 > 编程语言

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: