ITPub博客

首页 > 应用开发 > IT综合 > UP_ERR_FILE_F4&CHECK

UP_ERR_FILE_F4&CHECK

原创 IT综合 作者:sapkitty 时间:2007-09-12 17:45:34 0 删除 编辑
设置上传文件与错误文件的F4 Help,并对文件是否存在进行检查。[@more@]

*&---------------------------------------------------------------------*

*& 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博客 ” ,链接:http://blog.itpub.net/8214011/viewspace-976207/,如需转载,请注明出处,否则将追究法律责任。

上一篇: BDC SESSION
下一篇: ABAP报表的事件
请登录后发表评论 登录
全部评论

注册时间:2008-08-04

  • 博文量
    62
  • 访问量
    201825