SAP操作windows文件(CL_GUI_FRONTEND_SERVICES)

ABAP程序中文件Check通常用到的模块
===========================================================
文件存在,路经,文件名,指定打开的文件,指定写入的文件。

对于文件的CHECK

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST

EXPORTING

FILE = LW_FILE

RECEIVING

RESULT = LW_RESULT

EXCEPTIONS

CNTL_ERROR = 1

ERROR_NO_GUI = 2

WRONG_PARAMETER = 3

NOT_SUPPORTED_BY_GUI = 4

OTHERS = 5.

方法调用是否成功判定:(例如:输入不合法)

IF SY-SUBRC <> 0.

SET CURSOR FIELD 'P_UPFILE'. "カーソルをセット

*----- システムメッセージ出力

MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

 

文件存在判定:

*----- チェック結果判定

IF LW_RESULT <> CNS_TRUE. "ファイル存在しない

SET CURSOR FIELD 'P_UPFILE'. "カーソルをセット

*----- MSG: アップロードファイル &1 は存在しません

MESSAGE E116(ZNKCC1) WITH P_UPFILE.

ENDIF.

分割文件路径和文件名:

CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'

EXPORTING

FULL_NAME = P_ERFILE

IMPORTING

STRIPPED_NAME = W_FILE “文件名

FILE_PATH = P_O_PATH “路径

EXCEPTIONS

X_ERROR = 1

OTHERS = 2.

 

对上面分割得到的路径进行检查:

CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_EXIST

EXPORTING

DIRECTORY = LW_PATH

RECEIVING

RESULT = LW_RESULT

EXCEPTIONS

CNTL_ERROR = 1

ERROR_NO_GUI = 2

WRONG_PARAMETER = 3

NOT_SUPPORTED_BY_GUI = 4

OTHERS = 5.

 

方法调用是否成功判定:(例如:输入不合法)

IF SY-SUBRC <> 0.

SET CURSOR FIELD 'P_ERFILE'. "カーソルをセット

MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

该路径目录存在判定:

*----- 結果情報判定

IF LW_RESULT <> CNS_TRUE. "パス存在しない時

SET CURSOR FIELD 'P_ERFILE'. "カーソルをセット

*----- MSG: エラーファイルのディレクトリ &1 は存在しません

MESSAGE E152(ZNKCC1) WITH P_I_PATH.

ENDIF.

************************************************************************************

文件的F4help

(在AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_UPFILE事件下)

指定要打开或者取得数据的文件地址:

*----- アップロードファイルの検索ヘルプ

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

EXPORTING

WINDOW_TITLE = LW_TITLE "ファイル選択

CHANGING

FILE_TABLE = LTD_FILE

RC = LW_RETURN "リターン値

USER_ACTION = LW_ACTION "動作結果

EXCEPTIONS

FILE_OPEN_DIALOG_FAILED = 1

CNTL_ERROR = 2

ERROR_NO_GUI = 3

NOT_SUPPORTED_BY_GUI = 4

OTHERS = 5.

 

*----- リターンコード判定

IF SY-SUBRC <> 0. "メソッド失敗時

SET CURSOR FIELD 'P_UPFILE'. "カーソルをセット

*----- システムメッセージ出力

MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

RETURN.

ENDIF.

 

*----- 結果情報判定

IF LW_RETURN < 0.

RETURN. "選択画面へ戻る

ENDIF.

 

*----- 結果情報判定

IF LW_ACTION = 0.

*----- [選択ファイルテーブル]の1件目を[アップロードファイル名]設定

READ TABLE LTD_FILE INTO LTH_FILE INDEX 1.

*----- リターンコード判定

IF SY-SUBRC = 0.

P_UPFILE = LTH_FILE-FILENAME.

ENDIF.

ENDIF.

 

指定数据保存的文件地址:

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_ERFILE事件下。

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG

EXPORTING

WINDOW_TITLE = LW_TITLE "エラー出力ファイル選択

CHANGING

