支持mmccking版权,仅供学习!SAP操作windows文件(CL_GUI_FRONTEND_SERVICES)博客分类: · abapwindowsabap ABAP程序中文件Check通常用到的模块===========================================================作者: mmccking(http://mmccking.itpub.net)发表于:2007.09.24 15:12分类: SAP和ABAP/4 出处:http://mmccking.itpub.net/post/33129/398631--------------------------------------------------------------- 文件存在,路经,文件名,指定打开的文件,指定写入的文件。对于文件的CHECK:CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXISTEXPORTINGFILE = LW_FILERECEIVINGRESULT = LW_RESULTEXCEPTIONSCNTL_ERROR = 1ERROR_NO_GUI = 2WRONG_PARAMETER = 3NOT_SUPPORTED_BY_GUI = 4OTHERS = 5.方法调用是否成功判定:(例如:输入不合法)IF SY-SUBRC 0.SET CURSOR FIELD 'P_UPFILE'. "カーソルをセット*----- システムメッセージ出力MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNOWITH 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'EXPORTINGFULL_NAME = P_ERFILEIMPORTINGSTRIPPED_NAME = W_FILE “文件名FILE_PATH = P_O_PATH “路径EXCEPTIONSX_ERROR = 1OTHERS = 2. 对上面分割得到的路径进行检查:CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_EXISTEXPORTINGDIRECTORY = LW_PATHRECEIVINGRESULT = LW_RESULTEXCEPTIONSCNTL_ERROR = 1ERROR_NO_GUI = 2WRONG_PARAMETER = 3NOT_SUPPORTED_BY_GUI = 4OTHERS = 5. 方法调用是否成功判定:(例如:输入不合法)IF SY-SUBRC 0.SET CURSOR FIELD 'P_ERFILE'. "カーソルをセットMESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNOWITH 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 METHODCL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOGEXPORTINGWINDOW_TITLE = LW_TITLE "ファイル選択CHANGINGFILE_TABLE = LTD_FILERC = LW_RETURN "リターン値USER_ACTION = LW_ACTION "動作結果EXCEPTIONSFILE_OPEN_DIALOG_FAILED = 1CNTL_ERROR = 2ERROR_NO_GUI = 3NOT_SUPPORTED_BY_GUI = 4OTHERS = 5. *----- リターンコード判定IF SY-SUBRC0. "メソッド失敗時SET CURSOR FIELD 'P_UPFILE'. "カーソルをセット*----- システムメッセージ出力MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.RETURN.ENDIF. *----- 結果情報判定IF LW_RETURNRETURN. "選択画面へ戻る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 METHODCL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOGEXPORTINGWINDOW_TITLE = LW_TITLE "エラー出力ファイル選択CHANGINGFILENAME = LW_FILENAME "ファイル名PATH = LW_PATH "パース名FULLPATH = LW_FULLPATH "ファイルパース名USER_ACTION = LW_ACTION "動作結果EXCEPTIONSCNTL_ERROR = 1ERROR_NO_GUI = 2NOT_SUPPORTED_BY_GUI = 3OTHERS = 4. *----- リターンコード判定IF SY-SUBRC 0. "CALL メソッド失敗時SET CURSOR FIELD 'P_ERFILE'. "カーソルをセット*----- システムメッセージ出力MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNOWITH 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_CREATEEXPORTINGDIRECTORY = 'E:\TESTDIR'CHANGINGRC = RC.2.文件夹的删除下面方法删除E盘下TESTDIR文件夹CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_DELETEEXPORTINGDIRECTORY = 'E:\TESTDIR'CHANGINGRC = RC.3.目录选择框CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSEEXPORTINGWINDOW_TITLE = '选择目录'INITIAL_FOLDER = 'D:\'CHANGINGSELECTED_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 获取磁盘可用空间单位MBGET_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 删除注册KEYREGISTRY_DELETE_VALUE 删除注册key值 10-03 22:14