データファイルのアップロードとダウンロード

来源:互联网 发布:淘宝复制大师 编辑:程序博客网 时间:2024/05/19 08:38

■ サーバファイル

 ① データファイルの保存先を取得(論理バス(T-cd:file) → 物理パス)

 CALL FUNCTION 'FILE_GET_NAME_USING_PATH'
    EXPORTING
      LOGICAL_PATH                     = LOGIC_FILEPATH  " 論理バス
      FILE_NAME                        = LOGIC_FILENAME  " ファイル名
    IMPORTING
      FILE_NAME_WITH_PATH              = PHYS_FILEPNAME          " 物理パス+ファイル名
    EXCEPTIONS
      PATH_NOT_FOUND                   = 1
      MISSING_PARAMETER                = 2
      OPERATING_SYSTEM_NOT_FOUND       = 3
      FILE_SYSTEM_NOT_FOUND            = 4
      OTHERS                           = 5.

  ※必要があれば、汎用モジュール「SPLIT_FILENAME」を利用して、完全パスからパスとファイル名を分離可能です。
 
 
 ② ファイルダウンロード場合、排他ロック処理
  
 CALL FUNCTION 'ENQUEUE_E_TABLE'
    EXPORTING
      MODE_RSTABLE   = 'X'
      TABNAME        =
      VARKEY         =   "ファイル名
    EXCEPTIONS
      FOREIGN_LOCK   = 1
      SYSTEM_FAILURE = 2
      OTHERS         = 3.
 
 ③ ファイルのアップロードとダウンロード
  
  ・ファイルオープン
   OPEN DATASET PHYS_FILEPNAME
     FOR INPUT(ダウンロード)/ FOR OUTPUT(アップロード)
                   IN BINARY/TEXT MODE.
    
    ・データの読込と転送
   READ DATASET PHYS_FILEPNAME INTO itab.  (ダウンロード)
   TRANSFER itab TO PHYS_FILEPNAME         (アップロード)
   
      ※一般的、内部テーブル:itabの項目タイプはC(length:レコードの最大文字数)である。
 ですので、内部テーブル:itab ⇔ 業務内部テーブルに変更しなければならない。
 
   ・ダウンロードの場合、(READ DATASET後) 内部テーブル:itab ⇒ 業務内部テーブル
 SPLIT命令を利用して、内部テーブル:itabの区切り符号
 (例えば:TABコード(CL_ABAP_CHAR_UTILITIES=>horizontal_tab))に従い、
     内部テーブル:itab の内容が分割 されます 
       
 DESCRIBE FIELD stru2(業務構造) LENGTH ilen IN CHARACTER MODE.
 
 LOOP AT itab INTO stru1.
       stru2 = stru1-char2000(ilen).
          APPEND stru2 TO itab2(業務内部テーブル).
        ENDLOOP.

   ・ アップロードの場合、(TRANSFER前)  業務内部テーブル ⇒ 内部テーブル:itab
 CONCATENATE命令(SEPARATED BY 区切り符号)を利用して、
    業務内部テーブルの各項目が連結されます

  ・ファイルクローズ
   CLOSE DATASET PHYS_FILEPNAME

 ④ ファイルダウンロード場合、排他ロック解除処理 
  CALL FUNCTION 'DEQUEUE_E_TABLE'
    EXPORTING
      MODE_RSTABLE = 'X'
      TABNAME      =
      VARKEY       =


■ ローカルファイル
 
 ① ファイルを保存ダイアログを表示
 CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    CHANGING
      FILENAME             = FILENAME
      PATH                 = PATH
      FULLPATH             = FULLPATH
    EXCEPTIONS
      CNTL_ERROR           = 1
      ERROR_NO_GUI         = 2
      NOT_SUPPORTED_BY_GUI = 3
      OTHERS               = 4
          .

 ② ファイルのアップロードとダウンロード
 
  * アップロード
 CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
    EXPORTING
      FILENAME                  = FULLPATH
      FILETYPE                  = 'DAT'
    CHANGING
      DATA_TAB                  = itab
          .
 
  * ダウンロード
 CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
    EXPORTING
      FILENAME                  = FULLPATH
      FILETYPE                  = 'DAT'
    CHANGING
      DATA_TAB                  = itab
          .