此实例将演示用CL_GUI_FRONTEND_SERVICES下的静态方法FILE_OPEN_DIALOG打开多个文件后打印出打开文件的名称。具体程式如下。
DATA FILE_TABLE TYPE FILE_TABLE. "引用FILE_TABLE对象
*SELECT-OPTIONS:i_file FOR FILE_TABLE NO INTERVALS.
DATA: lt_file_names TYPE FILETABLE,
lwa_file_name LIKE LINE OF lt_file_names,
lv_subrc TYPE I.
SELECT-OPTIONS: i_file FOR FILE_TABLE NO INTERVALS.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR i_file-low.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
* WINDOW_TITLE =
* DEFAULT_EXTENSION =
* DEFAULT_FILENAME =
* FILE_FILTER =
INITIAL_DIRECTORY = 'd:temp'
MULTISELECTION = 'X'
CHANGING
file_table = lt_file_names[]
rc = lv_subrc "打开文件的数量
* USER_ACTION =
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
i_file-sign = 'I'.
i_file-option = 'EQ'.
LOOP AT lt_file_names INTO lwa_file_name.
i_file-low = lwa_file_name.
APPEND i_file.
ENDLOOP.
START-OF-SELECTION.
WRITE:'打开文件的数量:',lv_subrc LEFT-JUSTIFIED.
LOOP AT i_file.
WRITE: / i_file-low.
ENDLOOP.
程序运行如下:
以下代碼功能與上面的類似:
"DATA FILE_TABLE TYPE FILE_TABLE. "引用FILE_TABLE对象
*SELECT-OPTIONS:i_file FOR FILE_TABLE NO INTERVALS.
DATA: lt_file_names TYPE FILETABLE,
lwa_file_name LIKE LINE OF lt_file_names,
lv_subrc TYPE I.
DATA:BEGIN OF i_file_table OCCURS 0,
i_file_name TYPE STRING,
END OF i_file_table.
DATA:my_file_table LIKE STANDARD TABLE OF i_file_table,
my_wa_file_table LIKE LINE OF my_file_table.
PARAMETERS: i_file LIKE FILE_TABLE OBLIGATORY LOWER CASE. "RLGRAP-FILENAME
AT SELECTION-SCREEN ON VALUE-REQUEST FOR i_file.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
* WINDOW_TITLE =
* DEFAULT_EXTENSION =
* DEFAULT_FILENAME =
* FILE_FILTER =
INITIAL_DIRECTORY = 'd:temp'
MULTISELECTION = 'X'
CHANGING
file_table = lt_file_names[]
rc = lv_subrc "打开文件的数量
* USER_ACTION =
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE lt_file_names INDEX 1 INTO lwa_file_name.
i_file = lwa_file_name.
LOOP AT lt_file_names INTO lwa_file_name.
"i_file_table-i_file_name = lwa_file_name. "有表頭
"APPEND i_file_table.
my_wa_file_table-i_file_name = lwa_file_name.
APPEND my_wa_file_table TO my_file_table.
CLEAR my_wa_file_table.
ENDLOOP.
START-OF-SELECTION.
IF my_file_table IS INITIAL.
MESSAGE 'IMPORT FILES IS EMPTY' TYPE 'S'.
EXIT.
ENDIF.
WRITE:'打开文件的数量:',lv_subrc LEFT-JUSTIFIED.
* LOOP AT i_file_table. "有表頭
* WRITE: / i_file_table-i_file_name.
* ENDLOOP.
LOOP AT my_file_table INTO my_wa_file_table.
WRITE: / my_wa_file_table-i_file_name.
ENDLOOP.