从应用服务器下载文件到本地机

上一篇 / 下一篇  2008-03-26 19:51:02 / 个人分类:ABAP

*----------------------------------------------------------------------*
* 功能名
* 作成者   :fengleihen@126.com
* 作成日   :2007/06/05
* 版本     :1.0
*----------------------------------------------------------------------*
* <处理概要>
*
*----------------------------------------------------------------------*
REPORT Y_DOWNLOAD_TO_LOCAL
       NO STANDARD PAGE HEADING
       MESSAGE-ID ZXX001.

SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME.
* server's File Path
  PARAMETERS: PA_FNAME LIKE RLGRAP-FILENAME OBLIGATORY.
* local's path
  PARAMETERS PA_LNAME  TYPE RLGRAP-FILENAME OBLIGATORY.

SELECTION-SCREEN END OF BLOCK BL1.

DATA: BEGIN OF REC_DATA,
        LINE(250)  TYPE C,                    "RECEIVE DATA
      END OF REC_DATA.
DATA: TBL_DATA LIKE TABLE OF REC_DATA.        "Table of TBL_DATA
DATA:
      FLG_ERROR TYPE C.
DATA: WK_STOP   TYPE C,                       "STOP FLAG
      WK_UCOMM  LIKE SY-UCOMM,                "User command
      WK_FNAME  TYPE STRING,
      WK_PATH   TYPE STRING,
      WK_FPATH  TYPE STRING,
      WK_NAME1  LIKE RLGRAP-FILENAME,         "File Name
      WK_NAME2  LIKE RLGRAP-FILENAME,         "File Directory
      WK_RETURN TYPE C.                       "Result of the query

*-----  Constants  ----------------------------------------------------*
CONSTANTS:
  CST_X           TYPE C                VALUE 'X',
  CST_MODULE01     TYPE MSGV1            VALUE 'WS_UPLOAD',
  CST_DAT       LIKE RLGRAP-FILETYPE VALUE 'DAT',
                                              "DAT
  CST_SPACE     TYPE C VALUE ' ',             "Blank
  CST_BIAS      TYPE C VALUE '\',             "Bias
  CST_F8(4)     TYPE C VALUE 'ONLI',          "F8
  CST_FE(2)     TYPE C VALUE 'FE',            "FE
  CST_DE(2)     TYPE C VALUE 'DE',            "'DE'
  CST_TXT(5)    TYPE C VALUE '*.TXT',         "*.TXT
  CST_TXTFL(16) TYPE C VALUE 'TEXT FILE|*.TXT|',
  CST_FILETYPE     TYPE RLGRAP-FILETYPE  VALUE 'ASC'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR PA_LNAME.
* Get file name
  PERFORM. HELP_DIS.
**&---------------------------------------------------------------------
**
**&     AT SELECTION-SCREEN
**&---------------------------------------------------------------------
**
*AT SELECTION-SCREEN.
*  PERFORM. CHECK_FILE.

START-OF-SELECTION.

  PERFORM. GET_DATA.
  PERFORM. DOWNLOAD_DATA.

FORM. DOWNLOAD_DATA.

  DATA: LO_FILENAMEO TYPE STRING,
        LO_NUM TYPE I.
  CHECK FLG_ERROR = SPACE.

  LO_FILENAMEO = PA_LNAME.
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
    EXPORTING
      FILENAME                = LO_FILENAMEO  "File path
      WRITE_FIELD_SEPARATOR   = CST_X
    CHANGING
      DATA_TAB                = TBL_DATA
    EXCEPTIONS
      FILE_WRITE_ERROR        = 1
      NO_BATCH                = 2
      GUI_REFUSE_FILETRANSFER = 3
      INVALID_TYPE            = 4
      NO_AUTHORITY            = 5
      UNKNOWN_ERROR           = 6
      HEADER_NOT_ALLOWED      = 7
      SEPARATOR_NOT_ALLOWED   = 8
      FILESIZE_NOT_ALLOWED    = 9
      HEADER_TOO_LONG         = 10
      DP_ERROR_CREATE         = 11
      DP_ERROR_SEND           = 12
      DP_ERROR_WRITE          = 13
      UNKNOWN_DP_ERROR        = 14
      ACCESS_DENIED           = 15
      DP_OUT_OF_MEMORY        = 16
      DISK_FULL               = 17
      DP_TIMEOUT              = 18
      FILE_NOT_FOUND          = 19
      DATAPROVIDER_EXCEPTION  = 20
      CONTROL_FLUSH_ERROR     = 21
      others                  = 22.

  IF SY-SUBRC <> 0.
*Cannot overwrite!
    MESSAGE S320.
  ELSE.
* The numbers of the records.
    DESCRIBE TABLE TBL_DATA LINES LO_NUM.
*  &1 records successfully download to file &2
    MESSAGE S307 WITH LO_NUM PA_LNAME.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       GET DATA
*----------------------------------------------------------------------*
FORM. GET_DATA.

  OPEN DATASET PA_FNAME FOR INPUT IN TEXT MODE ENCODING DEFAULT.
  IF SY-SUBRC <> 0.
* Failed to open file (file name : &1)
    MESSAGE S042 WITH PA_FNAME.
    FLG_ERROR = CST_X.
  ENDIF.
  CHECK FLG_ERROR = SPACE.
  DO.
    READ DATASET PA_FNAME INTO REC_DATA.
    IF SY-SUBRC <> 0      AND
       SY-SUBRC <> 4.
* Failed to read file (file name : &1)
      MESSAGE S297 WITH PA_FNAME.
      CLOSE DATASET PA_FNAME.
      FLG_ERROR = CST_X.
      EXIT.
    ENDIF.
    CHECK FLG_ERROR = SPACE.
    IF SY-SUBRC = 4.
      EXIT.
    ENDIF.
    APPEND REC_DATA TO TBL_DATA.
  ENDDO.
  CHECK FLG_ERROR = SPACE.
  CLOSE DATASET PA_FNAME.
  IF SY-SUBRC <> 0.
* Failed to close file (file name : &1)
    MESSAGE S044 WITH PA_FNAME.
    FLG_ERROR = CST_X.
  ENDIF.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  HELP_DIS
*&---------------------------------------------------------------------*
*       Get file name
*----------------------------------------------------------------------*
FORM. HELP_DIS.

  DATA: LO_LNAME  TYPE STRING,
        LO_TXT    TYPE STRING,
        LO_TXTFL  TYPE STRING.

  LO_LNAME = TEXT-040.                        "Local File Name
  LO_TXT   = CST_TXT.                         "*.TXT
  LO_TXTFL = CST_TXTFL.                       "TEXT FILE|*.TXT|
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    EXPORTING
      WINDOW_TITLE            = LO_LNAME      "Local File Name
      DEFAULT_EXTENSION       = LO_TXT        "*.TXT
      FILE_FILTER             = LO_TXTFL      "TEXT FILE|*.TXT|
    CHANGING
      FILENAME                = WK_FNAME      "File name
      PATH                    = WK_PATH       "File path
      FULLPATH                = WK_FPATH      "Full path
    EXCEPTIONS
      others                  = 1
          .
  PA_LNAME = WK_FPATH.

ENDFORM.                    " HELP_DIS


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-08-09  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 4736
  • 日志数: 757
  • 文件数: 1
  • 书签数: 4
  • 建立时间: 2008-01-17
  • 更新时间: 2008-08-05

RSS订阅

Open Toolbar