Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

How to download file from application server

Former Member
0 Kudos

Hi Experts,

I developed report and execute in background mode. for this i used Open dataset transfer and close dataset . i got the requried output . But in this case user want downloaded file on presentation server so can anyone tell me How to download file from application server?

i know it is possible through Tcode CG3Y. but i want code in program.

9 REPLIES 9

Former Member
0 Kudos

using the program...

call the transction CG3Y and pass the required parameters from program itself...

using BDC...

" syntax...
call transaction 'CG3Y' using t_bdc_Data.

regards,

Siddarth

Former Member
0 Kudos

HI for downloading data to presentation server, you can use gui_download function module. Incase the file is in application server, you read it from application server with open dataset, read dataset, close dataset statements and then transfer the internal table to a file in presentation server with gui_download. Go through the link https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e0901cba-f49e-910-748c-d7ce4c0c4... for the code.

Former Member
0 Kudos

Use the Function Module GUI_DOWNLOAD

Former Member
0 Kudos

Hi Rahuls,

Search forum for the topic download file from application server you will find lots of sample codes

Regards,

Sravanthi

former_member156446
Active Contributor
0 Kudos

Check if this FM can be useful to you: C13Z_APPL_TO_FRONT_END , C13Z_FILE_DOWNLOAD_BINARY

or submit program in Bckg: RC1TCG3Y or RC1TCG3Z

Former Member
0 Kudos

Hi,

If you are using ECC ( 5.0 onwards) you can use CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD method to download data to PC .

Regards,

R

Former Member
0 Kudos

dear ,

you can also do this by using opendata set close data set .

thanx ankit

Former Member
0 Kudos

Hi Rahul,

Program for upload & download from FTP server


DATA: BEGIN OF MTAB_DATA OCCURS 0,
LINE(132) TYPE C,
END OF MTAB_DATA.
 
DATA: MC_PASSWORD(20) TYPE C,
MI_KEY TYPE I VALUE 26101957,
MI_PWD_LEN TYPE I,
MI_HANDLE TYPE I.
 
START-OF-SELECTION.
 
*-- Your SAP-UNIX FTP password (case sensitive)
MC_PASSWORD = 'password'.
 
DESCRIBE FIELD MC_PASSWORD LENGTH MI_PWD_LEN.
 
*-- FTP_CONNECT requires an encrypted password to work
CALL 'AB_RFC_X_SCRAMBLE_STRING'
     ID 'SOURCE' FIELD MC_PASSWORD ID 'KEY' FIELD MI_KEY
     ID 'SCR' FIELD 'X' ID 'DESTINATION' FIELD MC_PASSWORD
     ID 'DSTLEN' FIELD MI_PWD_LEN.
 
CALL FUNCTION 'FTP_CONNECT'
     EXPORTING
*-- Your SAP-UNIX FTP user name (case sensitive)
       USER            = 'userid'
       PASSWORD        = MC_PASSWORD
*-- Your SAP-UNIX server host name (case sensitive)
       HOST            = 'unix-host'
       RFC_DESTINATION = 'SAPFTP'
     IMPORTING
       HANDLE          = MI_HANDLE
     EXCEPTIONS
       NOT_CONNECTED   = 1
       OTHERS          = 2.
 
CHECK SY-SUBRC = 0.
 
CALL FUNCTION 'FTP_COMMAND'
     EXPORTING
       HANDLE = MI_HANDLE
       COMMAND = 'dir'
     TABLES
       DATA = MTAB_DATA
     EXCEPTIONS
       TCPIP_ERROR = 1
 
       COMMAND_ERROR = 2
       DATA_ERROR = 3
       OTHERS = 4.
 
IF SY-SUBRC = 0.
  LOOP AT MTAB_DATA.
    WRITE: / MTAB_DATA.
  ENDLOOP.
ELSE.
* do some error checking.
  WRITE: / 'Error in FTP Command'.
ENDIF.
 
