分类:
2015-09-18 08:58:38
原文地址:ABAP程序中文件Check通常用到的模块 作者:janchen522
对于文件的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.