You are on page 1of 4

REPORT ZTESTE_FAS_99 .

*$*$ Tipos
TYPES: BEGIN OF we_fonte,
linha(132),
END OF we_fonte.
TYPES: BEGIN OF we_texto,
id
LIKE textpool-id,
key
LIKE textpool-key,
entry LIKE textpool-entry,
length(10),
END OF we_texto.
TYPES: BEGIN OF we_arq,
linha(1024),
END OF we_arq.
*$*$ Tabelas Internas
DATA: wt_fonte TYPE STANDARD TABLE OF we_fonte WITH HEADER LINE,
wt_texto TYPE STANDARD TABLE OF textpool WITH HEADER LINE,
wt_arq TYPE STANDARD TABLE OF we_arq WITH HEADER LINE.
*$*$ Estruturas
DATA: wf_texto TYPE we_texto.
*$*$ Variveis
DATA: wv_filename LIKE rlgrap-filename,
wv_length TYPE i,
wv_tipo
TYPE c.
*$*$ Ranges
*$*$ Fields-Symbols
*$*$ Tela de Seleo
PARAMETERS: program LIKE rs38m-programm,
path
LIKE rlgrap-filename DEFAULT 'C:\TEMP\',
export RADIOBUTTON GROUP rad1,
import RADIOBUTTON GROUP rad1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR program.
CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
EXPORTING
object_type
= 'PROG'
object_name
= program
IMPORTING
object_name_selected = program
EXCEPTIONS
cancel
= 1
wrong_type
= 2
OTHERS
= 3.
IF sy-subrc NE 0.
CLEAR program.
ENDIF.
*$*$ Corpo do programa
START-OF-SELECTION.
IF export = 'X'.
PERFORM exporta_programa.

ELSE.
PERFORM importa_programa.
ENDIF.
*$*$ Sub-rotinas
*&---------------------------------------------------------------------*
*&
Form EXPORTA_PROGRAMA
*&---------------------------------------------------------------------*
FORM exporta_programa.
*** Recupera cdigo fonte
READ REPORT program INTO wt_fonte.
IF sy-subrc NE 0.
*
WRITE: / 'Erro na leitura do cdigo fonte:'(001), sy-subrc.
*
STOP.
EXIT.
ENDIF.
*** Recupera Textos
READ TEXTPOOL program INTO wt_texto LANGUAGE sy-langu.
IF sy-subrc NE 0.
REFRESH wt_texto.
ENDIF.
*** Monta tabela de sada.
LOOP AT wt_fonte.
wt_arq-linha = wt_fonte-linha.
APPEND wt_arq.
ENDLOOP.
LOOP AT wt_texto.
AT FIRST.
MOVE '@@@###$$$ Textos'(002) TO wt_arq-linha.
APPEND wt_arq.
ENDAT.
MOVE-CORRESPONDING wt_texto TO wf_texto.
wt_arq-linha = wf_texto.
APPEND wt_arq.
ENDLOOP.
*** Download
CONCATENATE path program '.TXT' INTO wv_filename.
wv_length = strlen( wv_filename ).
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
filename
TABLES
data_tab
EXCEPTIONS
file_open_error
file_write_error
invalid_filesize
invalid_type
no_batch
unknown_error
invalid_table_width
gui_refuse_filetransfer
customer_error

= wv_filename
= wt_arq
=
=
=
=
=
=
=
=
=

1
2
3
4
5
6
7
8
9

OTHERS
= 10.
* IF sy-subrc <> 0.
*
WRITE: / 'Erro na gravao do arquivo:'(003), sy-subrc.
* ELSE.
*
WRITE: / 'Download realizado com sucesso! Arquivo:'(004),
*
wv_filename(wv_length).
* ENDIF.
ENDFORM.
" EXPORTA_PROGRAMA
*&---------------------------------------------------------------------*
*&
Form IMPORTA_PROGRAMA
*&---------------------------------------------------------------------*
FORM importa_programa.
*** Carrega arquivo texto
CONCATENATE path program '.TXT' INTO wv_filename.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename
= wv_filename
TABLES
data_tab
= wt_arq
EXCEPTIONS
conversion_error
= 1
file_open_error
= 2
file_read_error
= 3
invalid_type
= 4
no_batch
= 5
unknown_error
= 6
invalid_table_width
= 7
gui_refuse_filetransfer = 8
customer_error
= 9
OTHERS
= 10.
IF sy-subrc <> 0.
WRITE: / 'Erro na carga do arquivo:'(005), sy-subrc.
STOP.
ENDIF.
*** Separa Cdigo fonte dos textos
wv_tipo = 'F'.
LOOP AT wt_arq.
IF wt_arq-linha = '@@@###$$$ Textos'(002).
wv_tipo = 'T'.
CONTINUE.
ENDIF.
CASE wv_tipo.
WHEN 'F'.
wt_fonte-linha = wt_arq-linha.
APPEND wt_fonte.
WHEN 'T'.
wf_texto = wt_arq-linha.
MOVE-CORRESPONDING wf_texto TO wt_texto.
APPEND wt_texto.
ENDCASE.
ENDLOOP.
*** Escreve novo cdigo fonte

INSERT REPORT program FROM wt_fonte.


IF sy-subrc NE 0.
WRITE: / 'Erro na gravao do cdigo fonte:'(006), sy-subrc.
STOP.
ENDIF.
*** Escreve novos textos
INSERT TEXTPOOL program FROM wt_texto LANGUAGE sy-langu.
IF sy-subrc EQ 0.
WRITE: / 'Programa carregado com sucesso!'(007), program.
ENDIF.
ENDFORM.

" IMPORTA_PROGRAMA
27

You might also like