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: 

Download FM

Former Member
0 Kudos

I need to replace "Download" call function with "GUI_Download". However it behaves differently in asking for file input through a popup screen. Has anyone faced the similar issue? What is the solution?

Thanks,

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Prakash,

Here is the solution. If you get any syntax errors..remove them...it works.

DATA:

l_p_file TYPE string,

lt_files TYPE filetable,

l_file TYPE file_table,

l_title TYPE string,

l_subrc TYPE i.

CLEAR p_file.

IF p_file IS INITIAL.

l_title = 'Select the file name'(015).

CALL METHOD cl_gui_frontend_services=>file_open_dialog

EXPORTING

window_title = l_title

CHANGING

file_table = lt_files

rc = l_subrc

EXCEPTIONS

file_open_dialog_failed = 1

cntl_error = 2

error_no_gui = 3

not_supported_by_gui = 4

OTHERS = 5.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CHECK sy-subrc = 0.

LOOP AT lt_files INTO l_file.

p_file = l_file.

EXIT.

ENDLOOP.

ENDIF.

l_p_file = p_file.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = l_p_file

filetype = 'ASC'

TABLES

data_tab = i_rec

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.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

Thanks,

Vamshi.

3 REPLIES 3

Former Member
0 Kudos

Prakash,

Here is the solution. If you get any syntax errors..remove them...it works.

DATA:

l_p_file TYPE string,

lt_files TYPE filetable,

l_file TYPE file_table,

l_title TYPE string,

l_subrc TYPE i.

CLEAR p_file.

IF p_file IS INITIAL.

l_title = 'Select the file name'(015).

CALL METHOD cl_gui_frontend_services=>file_open_dialog

EXPORTING

window_title = l_title

CHANGING

file_table = lt_files

rc = l_subrc

EXCEPTIONS

file_open_dialog_failed = 1

cntl_error = 2

error_no_gui = 3

not_supported_by_gui = 4

OTHERS = 5.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CHECK sy-subrc = 0.

LOOP AT lt_files INTO l_file.

p_file = l_file.

EXIT.

ENDLOOP.

ENDIF.

l_p_file = p_file.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = l_p_file

filetype = 'ASC'

TABLES

data_tab = i_rec

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.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

Thanks,

Vamshi.

Former Member
0 Kudos

I never used DOWNLOAD FM but for saving files with dialog popup

I used GUI_DOWNLOAD with CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG method befor as showned below:

  • get saving directory

call method CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG

exporting

WINDOW_TITLE = D_TITLE

DEFAULT_FILE_NAME = D_FILENAME

FILE_FILTER = D_MASK

INITIAL_DIRECTORY = 'D_TEMP

PROMPT_ON_OVERWRITE = ' '

changing

FILENAME = D_FILE

PATH = D_PATH

FULLPATH = D_FNAM

USER_ACTION = D_UACT

exceptions

CNTL_ERROR = 1

ERROR_NO_GUI = 2

NOT_SUPPORTED_BY_GUI = 3

OTHERS = 4.

if SY-SUBRC = 0.

call function 'GUI_DOWNLOAD'.

...

endif.

Hope it will help,

Regards

Former Member
0 Kudos

Hi,

Have a look on the following code,it contains all three function modules"DOWNLOAD","WS_DOWNLOAD" & "GUI_DOWNLOAD". execute by removing the comment for one function module and observe the difference.

THIS IS TO DOWNLOAD THE DATA FROM DICTIONARY TABLES TO LOCAL DISK.

TABLES: VBAK,VBAP.

DATA: BEGIN OF I_VBAK OCCURS 0,

VBELN LIKE VBAK-VBELN,

ERDAT LIKE VBAK-ERDAT,

ERNAM LIKE VBAK-ERNAM,

AUDAT LIKE VBAK-AUDAT,

VBTYP LIKE VBAK-VBTYP,

END OF I_VBAK.

DATA: BEGIN OF I_VBAP OCCURS 0,

VBELN LIKE VBAP-VBELN,

POSNR LIKE VBAP-POSNR,

MATNR LIKE VBAP-MATNR,

CHARG LIKE VBAP-CHARG,

MATKL LIKE VBAP-MATKL,

END OF I_VBAP.

DATA: BEGIN OF IT_VBAK OCCURS 0,

VBELN LIKE VBAK-VBELN,

ERDAT LIKE VBAK-ERDAT,

ERNAM LIKE VBAK-ERNAM,

AUDAT LIKE VBAK-AUDAT,

VBTYP LIKE VBAK-VBTYP,

POSNR LIKE VBAP-POSNR,

MATNR LIKE VBAP-MATNR,

CHARG LIKE VBAP-CHARG,

MATKL LIKE VBAP-MATKL,

END OF IT_VBAK.

SELECT VBELN ERDAT ERNAM AUDAT VBTYP FROM VBAK INTO TABLE I_VBAK.

SELECT VBELN POSNR MATNR CHARG MATKL FROM VBAP INTO TABLE I_VBAP.

SORT: I_VBAK BY VBELN,I_VBAP BY VBELN.

LOOP AT I_VBAK.

READ TABLE I_VBAP WITH KEY VBELN = I_VBAK-VBELN BINARY SEARCH.

