5種讀取文件路徑的方式各有千秋,最推薦使用類方式。
REPORT YLTL_TEST.
PARAMETERS P_FILE TYPE RLGRAP-FILENAME.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
* PERFORM FRM_GET_EXCEL1. "不能限制上傳文件類型
* PERFORM FRM_GET_EXCEL2. "可以限制上傳文件類型,不能設置默認路徑
* PERFORM FRM_GET_EXCEL3. "可以限制上傳文件類型,能設置默認路徑,默認文件
* PERFORM FRM_GET_EXCEL4. "可以限制上傳文件類型,能設置默認路徑,默認文件,但系統報已過時
* PERFORM FRM_GET_EXCEL5. "可以限制上傳文件類型,能設置默認路徑,默認文件,能上傳多個文件
*&---------------------------------------------------------------------*
*& Form FRM_GET_EXCEL1
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_GET_EXCEL1 .
CALL FUNCTION 'F4_FILENAME'
* EXPORTING
* PROGRAM_NAME = SYST-CPROG
* DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_EXCEL2
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_GET_EXCEL2 .
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
* PROGRAM_NAME = SYST-REPID
* DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
* STATIC = ' '
MASK = 'All Files (*.*)|*.*|Excel Files (*.xls)|*.xls|Word files(*.doc)|*.doc'
* FILEOPERATION = 'R'
* PATH =
CHANGING
FILE_NAME = P_FILE
* LOCATION_FLAG = 'P'
* EXCEPTIONS
* MASK_TOO_LONG = 1
* OTHERS = 2
.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_EXCEL3
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_GET_EXCEL3 .
CALL FUNCTION 'TB_LIMIT_WS_FILENAME_GET'
EXPORTING
* DEF_FILENAME = ' '
DEF_PATH = 'D:\'
MASK = 'All Files (*.*)|*.*|Excel Files (*.xls)|*.xls|Word files(*.doc)|*.doc'
* MODE = ' '
* TITLE = ' '
IMPORTING
FILENAME = P_FILE
* PATH =
* FILE =
* EXCEPTIONS
* SELECTION_CANCEL = 1
* SELECTION_ERROR = 2
* OTHERS = 3
.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_EXCEL4
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_GET_EXCEL4 .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
* DEF_FILENAME = ' '
DEF_PATH = 'D:\'
MASK = ',All Files (*.*)|*.*|Excel Files (*.xls)|*.xls|Word files(*.doc)|*.doc'"必須加一個逗號
* MODE = ' '
* TITLE = ' '
IMPORTING
FILENAME = P_FILE
* RC =
* EXCEPTIONS
* INV_WINSYS = 1
* NO_BATCH = 2
* SELECTION_CANCEL = 3
* SELECTION_ERROR = 4
* OTHERS = 5
.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_EXCEL5
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_GET_EXCEL5 .
DATA LT_TAB TYPE FILETABLE.
DATA LS_TAB LIKE LINE OF LT_TAB.
DATA L_RC TYPE I.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
* WINDOW_TITLE =
* DEFAULT_EXTENSION = ''
* DEFAULT_FILENAME =
FILE_FILTER = 'All Files (*.*)|*.*|Excel Files (*.xls)|*.xls|Word files(*.doc)|*.doc'
* WITH_ENCODING =
* INITIAL_DIRECTORY =
MULTISELECTION = 'X'
CHANGING
FILE_TABLE = LT_TAB
RC = L_RC
* USER_ACTION =
* FILE_ENCODING =
* EXCEPTIONS
* FILE_OPEN_DIALOG_FAILED = 1
* CNTL_ERROR = 2
* ERROR_NO_GUI = 3
* NOT_SUPPORTED_BY_GUI = 4
* OTHERS = 5
.
READ TABLE LT_TAB INTO LS_TAB INDEX 1.
P_FILE = LS_TAB-FILENAME.
ENDFORM.