首页 > 应用开发 > IT综合 > UP_ERR_FILE_F4&CHECK
*&---------------------------------------------------------------------*
*& REPORT ZFILE_F4_CHECK
*&---------------------------------------------------------------------*
REPORT ZFILE_F4_CHECK.
*&---------------------------------------------------------------------*
*& ワーク定義
*&---------------------------------------------------------------------*
DATA:
W_PATH TYPE STRING. "ファイルパス
*&---------------------------------------------------------------------*
*& コンスタント値定義
*&---------------------------------------------------------------------*
CONSTANTS:
CNS_FLG_ON TYPE C VALUE 'X', "TRUE
CNS_FLG_OFF TYPE C VALUE SPACE. "SPACE
CONSTANTS:
CNS_TEXT01(12) TYPE C VALUE 'ファイル選択',
CNS_TEXT02(12) TYPE C VALUE 'ファイル保存',
CNS_MSG01(60) TYPE C
VALUE 'ファイル名が入力されていません。',
CNS_MSG02(60) TYPE C
VALUE 'アップロードファイル &1 は存在しません'.
*&---------------------------------------------------------------------*
*& フラグ定義
*&---------------------------------------------------------------------*
DATA:
FLG_FILE_EXIST TYPE C. "エラーファイルの存在フラグ
*&---------------------------------------------------------------------*
*& パラメータ定義
*&---------------------------------------------------------------------*
PARAMETERS:
P_UPLOAD TYPE RLGRAP-FILENAME OBLIGATORY, "アップロードファイル
P_ERROR TYPE RLGRAP-FILENAME OBLIGATORY. "エラーファイル
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN ON VALUE-REQUEST
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_UPLOAD.
* アップロードファイルの検索ヘルプ
PERFORM FRM_F4_UPLOAD_FILE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_ERROR.
* エラー出力ファイルの検索ヘルプ
PERFORM FRM_F4_ERROR_FILE.
*&---------------------------------------------------------------------*
*& AT SELECTION-SCREEN
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
* アップロードファイルの存在チェック
PERFORM FRM_CHECK_UPFILE.
* エラーファイルの存在チェック
PERFORM FRM_CHECK_ERFILE.
*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
* エラーファイルの上書き確認
PERFORM FRM_POPUP_CONFIRM.
*&---------------------------------------------------------------------*
*& Form FRM_F4_UPLOAD_FILE
*&---------------------------------------------------------------------*
* アップロードファイルの検索ヘルプ
*----------------------------------------------------------------------*
* なし
*----------------------------------------------------------------------*
FORM FRM_F4_UPLOAD_FILE.
* ローカル変数定義
DATA:
LW_TITLE TYPE STRING, "ダイアログの表題
LTD_FILETABLE TYPE FILETABLE, "選択したファイル
LW_RC TYPE I, "リターン値
LW_USER_ACTION TYPE I. "動作結果
* ダイアログ表題の設定
LW_TITLE = CNS_TEXT01.
* ファイル名の取得
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = LW_TITLE "ダイアログの表題
CHANGING
FILE_TABLE = LTD_FILETABLE "選択したファイル
RC = LW_RC "リターンコード
USER_ACTION = LW_USER_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. "CALLメソッド失敗時
* システムメッセージ出力
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
RETURN. "選択画面へ戻る
ENDIF.
* ファイル数かエラーの場合
IF LW_RC < 0.
RETURN. "選択画面へ戻る
ENDIF.
* 動作結果判定
IF LW_USER_ACTION = 0.
* [選択画面-アップロードファイル名]の設定
READ TABLE LTD_FILETABLE INTO P_UPLOAD INDEX 1.
ENDIF.
ENDFORM. " FRM_F4_UPLOAD_FILE
*&---------------------------------------------------------------------*
*& Form FRM_F4_ERROR_FILE
*&---------------------------------------------------------------------*
* エラー出力ファイルの検索ヘルプ
*----------------------------------------------------------------------*
* なし
*----------------------------------------------------------------------*
FORM FRM_F4_ERROR_FILE.
* ローカル変数定義
DATA:
LW_TITLE TYPE STRING, "ダイアログの表題
LW_FILENAME TYPE STRING, "ファイル名
LW_PATH TYPE STRING, "パース名
LW_FULLPATH TYPE STRING, "ファイルパース名
LW_USER_ACTION TYPE I. "動作結果
* ダイアログの表題の設定
LW_TITLE = CNS_TEXT02.
* ファイル名の取得
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = LW_TITLE "ダイアログの表題
* PROMPT_ON_OVERWRITE = SPACE "上書きダイアログ
CHANGING
FILENAME = LW_FILENAME "ファイル名
PATH = LW_PATH "パース名
FULLPATH = LW_FULLPATH "ファイルパース名
USER_ACTION = LW_USER_ACTION "動作結果
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
* リターンコード判定
IF SY-SUBRC <> 0. "CALLメソッド失敗時
* システムメッセージ出力
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
RETURN. "選択画面へ戻る
ENDIF.
* 動作結果判定
IF LW_USER_ACTION = 0.
P_ERROR = LW_FULLPATH.
ENDIF.
ENDFORM. " FRM_F4_ERROR_FILE
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_UPFILE
*&---------------------------------------------------------------------*
* アップロードファイルの存在チェック
*----------------------------------------------------------------------*
* なし
*----------------------------------------------------------------------*
FORM FRM_CHECK_UPFILE.
* ローカル変数定義
DATA LW_RESULT TYPE C. "チェック結果
* ファイルの存在チェック
PERFORM FRM_CHECK_FILE USING P_UPLOAD
'P_UPLOAD'
CHANGING LW_RESULT.
* 結果判定
IF LW_RESULT = CNS_FLG_OFF.
* カーソルの設定
SET CURSOR FIELD 'P_UPLOAD'.
* エラーメッセージ:[アップロードファイル &1 は存在しません]
MESSAGE CNS_MSG02 TYPE 'E'.
ENDIF.
ENDFORM. " FRM_CHECK_UPFILE
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_FILE
*&---------------------------------------------------------------------*
* ファイルの存在チェック
*----------------------------------------------------------------------*
* --> I_FILE ファイル(USINGパラメータ)
* --> I_CURSOR カーソル(USINGパラメータ)
* <-- O_RESULT 結果 (CHANGINGパラメータ)
*----------------------------------------------------------------------*
FORM FRM_CHECK_FILE USING I_FILE TYPE ANY
I_CURSOR TYPE ANY
CHANGING O_RESULT.
* ローカル変数定義
DATA: LW_FILE TYPE STRING. "ファイル名
* クリア
CLEAR:
O_RESULT.
LW_FILE = I_FILE.
* ファイルの存在チェック
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST
EXPORTING
FILE = LW_FILE "ファイル名
RECEIVING
RESULT = O_RESULT "チェック結果
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
WRONG_PARAMETER = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
* リターンコード判定
IF SY-SUBRC <> 0. "CALLメソッド失敗時
* カーソルの設定
SET CURSOR FIELD I_CURSOR.
* システムメッセージ出力
MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " FRM_CHECK_FILE
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_ERFILE
*&---------------------------------------------------------------------*
* エラーファイルの存在チェック
*----------------------------------------------------------------------*
* なし
*----------------------------------------------------------------------*
FORM FRM_CHECK_ERFILE.
* パスとファイル名に分割する
PERFORM FRM_SPLIT_PATH_FILE.
* パスの存在チェック
PERFORM FRM_CHECK_PATH.
* エラーファイルの存在チェック
PERFORM FRM_CHECK_FILE USING P_ERROR
'P_ERROR'
CHANGING FLG_FILE_EXIST.
ENDFORM. " FRM_CHECK_ERFILE
*&---------------------------------------------------------------------*
*& Form FRM_SPLIT_PATH_FILE
*&---------------------------------------------------------------------*
* パスとファイル名に分割する
*----------------------------------------------------------------------*
* なし
*----------------------------------------------------------------------*
FORM FRM_SPLIT_PATH_FILE.
* ローカル変数定義
DATA LW_FILENAME(128) TYPE C. "ファイル名
* パスとファイル名に分割する
CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'
EXPORTING
FULL_NAME = P_ERROR "パスとファイル名
IMPORTING
STRIPPED_NAME = LW_FILENAME "ファイル名
FILE_PATH = W_PATH "パス
EXCEPTIONS
X_ERROR = 1
OTHERS = 2.
* リターンコード判定
IF SY-SUBRC <> 0. "CALLメソッド失敗時
* カーソルの設定
SET CURSOR FIELD 'P_ERROR'.
* システムメッセージ出力
MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* ファイル名存在しない時
IF LW_FILENAME IS INITIAL.
* カーソルの設定
SET CURSOR FIELD 'P_ERROR'.
* エラーメッセージ:[&1 が入力されていません。]
MESSAGE CNS_MSG01 TYPE 'E'.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8214011/viewspace-976207/ ,如需转载,请注明出处,否则将追究法律责任。