文件选择框总结
效果图片:
下面是实现的方法:
1.p_file为选择屏幕的文件名变量(以下同)
CALL FUNCTION 'F4_FILENAME'
* EXPORTING
* PROGRAM_NAME = SYST-CPROG
* DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = p_file .
2.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
* PROGRAM_NAME = SYST-REPID
* DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
STATIC = 'X'
MASK = '*.xls'
* FILEOPERATION = 'R'
CHANGING
FILE_NAME = p_file
* LOCATION_FLAG = 'P'
EXCEPTIONS
MASK_TOO_LONG = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
3.这个函数在ECC下已经过时,但是还可以使用
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
* DEF_FILENAME = ''
DEF_PATH = 'C:\'
MASK = '*.TXT,*.TXT.'
MODE = 'O'
* TITLE = ' '
IMPORTING
FILENAME = p_file
* RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
4. 其实WS_FILENAME_GET的替代函数
CALL FUNCTION 'TB_LIMIT_WS_FILENAME_GET'
EXPORTING
* DEF_FILENAME = ''
* DEF_PATH = 'D:\'
* MASK = ',*.*,*.*.'
MODE = 'O'
* TITLE = '选择文件'
IMPORTING
FILENAME = P_FILE
* PATH =
* FILE =
EXCEPTIONS
SELECTION_CANCEL = 1
SELECTION_ERROR = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
5.通过调用方法来实现,itab内的字段为filename,存放选择的文件的文件名。
DATA:itab type filetable.
data: num type i.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = '选择文件'
DEFAULT_EXTENSION = 'TXT'
* DEFAULT_FILENAME = '文件名.txt'
* FILE_FILTER =
* WITH_ENCODING =
* INITIAL_DIRECTORY = 'c:\'
* MULTISELECTION ='X' "是否允许选择多个
CHANGING
FILE_TABLE = itab
RC = num
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
浙公网安备 33010602011771号