CALL FUNCTION 'FTP_DISCONNECT'
     EXPORTING
       HANDLE = MI_HANDLE
     EXCEPTIONS
       OTHERS = 1.   

Regrads,

Prabhudas

oliver_sviszt
Explorer
0 Kudos

This code will download a file to your Client package by package, so it will also work for huge files.

*&---------------------------------------------------------------------*
*& Report  ZBI_DOWNLOAD_APPSERVER_FILE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zbi_download_appserver_file.


PARAMETERS: lv_as_fn TYPE sapb-sappfad
DEFAULT '/usr/sap/WBP/DVEBMGS00/work/ZBSPL_R01.CSV'.

PARAMETERS: lv_cl_fn TYPE string
DEFAULT 'C:\Users\atsvioli\Desktop\Budget Backups\ZBSPL_R01.CSV'.


START-OF-SELECTION.
  CONSTANTS blocksize TYPE i VALUE 524287.
  CONSTANTS packagesize TYPE i VALUE 8.

  TYPES ty_datablock(blocksize) TYPE x.
  DATA lv_fil TYPE epsf-epsfilnam.
  DATA lv_dir TYPE epsf-epsdirnam.

  DATA ls_data TYPE ty_datablock.
  DATA lt_data TYPE STANDARD TABLE OF ty_datablock.

  DATA lv_block_len TYPE i.
  DATA lv_package_len TYPE i.
  DATA lv_subrc TYPE sy-subrc.
  DATA lv_msgv1 LIKE sy-msgv1.
  DATA lv_processed_so_far TYPE p.
  DATA lv_append TYPE c.
  DATA lv_status TYPE string.
  DATA lv_filesize TYPE p.
  DATA lv_percent TYPE i.


  "Determine size
  SPLIT lv_as_fn AT '/' INTO lv_dir lv_fil.
  CALL FUNCTION 'EPS_GET_FILE_ATTRIBUTES'
    EXPORTING
      file_name      = lv_fil
      dir_name       = lv_dir
    IMPORTING
      file_size_long = lv_filesize.

  "Open the file on application server
  OPEN DATASET lv_as_fn FOR INPUT IN BINARY MODE MESSAGE lv_msgv1.
  IF sy-subrc <> 0.
    MESSAGE e048(cms) WITH lv_as_fn lv_msgv1 RAISING file_read_error.
    EXIT.
  ENDIF.

  lv_processed_so_far = 0.
  DO.

    REFRESH lt_data.
    lv_package_len = 0.
    DO packagesize TIMES.
      CLEAR ls_data.
      CLEAR lv_block_len.
      READ DATASET lv_as_fn INTO ls_data MAXIMUM LENGTH blocksize LENGTH lv_block_len.
      lv_subrc = sy-subrc.
      IF lv_block_len > 0.
        lv_package_len = lv_package_len + lv_block_len.
        APPEND ls_data TO lt_data.
      ENDIF.
      "End of file
      IF lv_subrc <> 0.
        EXIT.
      ENDIF.
    ENDDO.

    IF lv_package_len > 0.
      "Put file to client
      IF lv_processed_so_far = 0.
        lv_append = ' '.
      ELSE.
        lv_append = 'X'.
      ENDIF.
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
          bin_filesize         = lv_package_len
          filename             = lv_cl_fn
          filetype             = 'BIN'
          append               = lv_append
          show_transfer_status = abap_false
        TABLES
          data_tab             = lt_data.


      lv_processed_so_far = lv_processed_so_far + lv_package_len.
      "Status display
      lv_percent = lv_processed_so_far * 100 / lv_filesize.
      lv_status = |{ lv_percent }% - { lv_processed_so_far } bytes downloaded of { lv_filesize }|.
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING          "percentage = lv_percent - will make it fash
          text = lv_status.
    ENDIF.

    "End of file
    IF lv_subrc <> 0.
      EXIT.
    ENDIF.


  ENDDO.

  "Close the file on application server
  CLOSE DATASET lv_as_fn.