在 selection screen 中,经常要用到文件相关的对话框,比如选择本地文件上传,将数据从 iternal table 下载到本地等,为了增加程序的友好性,需要用到文件相关的对话框。本篇博客对使用对话框的常见方法进行汇总总结,以供参考。
如果不用文件对话框,最简单的方法是定义一个 localfile 类型的参数( parameter)。下面的代码演示了这种方法。
用户可以在选择屏幕中,手工输入文件的 full path:
KD_GET_FILENAME_ON_F4
为了增加程序的友好性,我们对上面的代码增加对话框功能。比较简单的方法是使用 KD_GET_FILENAME_ON_F4
函数。该函数提供一个对话框,返回用户选择的文件名。将上面的代码改写如下:
这个函数比较简单,只需要提供一个参数 (p_fname)。
WS_FILENAME_GET
该函数的作用也是提供文件对话框,返回文件的完整路径。SAP 对这个函数已经标注为过时 (obosete)。所以不建议在代码中使用,但我们可能会在之前的程序代码中碰到它。
函数的使用要点:
- 参数
filename
的类型为localfile
或RLGRAP-FILENAME
,Rlgrap-filename 的数据类型为 localfile,直接使用 localfile 比较方便 - Exception 部分的须包括 3 (selection_cancel),否则 出现程序 dump。
file_open_dialog
cl_gui_frontend_services 类的静态方法 file_open_dialog 方法提供对话框的方式获取文件的完整路径。这个方法功能比较强大,比如可以修饰文件选择框,指定默认选择路径,设置文件类型过滤,同时打开多个文件,返回用户操作等。RC 是返回值, 如果成功获取文件名,返回值 rc 值为 1
方法的参数补充示例:
DEFAULT_EXTENSION = '*.DOC'
DEFAULT_FILENAME = 'C:/TEST'
FILE_FILTER = 'All Files (*.*)|*.*|Excel Files (*.xls)|*.xls|Word files(*.doc)|*.doc'.
INITIAL_DIRECTORY = 'C:/'
MULTISELECTION = 'X'
F4_FILENAME
函数比较简单, 一般使用使用这个就够了。