FORM UPLOAD_FILE USING VALUE(UP_FILE) TYPE RLGRAP-FILENAME
CHANGING CT_FILE TYPE TABLE.
DATA: LT_FILE_TMP TYPE STANDARD TABLE OF TYP_FILE_TMP,
LW_RAW TYPE TYP_FILE_TMP,
LW_FILE_NAME TYPE STRING,
LT_FIELDS TYPE STANDARD TABLE OF STRING,
LW_FIELDS TYPE STRING,
LW_LINES TYPE I,
LREF_FILE_STR TYPE REF TO DATA.
FIELD-SYMBOLS: <LFS_FILE> TYPE ANY,
<LFS_FIELD> TYPE ANY.
LW_FILE_NAME = UP_FILE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
EXPORTING
FILENAME = LW_FILE_NAME
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = SPACE
* HEADER_LENGTH = 0
* READ_BY_LINE = 'X'
* DAT_MODE = SPACE
* CODEPAGE = SPACE
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* VIRUS_SCAN_PROFILE =
* IMPORTING
* FILELENGTH =
* HEADER =
CHANGING
DATA_TAB = LT_FILE_TMP
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
NOT_SUPPORTED_BY_GUI = 17
ERROR_NO_GUI = 18
OTHERS = 19
.
IF SY-SUBRC = 0.
CREATE DATA LREF_FILE_STR LIKE LINE OF CT_FILE.
ASSIGN LREF_FILE_STR->* TO <LFS_FILE>.
LOOP AT LT_FILE_TMP INTO LW_RAW.
SPLIT LW_RAW-LINE AT ',' INTO TABLE LT_FIELDS.
DESCRIBE TABLE LT_FIELDS LINES LW_LINES.
LOOP AT LT_FIELDS INTO LW_FIELDS.
ASSIGN COMPONENT SY-TABIX OF STRUCTURE <LFS_FILE> TO <LFS_FIELD>.
<LFS_FIELD> = LW_FIELDS.
ENDLOOP.
APPEND <LFS_FILE> TO CT_FILE.
ENDLOOP.
ELSE.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " UPLOAD_FILE