ref_container
*======================================================================*
* TELA DE SELEO
*======================================================================*
* Excluir Tabelas
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-002.
*
PARAMETERS: p_cpla RADIOBUTTON GROUP g DEFAULT 'X' MODIF ID gr USER-COMMAND tra
ta_tela,
p_limp RADIOBUTTON GROUP g MODIF ID gr.
*
SELECTION-SCREEN END OF BLOCK b3.
*
* Carregar Planilha
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
*
PARAMETERS: p_file
TYPE localfile
MODIF ID gr1.
*
SELECTION-SCREEN SKIP.
*
PARAMETERS vg_rows
TYPE i DEFAULT 881 MODIF ID gr1. "Quantidade de linhas
*PARAMETERS vg_cols
TYPE i DEFAULT 25 MODIF ID gr1. "Quantidade de colun
as
*
SELECTION-SCREEN SKIP.
*
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
"Ajuda de pesquisa para exibio do caminho que ser salvo o arquivo
PERFORM pesquisa_dir.
AT SELECTION-SCREEN OUTPUT.
PERFORM trata_tela.
*======================================================================*
* INICIALIZAO
*======================================================================*
INITIALIZATION.
"Monta o container para a leitura da planilha
PERFORM inicializa_container_excel.
*======================================================================*
* INCIO DO PROCESSAMENTO
*======================================================================*
START-OF-SELECTION.
"Se foi selecionada a planilha
IF p_cpla IS NOT INITIAL.
"Realiza a leitura da planilha excel
PERFORM leitura_planilha_excel.
"Monta as tabelas internas com as informaes do excel
PERFORM monta_tabelas_excel.
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM inicializa_container_excel .
"Inicia o container para a leitura da planilha do Excel
CALL METHOD c_oi_container_control_creator=>get_container_control
IMPORTING
control = ref_control
error = ref_error
*
retcode =
.
"Verifica se ocorreu algum erro na gerao
IF ref_error->has_failed = 'X'.
CALL METHOD ref_error->raise_message
EXPORTING
type = 'E'.
ENDIF.
*
*
*
*
*
*
"Monta o container
CREATE OBJECT ref_container
EXPORTING
parent
container_name
style
lifetime
repid
dynnr
no_autodef_progid_dynnr
EXCEPTIONS
cntl_error
cntl_system_error
create_error
lifetime_error
lifetime_dynpro_dynpro_link
OTHERS
=
= 'CONT'
=
= lifetime_default
=
=
=
=
=
=
=
=
=
1
2
3
4
5
6.
IF sy-subrc <> 0.
MESSAGE e001(00) WITH 'Error while creating container'.
ENDIF.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
rep_id
shell_style
parent
name
autoalign
IMPORTING
error
retcode
EXCEPTIONS
javabeannotsupported
OTHERS
=
=
=
=
=
SY-REPID
1384185856
ref_container
'x'
= ref_error
=
= 1
= 2.
*
*
*
ENDFORM.
" INICIALIZA_CONTAINER_EXCEL
*&---------------------------------------------------------------------*
*&
Form LEITURA_PLANILHA_EXCEL
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM leitura_planilha_excel .
"Verifica se o caminho do arquivo foi preenchida
IF p_file IS INITIAL.
MESSAGE s900 WITH 'O Caminho da Planilha de ' 'Preenchimento Obrigatrio!' DI
SPLAY LIKE 'E'.
STOP.
ENDIF.
"Monta o caminho da planilha
*
*
*
*
*
*
*
"Abre a planilha
CALL METHOD ref_document->open_document
EXPORTING
document_title = 'Excel'
document_url
= vg_document_url
no_flush
= ' '
open_inplace
= 'X'
open_readonly
= ' '
protect_document = ' '
onsave_macro
= 'X'
startup_macro
= 'X'
user_info
=
IMPORTING
error
= ref_error
retcode
=
.
"Verifica se ocorreu algum erro na abertura da planilha
IF ref_error->has_failed = 'X'.
CALL METHOD ref_error->raise_message
EXPORTING
type = 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM.
" LEITURA_PLANILHA_EXCEL
*&---------------------------------------------------------------------*
*&
Form MONTA_TABELAS_EXCEL
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM monta_tabelas_excel .
"Estruturas locais
TYPES: BEGIN OF y_flash,
loja
TYPE
nome
TYPE
categoria
TYPE
tipo
TYPE
dt_inauguracao TYPE
premium
TYPE
perfil_cliente TYPE
cd
TYPE
ddd
TYPE
voltagem
TYPE
cidade
TYPE
uf
TYPE
regiao
TYPE
distrito
TYPE
cap_ou_int
TYPE
litoral
TYPE
tamanho
TYPE
area_vda
TYPE
area_estoque
TYPE
area_est_vda
TYPE
temp_med_ano
TYPE
classe_temper TYPE
shc_rua
TYPE
lead_time
TYPE
freq_abast
TYPE
END OF y_flash.
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
char256,
"Tabelas locais
DATA: t_flash
wa_flash
"Variveis locais
DATA: vl_cont
vl_tabix
vl_num
TYPE numc4,
TYPE sy-tabix,
TYPE numc07.
MESSAGE 'No foram encontradas informaes na planilha.' TYPE 'I' DISPLAY LIKE 'E'
.
LEAVE LIST-PROCESSING.
EXIT.
ENDIF.
"Verifica se o nome da planilha existe
IF t_sheets[] IS NOT INITIAL.
"L a tabela com as informaes e monta a tabela interna
LOOP AT t_sheets INTO wa_sheets.
*
*
"Seleciona a planilha
CALL METHOD ref_spreadsheet->select_sheet
EXPORTING
name
= wa_sheets-sheet_name
no_flush = ' '
IMPORTING
error
= ref_error
retcode =
.
"Verifica se ocorreu algum erro
IF ref_error->has_failed = 'X'.
EXIT.
ENDIF.
"Busca a quantidade de linhas e colunas da planilha
CALL METHOD ref_spreadsheet->set_selection
EXPORTING
top
= 1
left
= 1
rows
= vg_rows
columns = vg_cols.
"Insere uma nova rea
CALL METHOD ref_spreadsheet->insert_range
EXPORTING
name
= 'Carga'
rows
= vg_rows
columns = vg_cols
no_flush = ''
IMPORTING
error
= ref_error.
IF ref_error->has_failed = 'X'.
EXIT.
ENDIF.
"Limpa a tabela
REFRESH t_data.
*
*
*
*
*
IMPORTING
contents
error
retcode
CHANGING
ranges
= t_data
= ref_error
=
= t_ranges.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
WHEN 0010.
wa_flash-voltagem
WHEN 0011.
wa_flash-cidade
WHEN 0012.
wa_flash-uf
WHEN 0013.
wa_flash-regiao
WHEN 0014.
wa_flash-distrito
WHEN 0015.
wa_flash-cap_ou_int
WHEN 0016.
wa_flash-litoral
WHEN 0017.
wa_flash-tamanho
WHEN 0018.
wa_flash-area_vda
WHEN 0019.
wa_flash-area_estoque
WHEN 0020.
wa_flash-area_est_vda
WHEN 0021.
wa_flash-temp_med_ano
WHEN 0022.
wa_flash-classe_temper
WHEN 0023.
wa_flash-shc_rua
WHEN 0024.
wa_flash-lead_time
WHEN 0025.
wa_flash-freq_abast
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
= wa_data-value.
ENDCASE.
"Controla a mudana de linha
AT END OF row.
APPEND wa_flash TO t_flash.
CLEAR wa_flash.
ENDAT.
ENDLOOP.
ENDLOOP.
"Verifica se existem dados na tabela interna
IF t_flash[] IS NOT INITIAL.
"Grava os dados na tabela
LOOP AT t_flash INTO wa_flash.
wa_saida-loja
= wa_flash-loja.
wa_saida-nome
= wa_flash-nome.
wa_saida-categoria
= wa_flash-categoria.
wa_saida-tipo
= wa_flash-tipo.
= wa_flash-premium.
wa_saida-perfil_cliente
= wa_flash-perfil_cliente.
wa_saida-cd
= wa_flash-cd.
wa_saida-ddd
= wa_flash-ddd.
wa_saida-voltagem
= wa_flash-voltagem.
wa_saida-cidade
= wa_flash-cidade.
wa_saida-uf
= wa_flash-uf.
wa_saida-regiao
= wa_flash-regiao.
wa_saida-distrito
= wa_flash-distrito.
wa_saida-cap_ou_int
= wa_flash-cap_ou_int.
wa_saida-litoral
= wa_flash-litoral.
wa_saida-tamanho
= wa_flash-tamanho.
wa_saida-area_vda
= wa_flash-area_vda.
wa_saida-area_estoque
= wa_flash-area_estoque.
wa_saida-area_est_vda
= wa_flash-area_est_vda.
wa_saida-temp_med_ano
= wa_flash-temp_med_ano.
wa_saida-classe_temper
= wa_flash-classe_temper.
wa_saida-shc_rua
= wa_flash-shc_rua.
wa_saida-lead_time
= wa_flash-lead_time.
wa_saida-freq_abast
= wa_flash-freq_abast.
*
*
*
*
*
IF ref_error->has_failed = 'X'.
CALL METHOD ref_error->raise_message
EXPORTING
type = 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.
" FECHA_PLANILHA_EXCEL
*&---------------------------------------------------------------------*
*&
Form EXCLUI_TABELAS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM exclui_tabelas .
"Limpa as tabelas fsicas
IF p_limp IS NOT INITIAL.
DELETE FROM zfin_dados_flash.
COMMIT WORK AND WAIT.
ENDIF.
MESSAGE s857 WITH 'A tabela foi limpada com sucesso!'.
ENDFORM.
" EXCLUI_TABELAS
*&---------------------------------------------------------------------*
*&
Form TRATA_TELA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM trata_tela .
"Se for clicado na opo SERVIDOR
IF p_cpla = 'X'.
"Bloqueia os campos LOCAL
LOOP AT SCREEN.
IF screen-group1 = 'GR2'.
screen-invisible = 1.
screen-input
= 0.
screen-active
= 0.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'GR1'.
screen-invisible = 0.
screen-input
= 1.
screen-active
= 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
" TRATA_TELA