上傳本地TXT文件到SAP內表
拿到txt文件中的數據后需要放到一個字符串中再根據txt中的分隔符分割
REPORT zrsd_nsg_0119.
DATA:tmp_path TYPE string,
v_string TYPE string.
DATA: BEGIN OF moq OCCURS 0,
ematn(15) TYPE c, "MPN
bstmi(15) TYPE c, "MOQ
moqdate LIKE sy-datum,
moqtime LIKE sy-uzeit,
moquser LIKE sy-uname,
END OF moq,
itab LIKE moq OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
PARAMETERS: m_fname LIKE rlgrap-filename MEMORY ID name.
SELECTION-SCREEN END OF BLOCK a1.
INITIALIZATION.
CLEAR : itab_output, tmp_path, m_fname.
REFRESH : itab_output.
MODIFY SCREEN.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR m_fname.
PERFORM get_filename USING m_fname.
START-OF-SELECTION.
PERFORM GET_MOQDATA.
*&-------------------------------------------------------------------
*
*& Form get_filename
*&--------------------------------------------------------------------
*
* text
*---------------------------------------------------------------------
*
* -->P_M_FNAME text
*---------------------------------------------------------------------
*
FORM get_filename USING v_fname.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = '*.txt'
def_path = 'd:\'
mask = ',TEXT document ,*.txt.'
mode = 'O'
title = 'Create GIN'
IMPORTING
filename = v_fname
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
tmp_path = v_fname.
CLEAR : moq.
REFRESH : moq.
IF sy-subrc = 0.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = tmp_path
filetype = 'ASC'
has_field_separator = ' ' "txt文件分隔符(空格)
TABLES
data_tab = itab
EXCEPTIONS
file_open_error = 1
file_read_error = 2.
ENDIF.
ENDFORM. " get_filename
*& Form GET_MOQDATA.
*&------------------------------------------------------------
FORM GET_MOQDATA.
DATA: length TYPE i.
DATA: item_count TYPE i VALUE '0'.
WRITE: /, 3'MPN', 20'MOQ', 40'DATE', 60'TIME', 80'USER',/.
LOOP AT itab INTO v_string.
SPLIT v_string AT ' ' INTO "根據空格分割每個字段
moq-ematn
moq-bstmi.
moq-moqdate = sy-datum. "日期 系統字段
moq-moqtime = sy-uzeit. "時間
moq-moquser = sy-uname. "用戶
APPEND moq.
WRITE: / moq-ematn UNDER 'MPN',
moq-bstmi UNDER 'MOQ',
moq-moqdate UNDER 'DATE',
moq-moqtime UNDER 'TIME',
moq-moquser UNDER 'USER',/.
ENDLOOP.
IF not moq is initial.
DESCRIBE TABLE moq LINES item_count.
WRITE:/ item_count,+'行數據寫入完成'.
ELSE.
WRITE:/,3'文件無數據'.
ENDIF.
ENDFORM.
測試結果
txt文件內容