IF SY-SUBRC = 0.

MOVE I_VBAK-VBELN TO IT_VBAK-VBELN.

MOVE I_VBAK-ERDAT TO IT_VBAK-ERDAT.

MOVE I_VBAK-ERNAM TO IT_VBAK-ERNAM.

MOVE I_VBAK-AUDAT TO IT_VBAK-AUDAT.

MOVE I_VBAK-VBTYP TO IT_VBAK-VBTYP.

MOVE I_VBAP-POSNR TO IT_VBAK-POSNR.

MOVE I_VBAP-MATNR TO IT_VBAK-MATNR.

MOVE I_VBAP-CHARG TO IT_VBAK-CHARG.

MOVE I_VBAP-MATKL TO IT_VBAK-MATKL.

APPEND IT_VBAK.

ENDIF.

ENDLOOP.

*& IT ASKS THE CONFIRMATION FOR THE FILE FORMATE,WE CAN CHANGE THE FILENAME DYNAMICALLY(e.g DOC-TXT,XLS)

*CALL FUNCTION 'DOWNLOAD'

  • EXPORTING

    • BIN_FILESIZE = ' '

    • CODEPAGE = ' '

  • FILENAME = 'D:\C1.TXT'

  • FILETYPE = 'DAT' "ASC is also another format

    • ITEM = ' '

    • MODE = ' '

    • WK1_N_FORMAT = ' '

    • WK1_N_SIZE = ' '

    • WK1_T_FORMAT = ' '

    • WK1_T_SIZE = ' '

    • FILEMASK_MASK = '.TXT'

    • FILEMASK_TEXT = ' '

    • FILETYPE_NO_CHANGE = 'X'

    • FILEMASK_ALL = ' '

  • FILETYPE_NO_SHOW = 'X' "THIS WILL NOT SHOW THE FILE TYPE(DAT) WHILE CONFIRMATION OF FILE NAME

  • SILENT = 'S'

    • COL_SELECT = ' '

    • COL_SELECTMASK = ' '

    • NO_AUTH_CHECK = ' '

    • IMPORTING

    • ACT_FILENAME =

    • ACT_FILETYPE =

    • FILESIZE =

    • CANCEL =

  • TABLES

  • DATA_TAB = IT_VBAK

    • FIELDNAMES =

  • EXCEPTIONS

  • INVALID_FILESIZE = 1

  • INVALID_TABLE_WIDTH = 2

  • INVALID_TYPE = 3

  • NO_BATCH = 4

  • UNKNOWN_ERROR = 5

  • GUI_REFUSE_FILETRANSFER = 6

  • OTHERS = 7

  • .

*IF SY-SUBRC <> 0.

    • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

*ENDIF.

*& this will not ask for the confirmation for the filename

*CALL FUNCTION 'WS_DOWNLOAD'

  • EXPORTING

    • BIN_FILESIZE = ' '

    • CODEPAGE = ' '

  • FILENAME = 'D:\C2.DOC'

  • FILETYPE = 'DAT'

    • MODE = ' '

    • WK1_N_FORMAT = ' '

    • WK1_N_SIZE = ' '

    • WK1_T_FORMAT = ' '

    • WK1_T_SIZE = ' '

    • COL_SELECT = ' '

    • COL_SELECTMASK = ' '

    • NO_AUTH_CHECK = ' '

    • IMPORTING

    • FILELENGTH =

  • TABLES

  • DATA_TAB = IT_VBAK

    • FIELDNAMES =

    • EXCEPTIONS

    • FILE_OPEN_ERROR = 1

    • FILE_WRITE_ERROR = 2

    • INVALID_FILESIZE = 3

    • INVALID_TYPE = 4

    • NO_BATCH = 5

    • UNKNOWN_ERROR = 6

    • INVALID_TABLE_WIDTH = 7

    • GUI_REFUSE_FILETRANSFER = 8

    • CUSTOMER_ERROR = 9

    • NO_AUTHORITY = 10

    • OTHERS = 11

  • .

*IF SY-SUBRC <> 0.

    • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

*ENDIF.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

  • BIN_FILESIZE =

FILENAME = 'D:\C5.DOC'

FILETYPE = 'ASC' "Separate Columns by Tabs in Case of ASCII Download

  • APPEND = ' '

WRITE_FIELD_SEPARATOR = 'X'

  • HEADER = '00'

  • TRUNC_TRAILING_BLANKS = ' '

  • WRITE_LF = 'X'

  • COL_SELECT = ' '

  • COL_SELECT_MASK = ' '

  • DAT_MODE = ' '

CONFIRM_OVERWRITE = 'X' "Overwrite The File Only After

Confirmation

  • NO_AUTH_CHECK = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • WRITE_BOM = ' '

  • TRUNC_TRAILING_BLANKS_EOL = 'X'

  • WK1_N_FORMAT = ' '

  • WK1_N_SIZE = ' '

  • WK1_T_FORMAT = ' '

  • WK1_T_SIZE = ' '

  • WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE

  • IMPORTING

  • FILELENGTH =

TABLES

DATA_TAB = IT_VBAK

  • FIELDNAMES =

  • 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.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

reward points,if it is useful.

Thank you

chandu.