此实例将演示用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.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端