Para gravar dados a partir de uma tabela interna para o servidor de apresentação usando um diálogo de usuário, use a função de Download. Para gravar dados de uma tabela interna para o servidor de apresentação sem o uso de uma caixa de diálogo do usuário, use a função WS_DOWNLOAD. Para mais informações, consulte a documentação do módulo de função (SE37).
Contudo o sistema SAP possui grande quantidade de funções obsoletas que ainda funcionam por compatibilidade com versões de programas mais antigos, a função Download é uma delas, você pode substituir esta função pela função chamada GUI_DOWNLOAD.
GUI_DOWNLOAD: http://help.sap.com/saphelp_nw70ehp2/helpdata/de/c7/5ab8ec178c44a8aacd1dcac3460db8/content.htm
Exemplo:
Neste exemplo extraímos dados de uma tabela interna em um arquivo Excel e o salvamos no computador local.
Abap
Function : DOWNLOAD
*&---------------------------------------------------------------------*
*& Report ZDATASERVER
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Escreve dados no servidor de apresentação
*&---------------------------------------------------------------------*
REPORT ZDATASERVER.
* Declara Variáveis
DATA: FNOME(128), FTIPO(3), FTAMANHO TYPE I.
* Cria tabela com duas colunas
TYPES: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
* Cria Tabela temporaria
TYPES ITAB TYPE LINE OCCURS 15.
DATA: LIN TYPE LINE, TAB TYPE ITAB.
* Cria e adiciona dados a tabela
DO 15 TIMES.
LIN-COL1 = SY-INDEX.
LIN-COL2 = SY-INDEX ** 2.
APPEND LIN TO TAB.
ENDDO.
* Chama a função de download
* Dat cria tipo do Excel
CALL FUNCTION 'DOWNLOAD'
EXPORTING
CODEPAGE = 'IBM'
FILENAME = 'C:\Desenvolvimento Aberto\temp\Planilha.xls'
FILETYPE = 'DAT'
ITEM = 'Teste Excel'
IMPORTING
ACT_FILENAME = FNOME
ACT_FILETYPE = FTIPO
FILESIZE = FTAMANHO
TABLES
DATA_TAB = TAB
EXCEPTIONS
INVALID_FILESIZE = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3.
* Imprime resultado
WRITE: 'SY-SUBRC:', SY-SUBRC,
/ 'Nome :', (60) FNOME,
/ 'Tipo :', FTIPO,
/ 'Tamanho :', FTAMANHO.
WRITE : / 'Conteudo do arquivo:', /.
LOOP AT tab INTO lin.
WRITE : / LIN-COL1 COLOR 3 INVERSE,
LIN-COL2 COLOR 3 INVERSE.
ENDLOOP.
Function : GUI_DOWNLOAD
*&---------------------------------------------------------------------*
*& Report ZDATASERVER2
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& GUI_DOWNLOAD
*&---------------------------------------------------------------------*
REPORT ZDATASERVER2.
* Declara Variáveis
DATA: FTAMANHO TYPE I.
* Cria tabela com duas colunas
TYPES: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
* Cria Tabela temporaria
TYPES ITAB TYPE LINE OCCURS 15.
DATA: LIN TYPE LINE, TAB TYPE ITAB.
* Cria e adiciona dados a tabela
DO 15 TIMES.
LIN-COL1 = SY-INDEX.
LIN-COL2 = SY-INDEX ** 2.
APPEND LIN TO TAB.
ENDDO.
* Chama a função de download
* Dat cria tipo do Excel
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = 'C:\Desenvolvimento Aberto\temp\Planilha2.xls'
FILETYPE = 'DAT'
IMPORTING
FILELENGTH = FTAMANHO
TABLES
DATA_TAB = TAB.
* Imprime resultado
WRITE: 'SY-SUBRC:', SY-SUBRC,
/ 'Tamanho :', FTAMANHO.
WRITE : / 'Conteudo do arquivo:', /.
LOOP AT tab INTO lin.
WRITE : / LIN-COL1 COLOR 3 INVERSE,
LIN-COL2 COLOR 3 INVERSE.
ENDLOOP.


