REPORT ZSAPeiros.
***************************************************************************
* NO SERVIDOR, UTILIZAR:
***************************************************************************
TRANSFER tabela-campo
TO tabela_dest-campo_dest
LENGTH 100. "Ou seja, 100 caracteres, adicionando brancos no final
***************************************************************************
* PARA ARQUIVOS LOCAIS, UTILIZAR:
***************************************************************************
* Tipo para tabela / estrutura principal
TYPES: BEGIN OF ty_data,
linha(20) TYPE c, "Linha
END OF ty_data.
* Variáveis globais
DATA: gv_campo_espc TYPE string, "Espaço convertido
gv_campo_qtde TYPE i, "Quantidade caracteres
gv_qtde_vezes TYPE i, "Quantidade espaços a serem inseridos
gv_campo_size(50) TYPE c. "Tamanho real do campo
* Tabela principal
DATA: gt_data TYPE TABLE OF ty_data. "Tabela
* Estrutura principal
DATA: wa_data TYPE ty_data. "Estrutura
* Encode do espaço em branco
gv_campo_espc = cl_abap_conv_in_ce=>uccp( '00a0' ).
* Tamanho real do campo
DESCRIBE FIELD wa_data-linha LENGTH gv_campo_size IN CHARACTER MODE.
* Registro 1
wa_data-linha = '12345'.
gv_campo_qtde = STRLEN( wa_data-linha ).
gv_qtde_vezes = gv_campo_size - gv_campo_qtde.
DO gv_qtde_vezes TIMES.
wa_data-linha+gv_campo_qtde(1) = gv_campo_espc.
gv_campo_qtde = gv_campo_qtde + 1.
ENDDO.
CALL FUNCTION 'SCP_REPLACE_STRANGE_CHARS'
EXPORTING
intext = wa_data-linha
IMPORTING
outtext = wa_data-linha
EXCEPTIONS
invalid_codepage = 1
codepage_mismatch = 2
internal_error = 3
cannot_convert = 4
fields_not_type_c = 5
OTHERS = 6.
APPEND wa_data TO gt_data.
* Registro 2
wa_data-linha = '67890'.
gv_campo_qtde = STRLEN( wa_data-linha ).
gv_qtde_vezes = gv_campo_size - gv_campo_qtde.
DO gv_qtde_vezes TIMES.
wa_data-linha+gv_campo_qtde(1) = gv_campo_espc.
gv_campo_qtde = gv_campo_qtde + 1.
ENDDO.
APPEND wa_data TO gt_data.
* Gera arquivo
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = 'C:\espacos_final.txt'
CHANGING
data_tab = gt_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
not_supported_by_gui = 22
error_no_gui = 23
OTHERS = 24.
IF sy-subrc IS INITIAL.
WRITE: / 'Arquivo gerado com sucesso!'.
ELSE.
WRITE: / 'Erro ao gerar arquivo!'.
ENDIF.
Conteúdo
Adicionar espaços em branco no final do registro
E quem já não precisou gerar um arquivo com espaços até o limite solicitado pelo cliente? Bom, eu já, e na época ninguém me ensinou, e agora está mastigadinho pra você.