FILENAME = LW_FILENAME "ファイル名

PATH = LW_PATH "パース名

FULLPATH = LW_FULLPATH "ファイルパース名

USER_ACTION = LW_ACTION "動作結果

EXCEPTIONS

CNTL_ERROR = 1

ERROR_NO_GUI = 2

NOT_SUPPORTED_BY_GUI = 3

OTHERS = 4.

 

*----- リターンコード判定

IF SY-SUBRC <> 0. "CALL メソッド失敗時

SET CURSOR FIELD 'P_ERFILE'. "カーソルをセット

*----- システムメッセージ出力

MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

RETURN. "選択画面へ戻る

ENDIF.

 

*----- 結果情報判定

IF LW_ACTION = 0.

*----- [ファイルパース名]を[選択画面-エラーファイル名]に設定する

P_ERFILE = LW_FULLPATH.

ENDIF.

---------------------------------华丽分割--------------------------------------

SAP操作windows文件(CL_GUI_FRONTEND_SERVICES)

下面的类可以对文件夹和文件进行操作:
CL_GUI_FRONTEND_SERVICES
这个类下面的方法均为静态方法,引用的时候以=>来引用方法

 

1:创建文件夹
参数说明:RC为返回码类型为sy-subrc。
CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_CREATE
EXPORTING
DIRECTORY = 'E:\TESTDIR'
CHANGING
RC = RC.

2.文件夹的删除
下面方法删除E盘下TESTDIR文件夹
CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_DELETE
EXPORTING
DIRECTORY = 'E:\TESTDIR'
CHANGING
RC = RC.

3.目录选择框
CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE
EXPORTING
WINDOW_TITLE = '选择目录'
INITIAL_FOLDER = 'D:\'
CHANGING
SELECTED_FOLDER = DIRPATH."该参数为string类型


其中exporting下面的参数均为可选。可以注释掉。

 

 

以下对该类下的方法不做详细举例,只做剪短说明。

 

DIRECTORY_EXIST 检查指定的目录文件夹是否存在


DIRECTORY_GET_CURRENT 返回当前所在路径(个人感觉不好用)


DIRECTORY_LIST_FILES 枚举指定目录下的文件及其文件夹。其中FILE_TABLE参数为FILE_INFO类型的标准表,无表头


DIRECTORY_SET_CURRENT 设置当前活动目录(不建议使用)

EXECUTE 执行windows程序或打开windows下文件夹


FILE_COPY 文件的复制


FILE_DELETE 删除一个文件


FILE_EXIST 判断指定文件是否存在


FILE_GET_ATTRIBUTES 取得指定文件的属性(只读,隐藏,Normal,active)


FILE_GET_SIZE 返回文件大小(不好用啊)


FILE_SET_ATTRIBUTES 设置文件的属性


GET_COMPUTER_NAME 获取计算机名称


GET_DESKTOP_DIRECTORY 获取桌面所在目录


GET_DRIVE_FREE_SPACE_MEGABYTE 获取磁盘可用空间单位MB


GET_DRIVE_TYPE 获得磁盘类型(不好用)


GET_GUI_VERSION 获得gui的版本


GET_IP_ADDRESS 获取当前主机的IP地址


GET_PLATFORM 返回操作系统版本


GET_SAPGUI_WORKDIR 返回SAP GUI工作目录


GET_SAPLOGON_ENCODING 获取SAP登陆的代码页


GET_SYSTEM_DIRECTORY 获得系统目录


GET_TEMP_DIRECTORY 获取TEMP目录


GET_UPLOAD_DOWNLOAD_PATH 获得上传和下载文件的路径

GET_USER_NAME 获得用户名


GET_WINDOWS_DIRECTORY 取得windows目录路径


IS_TERMINAL_SERVER 检查GUI是否在终端服务器上运行


REGISTRY_DELETE_KEY 删除注册KEY


REGISTRY_DELETE_VALUE 删除注册key值

猜你喜欢

转载自mahone.iteye.com/blog/1161159
cl