Kali ini saya akan mencoba sharing bagaimana cara membaca file .txt untuk bisa dimasukkan ke dalam internal tabel. Mungkin ini bisa dikembangkan untuk dijadikan program upload data dari file .txt. OK, berikut source code untuk program read file .txt.
*&---------------------------------------------------------------------*
*& Report ZREAD_TXT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zread_txt.
DATA: BEGIN OF itab OCCURS 0,
matnr TYPE matnr,
matkl TYPE matkl,
meins TYPE meins,
maktx TYPE maktx,
END OF itab.
SELECTION-SCREEN BEGIN OF BLOCK g1 WITH FRAME TITLE text_101.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) text_102 FOR FIELD p_file.
PARAMETERS : p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK g1.
AT SELECTION-SCREEN OUTPUT.
text_101 = 'Selection parameter'.
text_102 = 'Chose .*txt file'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM f_get_filename CHANGING p_file.
START-OF-SELECTION.
PERFORM fm_read_data.
PERFORM fm_display_data.
*&---------------------------------------------------------------------*
*& Form f_get_filename
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FC_FILE text
*----------------------------------------------------------------------*
FORM f_get_filename CHANGING fc_file.
DATA ld_loc LIKE dxfields-location.
DATA ld_path LIKE dxfields-longpath." value '/usr/sap'.
CALL FUNCTION '/SAPDMC/LSM_F4_FRONTEND_FILE'
CHANGING
pathfile = fc_file
EXCEPTIONS
canceled_by_user = 1
system_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. " F_GET_FILENAME
*&---------------------------------------------------------------------*
*& Form fm_read_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_read_data.
DATA: lfilename TYPE string.
lfilename = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lfilename
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = itab
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "fm_read_data
*&---------------------------------------------------------------------*
*& Form fm_display_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_display_data .
LOOP AT itab.
WRITE : / itab-matnr,
itab-matkl,
itab-meins,
itab-maktx.
ENDLOOP.
ENDFORM. "fm_display_data
Oh ya lupa, format .txt harus sama dengan urut - urutannya internal tabel yang dibuat dan sparatortnya adalah TAB. Kurang lebih contoh file txtnya seperti gambar berikut :
Output Program :
Tidak ada komentar:
Posting Komentar