ABAP程式中檔案Check通常用到的模組

mmccking發表於2007-09-24
檔案存在,路經,檔名,指定開啟的檔案,指定寫入的檔案。[@more@]

對於檔案的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.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8356764/viewspace-971452/,如需轉載,請註明出處,否則將追究法律責任。

相關文章