Professional Documents
Culture Documents
*======================================================================*
* INCLUDES
*======================================================================*
INCLUDE <icon>.
*======================================================================*
* ESTRUTURAS
*======================================================================*
TYPES:
"Estrutura SISPRO
BEGIN OF y_sispro,
zlifnrnf(20) TYPE c,
hkont TYPE bseg-hkont,
sgtxt TYPE bseg-sgtxt,
branch TYPE j_1bbranc_,
kostl TYPE bseg-kostl,
zbem_inc(20) TYPE c,
zbem(15) TYPE c,
zinc(4) TYPE c,
zdesc_bem(200) TYPE c,
zbranch TYPE j_1bbranc_,
znf(20) TYPE c,
zloc(20) TYPE c,
zesp(20) TYPE c,
zsli(20) TYPE c,
zgitem(20) TYPE c,
zprojeto(20) TYPE c,
zqtd TYPE int4,
zpedforn(20) TYPE c,
zrespinv(20) TYPE c,
zdtaquis TYPE bkpf-budat,
lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
wrbtr TYPE bseg-wrbtr,
zvldep TYPE bseg-wrbtr,
zvlres TYPE bseg-wrbtr,
zvlicms TYPE bseg-wrbtr,
budat TYPE bkpf-budat,
zdtinidpr TYPE bkpf-budat,
zdtultdpr TYPE bkpf-budat,
zpercdpr(6) TYPE c,
achou,
END OF y_sispro,
"Estrutura CAPEX
BEGIN OF y_capex,
zsq TYPE int4,
zclas(20) TYPE c,
zgrupo(20) TYPE c,
zhist(50) TYPE c,
bldat TYPE bkpf-bldat,
zdocfis(20) TYPE c,
wrbtr2 TYPE bseg-wrbtr,
blart TYPE bkpf-blart,
belnr TYPE bseg-belnr,
hkont2 TYPE bseg-hkont,
sgtxt2 TYPE bseg-sgtxt,
zlifnrnf(20) TYPE c,
gjahr TYPE gjahr,
augdt TYPE bseg-augdt,
augbl TYPE bseg-augbl,
wrbtr3 TYPE bseg-wrbtr,
stcd1 TYPE lfa1-stcd1,
zlspr(23) TYPE c,
budat2 TYPE bkpf-bldat,
nebtr TYPE bseg-nebtr,
END OF y_capex,
"Estrutura de Sada
BEGIN OF y_saida,
"CAPEX
status(18) TYPE c,
zsq TYPE int4,
zclas(20) TYPE c,
zgrupo(20) TYPE c,
zhist(50) TYPE c,
bldat TYPE bkpf-bldat,
zdocfis(20) TYPE c,
wrbtr2 TYPE bseg-wrbtr,
blart TYPE bkpf-blart,
belnr TYPE bseg-belnr,
hkont2 TYPE bseg-hkont,
sgtxt2 TYPE bseg-sgtxt,
"SISPRO
zlifnrnf(20) TYPE c,
hkont TYPE bseg-hkont,
sgtxt TYPE bseg-sgtxt,
branch TYPE j_1bbranc_,
kostl TYPE bseg-kostl,
zbem_inc(20) TYPE c,
zbem(15) TYPE c,
zinc(4) TYPE c,
zdesc_bem(200) TYPE c,
zbranch TYPE j_1bbranc_,
znf(20) TYPE c,
zloc(20) TYPE c,
zesp(20) TYPE c,
zsli(20) TYPE c,
zgitem(20) TYPE c,
zprojeto(20) TYPE c,
zqtd TYPE int4,
zpedforn(20) TYPE c,
zrespinv(20) TYPE c,
zdtaquis TYPE bkpf-budat,
lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
wrbtr TYPE bseg-wrbtr,
zvldep TYPE bseg-wrbtr,
zvlres TYPE bseg-wrbtr,
zvlicms TYPE bseg-wrbtr,
budat TYPE bkpf-budat,
zdtinidpr TYPE bkpf-budat,
zdtultdpr TYPE bkpf-budat,
zpercdpr(6) TYPE c,
"OUTROS
augdt TYPE bseg-augdt,
augbl TYPE bseg-augbl,
wrbtr3 TYPE bseg-wrbtr,
stcd1 TYPE lfa1-stcd1,
zlspr(23) TYPE c,
budat2 TYPE bkpf-bldat,
nebtr TYPE bseg-nebtr,
END OF y_saida.
*======================================================================*
* TABELAS INTERNAS
*======================================================================*
DATA: t_sheets TYPE soi_sheets_table,
t_data TYPE soi_generic_table,
t_ranges TYPE soi_range_list,
t_sheets2 TYPE soi_sheets_table,
t_capex TYPE TABLE OF y_capex,
t_sispro TYPE TABLE OF y_sispro,
t_saida TYPE TABLE OF y_saida,
t_fieldcat TYPE lvc_t_fcat,
t_sort TYPE lvc_t_sort,
t_color TYPE lvc_t_scol.
*======================================================================*
* WORK AREAS
*======================================================================*
DATA: wa_saida TYPE y_saida.
*======================================================================*
* VARIVEIS GLOBAIS
*======================================================================*
DATA: vg_document_url TYPE c LENGTH 500,
vg_document_url2 TYPE c LENGTH 500.
*======================================================================*
* OBJETOS
*======================================================================*
DATA: dir_container TYPE REF TO cl_gui_frontend_services,
ref_document TYPE REF TO i_oi_document_proxy,
ref_spreadsheet TYPE REF TO i_oi_spreadsheet,
ref_error TYPE REF TO i_oi_error,
ref_control TYPE REF TO i_oi_container_control,
ref_container TYPE REF TO cl_gui_custom_container,
dir_container2 TYPE REF TO cl_gui_frontend_services,
ref_document2 TYPE REF TO i_oi_document_proxy,
ref_spreadsheet2 TYPE REF TO i_oi_spreadsheet,
ref_error2 TYPE REF TO i_oi_error,
ref_control2 TYPE REF TO i_oi_container_control,
ref_container2 TYPE REF TO cl_gui_custom_container,
vg_variant TYPE disvariant,
og_splitter TYPE REF TO cl_gui_docking_container ,
dockingtop TYPE REF TO cl_gui_docking_container,
alv_bottom TYPE REF TO cl_gui_alv_grid,
alv_top TYPE REF TO cl_gui_alv_grid,
og_document TYPE REF TO cl_dd_document,
og_doctable TYPE REF TO cl_dd_table_element,
og_column TYPE REF TO cl_dd_area,
lo_columns TYPE REF TO cl_salv_columns_table.
*======================================================================*
* TELA DE SELEO
*======================================================================*
* Local de Carregamento da Planilha
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-004.
*
PARAMETERS: p_loc RADIOBUTTON GROUP g2 DEFAULT 'X' USER-COMMAND trata_tela,
p_ser RADIOBUTTON GROUP g2.
*
SELECTION-SCREEN END OF BLOCK b3.
*
* Carregar Planilha - Servidor
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
*
PARAMETERS: p_fil TYPE localfile MODIF ID gr4.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 16(17) text-024 MODIF ID gr4.
SELECTION-SCREEN POSITION 33.
PARAMETERS: p_asis TYPE localfile MODIF ID gr4.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
PARAMETERS: p_fil2 TYPE localfile MODIF ID gr4.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 16(17) text-024 MODIF ID gr4.
SELECTION-SCREEN POSITION 33.
PARAMETERS: p_acap TYPE localfile MODIF ID gr4.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
*
SELECTION-SCREEN END OF BLOCK b1.
*
* Carregar Planilha - Local
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-001.
* Carregar Planilha - Local
PARAMETERS: p_file TYPE localfile MODIF ID gr3.
SELECTION-SCREEN SKIP.
PARAMETERS: p_file2 TYPE localfile MODIF ID gr3.
*
SELECTION-SCREEN END OF BLOCK b4.
*
* Opo de Salvamento
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
*
* Servidor
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: p_rede RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND ac.
SELECTION-SCREEN COMMENT 04(28) text-021.
SELECTION-SCREEN POSITION 33.
PARAMETERS: p_dir2 LIKE rlgrap-filename MODIF ID di2.
SELECTION-SCREEN END OF LINE.
* - Nome Arquivo
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 11(18) text-024.
SELECTION-SCREEN POSITION 33.
PARAMETERS: p_arq LIKE rlgrap-filename MODIF ID ar1.
SELECTION-SCREEN END OF LINE.
*- Extenso Arquivo
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 33.
SELECTION-SCREEN COMMENT 11(21) text-027.
PARAMETER: p_typ1 TYPE char3 OBLIGATORY DEFAULT 'CSV' MODIF ID tp1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
* Local
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: p_local RADIOBUTTON GROUP g1.
SELECTION-SCREEN COMMENT 04(25) text-022.
SELECTION-SCREEN POSITION 33.
PARAMETERS: p_dir LIKE rlgrap-filename MODIF ID dir.
SELECTION-SCREEN END OF LINE.
* - Nome Arquivo
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 11(18) text-024.
SELECTION-SCREEN POSITION 33.
PARAMETERS: p_arq2 LIKE rlgrap-filename MODIF ID ar2.
SELECTION-SCREEN END OF LINE.
*- Extenso Arquivo
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 33.
SELECTION-SCREEN COMMENT 11(21) text-027.
PARAMETER: p_typ2 TYPE char3 OBLIGATORY DEFAULT 'CSV' MODIF ID tp2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
* Interface Grfica
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: p_graf RADIOBUTTON GROUP g1.
SELECTION-SCREEN COMMENT 04(28) text-023.
SELECTION-SCREEN END OF LINE.
*
SELECTION-SCREEN END OF BLOCK b2.
*======================================================================*
* AT SELECTION-SCREEN OUTPUT
*======================================================================*
AT SELECTION-SCREEN OUTPUT.
"Valida o local de salvamento do arquivo
PERFORM valida_local_salvamento.
*======================================================================*
* AT SELECTION-SCREEN ON VALUE-REQUEST
*======================================================================*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_typ2.
"Ajuda de pesquisa da extenso de arquivo LOCAL
PERFORM matchcode_tp_salvamento CHANGING p_typ2.
*======================================================================*
* AT SELECTION-SCREEN ON VALUE-REQUEST
*======================================================================*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dir.
"Ajuda de pesquisa para exibio do caminho que ser salvo o arquivo
PERFORM pesquisa_dir CHANGING p_dir.
*======================================================================*
* AT SELECTION-SCREEN ON VALUE-REQUEST
*======================================================================*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
"Ajuda de pesquisa para exibio do caminho que ser salvo o arquivo
PERFORM caminho_dir.
*======================================================================*
* AT SELECTION-SCREEN ON VALUE-REQUEST
*======================================================================*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file2.
"Ajuda de pesquisa para exibio do caminho que ser salvo o arquivo
PERFORM caminho_dir_2.
*======================================================================*
* INICIALIZAO
*======================================================================*
INITIALIZATION.
*======================================================================*
* INCIO DO PROCESSAMENTO
*======================================================================*
START-OF-SELECTION.
ELSE.
"Monta os arquivos da planilha no SERVIDOR
PERFORM busca_arquivos_servidor.
ENDIF.
END-OF-SELECTION.
*
*======================================================================*
* FORMS
*======================================================================*
*&---------------------------------------------------------------------*
*& Form INICIALIZA_CONTAINER_EXCEL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM inicializa_container_excel .
"Monta o container
CREATE OBJECT ref_container
EXPORTING
* parent =
container_name = 'CONT'
* style =
* lifetime = lifetime_default
* repid =
* dynnr =
* no_autodef_progid_dynnr =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE e001(00) WITH 'Error while creating container'.
ENDIF.
"Monta o container
CREATE OBJECT ref_container2
EXPORTING
* parent =
container_name = 'CONT2'
* style =
* lifetime = lifetime_default
* repid =
* dynnr =
* no_autodef_progid_dynnr =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE e001(00) WITH 'Error while creating container'.
ENDIF.
"Variveis locais
DATA: t_path TYPE filetable,
wa_path LIKE file_table,
vl_rc TYPE i.
p_file = wa_path-filename.
ENDIF.
"Variveis locais
DATA: t_path TYPE filetable,
wa_path LIKE file_table,
vl_rc TYPE i.
p_file2 = wa_path-filename.
ENDIF.
"Estruturas Lcoais
TYPES: BEGIN OF y_op_salvamento,
extensao TYPE char3,
END OF y_op_salvamento.
"Declaraes Locais
DATA: t_ret_tab TYPE TABLE OF ddshretval,
wa_ret_tab LIKE LINE OF t_ret_tab,
t_fields TYPE TABLE OF dfies,
wa_fields LIKE LINE OF t_fields,
t_value TYPE TABLE OF text100,
t_op_salvamento TYPE TABLE OF y_op_salvamento,
wa_op_salvamento TYPE y_op_salvamento.
wa_op_salvamento = 'TXT'.
APPEND wa_op_salvamento TO t_op_salvamento.
*=---------------------------------------------------------------------
CALL METHOD cl_gui_cfw=>flush.
*=---------------------------------------------------------------------
IF sy-subrc <> 0.
* Erro ao acessar o Diretrio de Sada.
MESSAGE s001(zl) WITH 'Erro ao acessar o Diretrio de Sada'.
STOP.
ELSE.
lc_arq = vg_path_local.
ENDIF.
ENDIF.
"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 =
.
TYPES:
"Estrutura SISPRO para excel
BEGIN OF y_sispro_ex,
zlifnrnf TYPE char256,
hkont TYPE char256,
sgtxt TYPE char256,
branch TYPE char256,
kostl TYPE char256,
zbem_inc TYPE char256,
zbem TYPE char256,
zinc TYPE char256,
zdesc_bem TYPE char256,
zbranch TYPE char256,
znf TYPE char256,
zloc TYPE char256,
zesp TYPE char256,
zsli TYPE char256,
zgitem TYPE char256,
zprojeto TYPE char256,
zqtd TYPE char256,
zpedforn TYPE char256,
zrespinv TYPE char256,
zdtaquis TYPE char256,
lifnr TYPE char256,
name1 TYPE char256,
wrbtr TYPE char256,
zvldep TYPE char256,
zvlres TYPE char256,
zvlicms TYPE char256,
budat TYPE char256,
zdtinidpr TYPE char256,
zdtultdpr TYPE char256,
zpercdpr TYPE char256,
END OF y_sispro_ex.
"Tabelas locais
DATA: t_sispro_ex TYPE TABLE OF y_sispro_ex,
t_rcode TYPE soi_ret_string,
wa_sispro_ex TYPE y_sispro_ex,
wa_sispro TYPE y_sispro,
wa_ranges TYPE soi_range_item.
"Variveis locais
DATA: vl_cont TYPE numc4,
vl_tabix TYPE sy-tabix,
vl_num TYPE numc07,
vg_rows TYPE i VALUE 9000, "1000000,
vg_cols TYPE i,
vl_wrbtr TYPE wrbtr,
vl_rows(4) TYPE c.
* "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.
*
* "Limpa a varivel
* CLEAR vg_cols.
*
* "Adiciona o nmero de colunas
* vg_cols = 3000.
*
* "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.
*
* CALL METHOD ref_spreadsheet->insert_range
* EXPORTING
* columns = vg_cols
* rows = vg_cols
* name = wa_sheets-sheet_name
* IMPORTING
* retcode = t_rcode.
*
*CALL METHOD ref_spreadsheet->get_ranges_names
* IMPORTING
* ranges = t_ranges
* retcode = t_rcode.
*
** DELETE t_range_list WHERE name <> lsc_range.
*
* CALL METHOD ref_spreadsheet->get_ranges_data
* IMPORTING
* contents = t_data
* retcode = t_rcode
* CHANGING
* ranges = t_ranges.
*
** wa_ranges-name = wa_sheets-sheet_name.
** wa_ranges-rows = vg_rows.
** wa_ranges-columns = vg_cols.
** APPEND wa_ranges TO t_ranges.
*
** "Limpa a tabela
** REFRESH t_data[].
*
** "Obtm o nome e os dados da rea
** CALL METHOD ref_spreadsheet->get_ranges_data
** EXPORTING
** all = 'X'
*** updating = -1
*** rangesdef =
** IMPORTING
** contents = t_data
** error = ref_error
*** retcode =
** CHANGING
** ranges = t_ranges.
*
* LOOP AT t_data INTO wa_data.
*
* vl_tabix = sy-tabix.
*
* "Insere zeros esquerda
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* input = wa_data-row
* IMPORTING
* output = wa_data-row.
*
* "Insere zeros esquerda
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* input = wa_data-column
* IMPORTING
* output = wa_data-column.
*
* MODIFY t_data FROM wa_data INDEX vl_tabix.
*
* ENDLOOP.
*
* READ TABLE t_ranges INTO wa_ranges INDEX 1.
*
* CLEAR vl_rows.
*
* vl_rows = wa_ranges-rows + 1.
*
* "Insere zeros esquerda
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* input = vl_rows
* IMPORTING
* output = vl_rows.
*
* DELETE t_data WHERE row GT vl_rows.
*
* CLEAR wa_ranges.
WHEN 0001.
wa_sispro_ex-zlifnrnf = wa_data-value.
WHEN 0002.
wa_sispro_ex-hkont = wa_data-value.
WHEN 0003.
wa_sispro_ex-sgtxt = wa_data-value.
WHEN 0004.
wa_sispro_ex-branch = wa_data-value.
WHEN 0005.
wa_sispro_ex-kostl = wa_data-value.
WHEN 0006.
wa_sispro_ex-zbem_inc = wa_data-value.
WHEN 0007.
wa_sispro_ex-zbem = wa_data-value.
WHEN 0008.
wa_sispro_ex-zinc = wa_data-value.
WHEN 0009.
wa_sispro_ex-zdesc_bem = wa_data-value.
WHEN 0010.
wa_sispro_ex-zbranch = wa_data-value.
WHEN 0011.
wa_sispro_ex-znf = wa_data-value.
WHEN 0012.
wa_sispro_ex-zloc = wa_data-value.
WHEN 0013.
wa_sispro_ex-zesp = wa_data-value.
WHEN 0014.
wa_sispro_ex-zsli = wa_data-value.
WHEN 0015.
wa_sispro_ex-zgitem = wa_data-value.
WHEN 0016.
wa_sispro_ex-zprojeto = wa_data-value.
WHEN 0017.
wa_sispro_ex-zqtd = wa_data-value.
WHEN 0018.
wa_sispro_ex-zpedforn = wa_data-value.
WHEN 0019.
wa_sispro_ex-zrespinv = wa_data-value.
WHEN 0020.
wa_sispro_ex-zdtaquis = wa_data-value.
WHEN 0021.
wa_sispro_ex-lifnr = wa_data-value.
WHEN 0022.
wa_sispro_ex-name1 = wa_data-value.
WHEN 0023.
wa_sispro_ex-wrbtr = wa_data-value.
WHEN 0024.
wa_sispro_ex-zvldep = wa_data-value.
WHEN 0025.
wa_sispro_ex-zvlres = wa_data-value.
WHEN 0026.
wa_sispro_ex-zvlicms = wa_data-value.
WHEN 0027.
wa_sispro_ex-budat = wa_data-value.
WHEN 0028.
wa_sispro_ex-zdtinidpr = wa_data-value.
WHEN 0029.
wa_sispro_ex-zdtultdpr = wa_data-value.
WHEN 0030.
wa_sispro_ex-zpercdpr = wa_data-value.
ENDCASE.
ENDLOOP.
* ENDLOOP.
"Pula o cabealho
IF sy-tabix = 1.
CONTINUE.
ENDIF.
wa_sispro-zlifnrnf = wa_sispro_ex-zlifnrnf.
wa_sispro-hkont = wa_sispro_ex-hkont.
wa_sispro-sgtxt = wa_sispro_ex-sgtxt.
wa_sispro-branch = wa_sispro_ex-branch.
wa_sispro-kostl = wa_sispro_ex-kostl.
wa_sispro-zbem_inc = wa_sispro_ex-zbem_inc.
wa_sispro-zbem = wa_sispro_ex-zbem.
wa_sispro-zinc = wa_sispro_ex-zinc.
TRANSLATE wa_sispro_ex-zdesc_bem USING ';,'.
wa_sispro-zdesc_bem = wa_sispro_ex-zdesc_bem.
wa_sispro-zbranch = wa_sispro_ex-zbranch.
wa_sispro-znf = wa_sispro_ex-znf.
wa_sispro-zloc = wa_sispro_ex-zloc.
wa_sispro-zesp = wa_sispro_ex-zesp.
wa_sispro-zsli = wa_sispro_ex-zsli.
wa_sispro-zgitem = wa_sispro_ex-zgitem.
wa_sispro-zprojeto = wa_sispro_ex-zprojeto.
wa_sispro-zqtd = wa_sispro_ex-zqtd.
wa_sispro-zpedforn = wa_sispro_ex-zpedforn.
wa_sispro-zrespinv = wa_sispro_ex-zrespinv.
CONCATENATE wa_sispro_ex-zdtaquis+6(4) wa_sispro_ex-zdtaquis+3(2)
wa_sispro_ex-zdtaquis(2) INTO wa_sispro-zdtaquis.
wa_sispro-lifnr = wa_sispro_ex-lifnr.
wa_sispro-name1 = wa_sispro_ex-name1.
TRANSLATE wa_sispro_ex-wrbtr USING '. '.
CONDENSE wa_sispro_ex-wrbtr NO-GAPS.
TRANSLATE wa_sispro_ex-wrbtr USING ',.'.
wa_sispro-wrbtr = wa_sispro_ex-wrbtr.
TRANSLATE wa_sispro_ex-zvldep USING '. '.
CONDENSE wa_sispro_ex-zvldep NO-GAPS.
TRANSLATE wa_sispro_ex-zvldep USING ',.'.
wa_sispro-zvldep = wa_sispro_ex-zvldep.
TRANSLATE wa_sispro_ex-zvlres USING '. '.
CONDENSE wa_sispro_ex-zvlres NO-GAPS.
TRANSLATE wa_sispro_ex-zvlres USING ',.'.
wa_sispro-zvlres = wa_sispro_ex-zvlres.
TRANSLATE wa_sispro_ex-zvlicms USING '. '.
CONDENSE wa_sispro_ex-zvlicms NO-GAPS.
TRANSLATE wa_sispro_ex-zvlicms USING ',.'.
wa_sispro-zvlicms = wa_sispro_ex-zvlicms.
CONCATENATE wa_sispro_ex-budat+6(4) wa_sispro_ex-budat+3(2)
wa_sispro_ex-budat(2) INTO wa_sispro-budat.
CONCATENATE wa_sispro_ex-zdtinidpr+6(4) wa_sispro_ex-zdtinidpr+3(2)
wa_sispro_ex-zdtinidpr(2) INTO wa_sispro-zdtinidpr.
CONCATENATE wa_sispro_ex-zdtultdpr+6(4) wa_sispro_ex-zdtultdpr+3(2)
wa_sispro_ex-zdtultdpr(2) INTO wa_sispro-zdtultdpr.
TRANSLATE wa_sispro_ex-zpercdpr USING '. '.
CONDENSE wa_sispro_ex-zpercdpr NO-GAPS.
TRANSLATE wa_sispro_ex-zpercdpr USING ',.'.
wa_sispro-zpercdpr = wa_sispro_ex-zpercdpr.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
"Abre a planilha
CALL METHOD ref_document2->open_document
EXPORTING
document_title = 'Excel'
document_url = vg_document_url2
* no_flush = ' '
open_inplace = 'X'
* open_readonly = ' '
* protect_document = ' '
* onsave_macro = 'X'
* startup_macro = 'X'
* user_info =
IMPORTING
error = ref_error2.
* retcode =
TYPES:
"Estrutura CAPEX para excel
BEGIN OF y_capex_ex,
zsq TYPE char256,
zclas TYPE char256,
zgrupo TYPE char256,
zhist TYPE char256,
bldat TYPE char256,
zdocfis TYPE char256,
wrbtr2 TYPE char256,
blart TYPE char256,
belnr TYPE char256,
hkont2 TYPE char256,
sgtxt2 TYPE char256,
END OF y_capex_ex.
"Tabelas locais
DATA: t_capex_ex TYPE TABLE OF y_capex_ex.
"Variveis locais
DATA: vl_cont TYPE numc4,
vl_tabix TYPE sy-tabix,
vl_num TYPE numc07,
vg_rows TYPE i VALUE 1000000,
vg_cols TYPE i,
vl_wrbtr TYPE wrbtr,
vl_rows(4) TYPE c.
* * MONTA A PLANILHA 2 - CAPEX * *
"Seleciona a planilha
CALL METHOD ref_spreadsheet2->select_sheet
EXPORTING
name = wa_sheets-sheet_name
* no_flush = ' '
IMPORTING
error = ref_error2
* retcode =
.
"Verifica se ocorreu algum erro
IF ref_error2->has_failed = 'X'.
EXIT.
ENDIF.
"Limpa a varivel
CLEAR vg_cols.
"Limpa a tabela
REFRESH t_data[].
vl_tabix = sy-tabix.
ENDLOOP.
CLEAR vl_rows.
vl_rows = wa_ranges-rows + 1.
CLEAR wa_ranges.
WHEN 0001.
wa_capex_ex-zsq = wa_data-value.
WHEN 0002.
wa_capex_ex-zclas = wa_data-value.
WHEN 0003.
wa_capex_ex-zgrupo = wa_data-value.
WHEN 0004.
wa_capex_ex-zhist = wa_data-value.
WHEN 0005.
wa_capex_ex-bldat = wa_data-value.
WHEN 0006.
wa_capex_ex-zdocfis = wa_data-value.
WHEN 0007.
wa_capex_ex-wrbtr2 = wa_data-value.
WHEN 0008.
wa_capex_ex-blart = wa_data-value.
WHEN 0009.
wa_capex_ex-belnr = wa_data-value.
WHEN 0010.
wa_capex_ex-hkont2 = wa_data-value.
WHEN 0011.
wa_capex_ex-sgtxt2 = wa_data-value.
ENDCASE.
ENDLOOP.
ENDLOOP.
"Pula o cabealho
IF sy-tabix = 1.
CONTINUE.
ENDIF.
wa_capex-zsq = wa_capex_ex-zsq.
wa_capex-zclas = wa_capex_ex-zclas.
wa_capex-zgrupo = wa_capex_ex-zgrupo.
wa_capex-zhist = wa_capex_ex-zhist.
CONCATENATE wa_capex_ex-bldat+6(4) wa_capex_ex-bldat+3(2)
wa_capex_ex-bldat(2) INTO wa_capex-bldat.
wa_capex-gjahr = wa_capex-bldat(4).
TRANSLATE wa_capex_ex-zdocfis USING '- '.
CONDENSE wa_capex_ex-zdocfis NO-GAPS.
wa_capex-zdocfis = wa_capex_ex-zdocfis.
TRANSLATE wa_capex_ex-wrbtr2 USING '. '.
CONDENSE wa_capex_ex-wrbtr2 NO-GAPS.
TRANSLATE wa_capex_ex-wrbtr2 USING ',.'.
wa_capex-wrbtr2 = wa_capex_ex-wrbtr2.
wa_capex-blart = wa_capex_ex-blart.
"Insere zeros esquerda
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_capex_ex-belnr
IMPORTING
output = wa_capex-belnr.
wa_capex-hkont2 = wa_capex_ex-hkont2.
wa_capex-sgtxt2 = wa_capex_ex-sgtxt2.
ENDLOOP.
ENDIF.
"Limpa as tabelas utilizadas
REFRESH: t_capex_ex[], t_data[].
ENDIF.
ENDIF.
ENDFORM. " FECHA_PLANILHA_EXCEL2
*&---------------------------------------------------------------------*
*& Form MONTA_DADOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM monta_dados .
"Monta o FORNECEDOR_NOTA_FISCAL
PERFORM monta_cod_fornecedor_nf.
TYPES:
"Estrutura do Excel
BEGIN OF y_excel,
status(18) TYPE c,
zsq(25) TYPE c,
zclas(25) TYPE c,
zgrupo(25) TYPE c,
zhist(50) TYPE c,
bldat(25) TYPE c,
zdocfis(25) TYPE c,
wrbtr2(25) TYPE c,
blart(25) TYPE c,
belnr(25) TYPE c,
hkont2(25) TYPE c,
sgtxt2(50) TYPE c,
zlifnrnf(30) TYPE c,
hkont(30) TYPE c,
sgtxt(50) TYPE c,
branch(25) TYPE c,
kostl(25) TYPE c,
zbem_inc(25) TYPE c,
zbem(25) TYPE c,
zinc(25) TYPE c,
zdesc_bem(200) TYPE c,
zbranch(25) TYPE c,
znf(25) TYPE c,
zloc(25) TYPE c,
zesp(25) TYPE c,
zsli(25) TYPE c,
zgitem(25) TYPE c,
zprojeto(25) TYPE c,
zqtd(25) TYPE c,
zpedforn(25) TYPE c,
zrespinv(25) TYPE c,
zdtaquis(25) TYPE c,
lifnr(25) TYPE c,
name1(35) TYPE c,
wrbtr(25) TYPE c,
zvldep(35) TYPE c,
zvlres(35) TYPE c,
zvlicms(35) TYPE c,
budat(25) TYPE c,
zdtinidpr(25) TYPE c,
zdtultdpr(25) TYPE c,
zpercdpr(25) TYPE c,
augdt(25) TYPE c,
augbl(25) TYPE c,
wrbtr3(25) TYPE c,
stcd1(20) TYPE c,
zlspr(25) TYPE c,
budat2(25) TYPE c,
nebtr(25) TYPE c,
END OF y_excel.
"Variveis locais
DATA: lv_arq(100) TYPE c,
lv_msg TYPE string.
"Variveis locais
DATA: lv_arq_pgt TYPE string.
"Tabelas Auxiliares
DATA: t_saida_aux TYPE TABLE OF y_excel,
t_excel TYPE truxs_t_text_data.
"Work Areas
DATA: wa_saida_aux TYPE y_excel,
wa_excel TYPE LINE OF truxs_t_text_data.
wa_saida_aux-status = wa_saida-status.
wa_saida_aux-zsq = wa_saida-zsq.
wa_saida_aux-zclas = wa_saida-zclas.
wa_saida_aux-zgrupo = wa_saida-zgrupo.
wa_saida_aux-zhist = wa_saida-zhist.
CONCATENATE wa_saida-bldat+6(2) '/' wa_saida-bldat+4(2)
'/' wa_saida-bldat(4) INTO wa_saida_aux-bldat.
IF wa_saida_aux-bldat = '//'.
wa_saida_aux-bldat = '00/00/0000'.
ENDIF.
wa_saida_aux-zdocfis = wa_saida-zdocfis.
WRITE wa_saida-wrbtr2 TO wa_saida_aux-wrbtr2.
wa_saida_aux-blart = wa_saida-blart.
wa_saida_aux-belnr = wa_saida-belnr.
wa_saida_aux-hkont2 = wa_saida-hkont2.
wa_saida_aux-sgtxt2 = wa_saida-sgtxt2.
wa_saida_aux-zlifnrnf = wa_saida-zlifnrnf.
wa_saida_aux-hkont = wa_saida-hkont.
wa_saida_aux-sgtxt = wa_saida-sgtxt.
wa_saida_aux-branch = wa_saida-branch.
wa_saida_aux-kostl = wa_saida-kostl.
wa_saida_aux-zbem_inc = wa_saida-zbem_inc.
wa_saida_aux-zbem = wa_saida-zbem.
wa_saida_aux-zinc = wa_saida-zinc.
wa_saida_aux-zdesc_bem = wa_saida-zdesc_bem.
wa_saida_aux-zbranch = wa_saida-zbranch.
wa_saida_aux-znf = wa_saida-znf.
wa_saida_aux-zesp = wa_saida-zesp.
wa_saida_aux-zsli = wa_saida-zsli.
wa_saida_aux-zgitem = wa_saida-zgitem.
wa_saida_aux-zprojeto = wa_saida-zprojeto.
wa_saida_aux-zqtd = wa_saida-zqtd.
wa_saida_aux-zpedforn = wa_saida-zpedforn.
wa_saida_aux-zrespinv = wa_saida-zrespinv.
CONCATENATE wa_saida-zdtaquis+6(2) '/' wa_saida-zdtaquis+4(2)
'/' wa_saida-zdtaquis(4) INTO wa_saida_aux-zdtaquis.
IF wa_saida_aux-zdtaquis = '//'.
wa_saida_aux-zdtaquis = '00/00/0000'.
ENDIF.
wa_saida_aux-lifnr = wa_saida-lifnr.
wa_saida_aux-name1 = wa_saida-name1.
WRITE wa_saida-wrbtr TO wa_saida_aux-wrbtr.
WRITE wa_saida-zvldep TO wa_saida_aux-zvldep.
WRITE wa_saida-zvlres TO wa_saida_aux-zvlres.
WRITE wa_saida-zvlicms TO wa_saida_aux-zvlicms.
CONCATENATE wa_saida-budat+6(2) '/' wa_saida-budat+4(2)
'/' wa_saida-budat(4) INTO wa_saida_aux-budat.
IF wa_saida_aux-budat = '//'.
wa_saida_aux-budat = '00/00/0000'.
ENDIF.
CONCATENATE wa_saida-zdtinidpr+6(2) '/' wa_saida-zdtinidpr+4(2)
'/' wa_saida-zdtinidpr(4) INTO wa_saida_aux-zdtinidpr.
IF wa_saida_aux-zdtinidpr = '//'.
wa_saida_aux-zdtinidpr = '00/00/0000'.
ENDIF.
CONCATENATE wa_saida-zdtultdpr+6(2) '/' wa_saida-zdtultdpr+4(2)
'/' wa_saida-zdtultdpr(4) INTO wa_saida_aux-zdtultdpr.
IF wa_saida_aux-zdtultdpr = '//'.
wa_saida_aux-zdtultdpr = '00/00/0000'.
ENDIF.
WRITE wa_saida-zpercdpr TO wa_saida_aux-zpercdpr.
ENDLOOP.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
"Abre o servidor
OPEN DATASET lv_arq FOR OUTPUT IN TEXT MODE ENCODING DEFAULT
MESSAGE lv_msg.
"Fecha o BD
CLOSE DATASET lv_arq.
sy-msgv1 = lv_arq(50).
sy-msgv2 = lv_arq+50.
ELSE.
ENDIF.
TYPES:
"Estrutura do Excel
BEGIN OF y_excel,
status(18) TYPE c,
zsq(25) TYPE c,
zclas(25) TYPE c,
zgrupo(25) TYPE c,
zhist(50) TYPE c,
bldat(25) TYPE c,
zdocfis(25) TYPE c,
wrbtr2(25) TYPE c,
blart(25) TYPE c,
belnr(25) TYPE c,
hkont2(25) TYPE c,
sgtxt2(50) TYPE c,
zlifnrnf(30) TYPE c,
hkont(30) TYPE c,
sgtxt(50) TYPE c,
branch(25) TYPE c,
kostl(25) TYPE c,
zbem_inc(25) TYPE c,
zbem(25) TYPE c,
zinc(25) TYPE c,
zdesc_bem(200) TYPE c,
zbranch(25) TYPE c,
znf(25) TYPE c,
zloc(25) TYPE c,
zesp(25) TYPE c,
zsli(25) TYPE c,
zgitem(25) TYPE c,
zprojeto(25) TYPE c,
zqtd(25) TYPE c,
zpedforn(25) TYPE c,
zrespinv(25) TYPE c,
zdtaquis(25) TYPE c,
lifnr(25) TYPE c,
name1(35) TYPE c,
wrbtr(25) TYPE c,
zvldep(35) TYPE c,
zvlres(35) TYPE c,
zvlicms(35) TYPE c,
budat(25) TYPE c,
zdtinidpr(25) TYPE c,
zdtultdpr(25) TYPE c,
zpercdpr(25) TYPE c,
augdt(25) TYPE c,
augbl(25) TYPE c,
wrbtr3(25) TYPE c,
stcd1(20) TYPE c,
zlspr(25) TYPE c,
budat2(25) TYPE c,
nebtr(25) TYPE c,
END OF y_excel.
"Variveis locais
DATA: lv_arq_pgt TYPE string,
lv_dir TYPE rlgrap-filename.
"Tabelas Auxiliares
DATA: t_saida_aux TYPE TABLE OF y_excel,
t_excel TYPE truxs_t_text_data.
"Work Areas
DATA: wa_saida_aux TYPE y_excel.
CLEAR lv_dir.
lv_dir = p_dir.
wa_saida_aux-status = wa_saida-status.
wa_saida_aux-zsq = wa_saida-zsq.
wa_saida_aux-zclas = wa_saida-zclas.
wa_saida_aux-zgrupo = wa_saida-zgrupo.
wa_saida_aux-zhist = wa_saida-zhist.
CONCATENATE wa_saida-bldat+6(2) '/' wa_saida-bldat+4(2)
'/' wa_saida-bldat(4) INTO wa_saida_aux-bldat.
IF wa_saida_aux-bldat = '//'.
wa_saida_aux-bldat = '00/00/0000'.
ENDIF.
wa_saida_aux-zdocfis = wa_saida-zdocfis.
WRITE wa_saida-wrbtr2 TO wa_saida_aux-wrbtr2.
wa_saida_aux-blart = wa_saida-blart.
wa_saida_aux-belnr = wa_saida-belnr.
wa_saida_aux-hkont2 = wa_saida-hkont2.
wa_saida_aux-sgtxt2 = wa_saida-sgtxt2.
wa_saida_aux-zlifnrnf = wa_saida-zlifnrnf.
wa_saida_aux-hkont = wa_saida-hkont.
wa_saida_aux-sgtxt = wa_saida-sgtxt.
wa_saida_aux-branch = wa_saida-branch.
wa_saida_aux-kostl = wa_saida-kostl.
wa_saida_aux-zbem_inc = wa_saida-zbem_inc.
wa_saida_aux-zbem = wa_saida-zbem.
wa_saida_aux-zinc = wa_saida-zinc.
wa_saida_aux-zdesc_bem = wa_saida-zdesc_bem.
wa_saida_aux-zbranch = wa_saida-zbranch.
wa_saida_aux-znf = wa_saida-znf.
wa_saida_aux-zesp = wa_saida-zesp.
wa_saida_aux-zsli = wa_saida-zsli.
wa_saida_aux-zgitem = wa_saida-zgitem.
wa_saida_aux-zprojeto = wa_saida-zprojeto.
wa_saida_aux-zqtd = wa_saida-zqtd.
wa_saida_aux-zpedforn = wa_saida-zpedforn.
wa_saida_aux-zrespinv = wa_saida-zrespinv.
CONCATENATE wa_saida-zdtaquis+6(2) '/' wa_saida-zdtaquis+4(2)
'/' wa_saida-zdtaquis(4) INTO wa_saida_aux-zdtaquis.
IF wa_saida_aux-zdtaquis = '//'.
wa_saida_aux-zdtaquis = '00/00/0000'.
ENDIF.
wa_saida_aux-lifnr = wa_saida-lifnr.
wa_saida_aux-name1 = wa_saida-name1.
WRITE wa_saida-wrbtr TO wa_saida_aux-wrbtr.
WRITE wa_saida-zvldep TO wa_saida_aux-zvldep.
WRITE wa_saida-zvlres TO wa_saida_aux-zvlres.
WRITE wa_saida-zvlicms TO wa_saida_aux-zvlicms.
CONCATENATE wa_saida-budat+6(2) '/' wa_saida-budat+4(2)
'/' wa_saida-budat(4) INTO wa_saida_aux-budat.
IF wa_saida_aux-budat = '//'.
wa_saida_aux-budat = '00/00/0000'.
ENDIF.
CONCATENATE wa_saida-zdtinidpr+6(2) '/' wa_saida-zdtinidpr+4(2)
'/' wa_saida-zdtinidpr(4) INTO wa_saida_aux-zdtinidpr.
IF wa_saida_aux-zdtinidpr = '//'.
wa_saida_aux-zdtinidpr = '00/00/0000'.
ENDIF.
CONCATENATE wa_saida-zdtultdpr+6(2) '/' wa_saida-zdtultdpr+4(2)
'/' wa_saida-zdtultdpr(4) INTO wa_saida_aux-zdtultdpr.
IF wa_saida_aux-zdtultdpr = '//'.
wa_saida_aux-zdtultdpr = '00/00/0000'.
ENDIF.
WRITE wa_saida-zpercdpr TO wa_saida_aux-zpercdpr.
ENDLOOP.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF sy-subrc NE 15 AND
sy-subrc NE 21.
"Erro ao tentar criar o arquivo
MESSAGE s041(z1) WITH p_arq2 DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
STOP.
ENDIF.
ENDIF.
ELSE.
ENDIF.
DATA:
BEGIN OF lt_unix OCCURS 0,
line(2000),
END OF lt_unix.
DATA:
lw_comando(200) TYPE c.
REFRESH lt_unix.
CALL 'SYSTEM' ID 'COMMAND'
FIELD lw_comando ID 'TAB'
FIELD lt_unix-*sys*.
ELSE.
ENDIF.
"Monta a fieldcat
PERFORM preencher_fieldcat
USING:
*** CAPEX * * *
"SEQ
'STATUS' 'T_SAIDA' text-039 space space space space '20',
"SEQ
'ZSQ' 'T_SAIDA' text-040 space space space space '20',
"CLASSIFICAO
'ZCLAS' 'T_SAIDA' text-041 space space space space '20',
"Grupo
'ZGRUPO' 'T_SAIDA' text-042 space space space space '20',
"Histrico
'ZHIST' 'T_SAIDA' text-043 space space space space '50',
"Data
'BLDAT' 'T_SAIDA' text-044 space space space space '20',
"Documento Fiscal
'ZDOCFIS' 'T_SAIDA' text-045 space space space space '20',
"Valor
'WRBTR2' 'T_SAIDA' text-046 space space space space '20',
"Tipo de lanamento
'BLART' 'T_SAIDA' text-047 space space space space '20',
"DOC SAP
'BELNR' 'T_SAIDA' text-048 space space space space '20',
"Conta contbil
'HKONT2' 'T_SAIDA' text-049 space space space space '20',
"Descrio da Conta
'SGTXT2' 'T_SAIDA' text-050 space space space space '50',
*** SISPRO * * *
"FORNECEDOR_NOTA FISCAL
'ZLIFNRNF' 'T_SAIDA' text-051 space space space space '23',
"Conta
'HKONT' 'T_SAIDA' text-052 space space space space '20',
"Descrio da conta
'SGTXT' 'T_SAIDA' text-053 space space space space '50',
"Esta
'BRANCH' 'T_SAIDA' text-054 space space space space '20',
"Centro de custo
'KOSTL' 'T_SAIDA' text-055 space space space space '20',
"BEM + INC
'ZBEM_INC' 'T_SAIDA' text-056 space space space space '20',
"Bem
'ZBEM' 'T_SAIDA' text-057 space space space space '20',
"Inc.
'ZINC' 'T_SAIDA' text-058 space space space space '20',
"Descrio do Bem
'ZDESC_BEM' 'T_SAIDA' text-059 space space space space '200',
"Loja Fisica
'ZBRANCH' 'T_SAIDA' text-060 space space space space '20',
"Documento de Aquisio
'ZNF' 'T_SAIDA' text-061 space space space space '23',
"Localizacao
'ZLOC' 'T_SAIDA' text-062 space space space space '20',
"Espcie
'ZESP' 'T_SAIDA' text-063 space space space space '20',
"SLI
'ZSLI' 'T_SAIDA' text-064 space space space space '20',
"Grupo de Item
'ZGITEM' 'T_SAIDA' text-065 space space space space '20',
"PROJETO
'ZPROJETO' 'T_SAIDA' text-066 space space space space '20',
"Qt.It.
'ZQTD' 'T_SAIDA' text-067 space space space space '10',
"Pedido de Fornecimento
'ZPEDFORN' 'T_SAIDA' text-068 space space space space '23',
"RESPONSAVEL INV
'ZRESPINV' 'T_SAIDA' text-069 space space space space '20',
"Dt.Aquis
'ZDTAQUIS' 'T_SAIDA' text-070 space space space space '10',
"Fornecedor
'LIFNR' 'T_SAIDA' text-071 space space space space '20',
"Descrio do Fornecedor
'NAME1' 'T_SAIDA' text-072 space space space space '35',
"Valor Original Corrigido
'WRBTR' 'T_SAIDA' text-073 space space space space '25',
"Depreciao Acumulada Corrigida
'ZVLDEP' 'T_SAIDA' text-074 space space space space '32',
"Residual Contabil Corrigido
'ZVLRES' 'T_SAIDA' text-075 space space space space '28',
"Valor ICMS
'ZVLICMS' 'T_SAIDA' text-076 space space space space '15',
"Dt.Ctb
'BUDAT' 'T_SAIDA' text-077 space space space space '10',
"DtIniDpr
'ZDTINIDPR' 'T_SAIDA' text-078 space space space space '10',
"DtUltDpr
'ZDTULTDPR' 'T_SAIDA' text-079 space space space space '10',
"% Dpr
'ZPERCDPR' 'T_SAIDA' text-080 space space space space '7',
CLEAR wa_fieldcat.
vl_pos = vl_pos + 1.
wa_fieldcat-fieldname = p_fieldname .
wa_fieldcat-tabname = p_tabname .
wa_fieldcat-scrtext_l = p_text .
wa_fieldcat-hotspot = p_hot .
wa_fieldcat-col_pos = vl_pos .
wa_fieldcat-do_sum = p_sum .
wa_fieldcat-edit = p_edit .
wa_fieldcat-checkbox = p_check .
wa_fieldcat-outputlen = p_outputlen .
"Estruturas locais
DATA : t_exclude TYPE ui_functions.
"Variveis locais
DATA: vl_data_exerc(255) TYPE c,
vl_usuario(255) TYPE c,
vl_data(255) TYPE c,
vl_hora(255) TYPE c,
vl_empresa(255) TYPE c.
vg_variant-report = sy-repid.
"Cria o Grid
CREATE OBJECT dockingtop
EXPORTING
repid = sy-repid
dynnr = sy-dynnr
side = dockingtop->dock_at_top
extension = 300.
ENDIF.
*======================================================================*
* MODULES
*======================================================================*
*
*&---------------------------------------------------------------------*
*& Module STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_2000 OUTPUT.
IF screen-group1 = 'GR4'.
screen-invisible = 0.
screen-input = 1.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
"Sugerir um nome
p_arq = 'SISPRO_CAPEX_&1_&2'.
ENDIF.
"Sugerir o C:\
p_dir = 'C:\'.
ENDIF.
"Sugerir um nome
p_arq2 = 'SISPRO_CAPEX_&1_&2'.
ENDIF.
"Limpa as variveis
CLEAR: p_arq, p_dir2.
LOOP AT SCREEN.
IF screen-group1 = 'DIR' OR
screen-group1 = 'AR1' OR
screen-group1 = 'AR2' OR
screen-group1 = 'TP2' OR
screen-group1 = 'TP1' OR
screen-group1 = 'DI2'.
screen-input = 0.
MODIFY SCREEN.
CLEAR p_dir.
ENDIF.
ENDLOOP.
ENDIF.
"Estruturas locais
TYPES:
"Estrutura da BSEG
BEGIN OF y_bseg,
bukrs TYPE bseg-bukrs,
belnr TYPE bseg-belnr,
gjahr TYPE bseg-gjahr,
buzei TYPE bseg-buzei,
augdt TYPE bseg-augdt,
augbl TYPE bseg-augbl,
wrbtr3 TYPE bseg-wrbtr,
lifnr TYPE bseg-lifnr,
zlspr TYPE bseg-zlspr,
nebtr TYPE bseg-nebtr,
END OF y_bseg,
"Estrutura da BKPF
BEGIN OF y_bkpf,
bukrs TYPE bkpf-bukrs,
belnr TYPE bkpf-belnr,
gjahr TYPE bkpf-gjahr,
bldat TYPE bkpf-bldat,
END OF y_bkpf,
"Estrutura da LFA1
BEGIN OF y_lfa1,
lifnr TYPE lfa1-lifnr,
stcd1 TYPE lfa1-stcd1,
END OF y_lfa1.
"Field-Symbols
FIELD-SYMBOLS: <wa_capex> TYPE y_capex,
<wa_bseg> TYPE y_bseg,
<wa_bkpf> TYPE y_bkpf,
<wa_bseg2> TYPE y_bseg,
<wa_lfa1> TYPE y_lfa1,
<wa_hist> TYPE string.
"Variveis locais
DATA: vl_pos TYPE sy-fdpos,
vl_len TYPE i,
vl_fnf(20) TYPE c,
vl_hist TYPE string,
vl_lifnr TYPE lifnr.
"Constantes locais
CONSTANTS cc_empresa TYPE bukrs VALUE 'LAME'.
ENDIF.
"Busca o CNPJ
SELECT lifnr stcd1
FROM lfa1
INTO TABLE t_lfa1
FOR ALL ENTRIES IN t_bseg
WHERE lifnr = t_bseg-lifnr.
ENDIF.
ENDIF.
<wa_capex>-budat2 = <wa_bkpf>-bldat.
ENDIF.
"Busca o CNPJ
READ TABLE t_lfa1 ASSIGNING <wa_lfa1> WITH KEY lifnr = <wa_bseg>-lifnr
BINARY SEARCH.
IF sy-subrc = 0.
<wa_capex>-stcd1 = <wa_lfa1>-stcd1.
ENDIF.
"Preenche o bloqueio
IF <wa_bseg>-zlspr = 'A'.
ELSE.
<wa_capex>-zlspr = <wa_bseg>-zlspr.
ENDIF.
ENDIF.
<wa_capex>-augdt = <wa_bseg>-augdt.
<wa_capex>-augbl = <wa_bseg>-augbl.
<wa_capex>-wrbtr3 = <wa_bseg>-wrbtr3.
"Limpa a varivel
CLEAR: vl_lifnr.
vl_lifnr = <wa_bseg>-lifnr.
"Limpa as variveis
CLEAR: vl_len, vl_fnf.
vl_hist = <wa_hist>.
vl_len = vl_len - 2.
vl_fnf = vl_hist+2(vl_len).
"Limpa as variveis
CLEAR: vl_pos.
vl_fnf = vl_fnf+0(sy-fdpos).
ELSE.
ENDIF.
ELSE.
CONTINUE.
ENDIF.
ELSE.
vl_hist = <wa_hist>.
vl_fnf = vl_hist+0(vl_len).
"Limpa as variveis
CLEAR: vl_pos.
vl_fnf = vl_fnf+0(sy-fdpos).
ELSE.
ENDIF.
ENDLOOP.
ELSE.
<wa_capex>-zlifnrnf = <wa_capex>-zdocfis.
ENDIF.
ELSE.
"Limpa as variveis
CLEAR: vl_fnf.
"Limpa as variveis
CLEAR: vl_pos.
vl_fnf = <wa_capex>-zdocfis+0(sy-fdpos).
ELSE.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
"Desassocia os FS
UNASSIGN: <wa_bseg>,
<wa_bseg2>,
<wa_bkpf>,
<wa_capex>,
<wa_hist>,
<wa_lfa1>.
"Field-Symbols
FIELD-SYMBOLS: <wa_capex> TYPE y_capex,
<wa_sispro> TYPE y_sispro.
"Limpa o campo montado com o FORNECEDOR + NF, pois ser usado o da SISPRO
CLEAR wa_saida-zlifnrnf.
ENDLOOP.
IF sy-subrc <> 0.
wa_saida-status = '#CAPEX#'.
ENDIF.
ENDLOOP.
wa_saida-status = '#SISPRO#'.
ENDLOOP.
"Desassocia os FS
UNASSIGN: <wa_sispro>,
<wa_capex>.
ENDIF.
ENDIF.
ENDIF.
"Estruturas locais
TYPES:
"Estrutura CAPEX para excel
BEGIN OF y_capex_ex,
zsq TYPE char20,
zclas TYPE char20,
zgrupo TYPE char20,
zhist TYPE char50,
bldat TYPE char20,
zdocfis TYPE char30,
wrbtr2 TYPE char20,
blart TYPE char20,
belnr TYPE char20,
hkont2 TYPE char20,
sgtxt2 TYPE char50,
END OF y_capex_ex.
"Estruturas locais
DATA: BEGIN OF itab OCCURS 0,
line(500),
END OF itab.
"Variveis locais
DATA: vl_tabix TYPE sy-tabix,
vl_file_name TYPE string,
vl_lines_written TYPE i,
unixcmd(250) TYPE c,
vl_branco TYPE string.
CLEAR: wa_file_table.
"Busco os Arquivos
CALL METHOD cl_rsan_ut_appserv_file_reader=>appserver_file_read
EXPORTING
i_filename = vl_file_name
CHANGING
c_data_tab = t_file_table
EXCEPTIONS
open_failed = 1
read_failed = 2
close_failed = 3
OTHERS = 4.
IF sy-tabix > 1.
"Separo os Registros
SPLIT wa_file_table AT ';'
INTO vl_branco
wa_capex_ex-zsq
wa_capex_ex-zclas
wa_capex_ex-zgrupo
wa_capex_ex-zhist
wa_capex_ex-bldat
wa_capex_ex-zdocfis
wa_capex_ex-wrbtr2
wa_capex_ex-blart
wa_capex_ex-belnr
wa_capex_ex-hkont2
wa_capex_ex-sgtxt2.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
wa_capex-zsq = wa_capex_ex-zsq.
wa_capex-zclas = wa_capex_ex-zclas.
wa_capex-zgrupo = wa_capex_ex-zgrupo.
wa_capex-zhist = wa_capex_ex-zhist.
CONCATENATE wa_capex_ex-bldat+6(4) wa_capex_ex-bldat+3(2)
wa_capex_ex-bldat(2) INTO wa_capex-bldat.
wa_capex-gjahr = wa_capex-bldat(4).
wa_capex-zdocfis = wa_capex_ex-zdocfis.
TRANSLATE wa_capex_ex-wrbtr2 USING '. '.
CONDENSE wa_capex_ex-wrbtr2 NO-GAPS.
TRANSLATE wa_capex_ex-wrbtr2 USING ',.'.
wa_capex-wrbtr2 = wa_capex_ex-wrbtr2.
wa_capex-blart = wa_capex_ex-blart.
"Insere zeros esquerda
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_capex_ex-belnr
IMPORTING
output = wa_capex-belnr.
wa_capex-hkont2 = wa_capex_ex-hkont2.
wa_capex-sgtxt2 = wa_capex_ex-sgtxt2.
ENDLOOP.
"Estruturas locais
TYPES:
"Estrutura SISPRO para excel
BEGIN OF y_sispro_ex,
zlifnrnf TYPE char20,
hkont TYPE char20,
sgtxt TYPE char50,
branch TYPE char20,
kostl TYPE char20,
zbem_inc TYPE char20,
zbem TYPE char20,
zinc TYPE char20,
zdesc_bem TYPE char200,
zbranch TYPE char20,
znf TYPE char20,
zloc TYPE char20,
zesp TYPE char20,
zsli TYPE char20,
zgitem TYPE char20,
zprojeto TYPE char20,
zqtd TYPE char20,
zpedforn TYPE char20,
zrespinv TYPE char20,
zdtaquis TYPE char20,
lifnr TYPE char20,
name1 TYPE char20,
wrbtr TYPE char20,
zvldep TYPE char20,
zvlres TYPE char20,
zvlicms TYPE char20,
budat TYPE char20,
zdtinidpr TYPE char20,
zdtultdpr TYPE char20,
zpercdpr TYPE char20,
END OF y_sispro_ex.
"Estruturas locais
DATA: BEGIN OF itab OCCURS 0,
line(1000),
END OF itab.
"Variveis locais
DATA: vl_tabix TYPE sy-tabix,
vl_file_name TYPE string,
vl_lines_written TYPE i,
unixcmd(250) TYPE c.
CLEAR: wa_file_table.
"Busco os Arquivos
CALL METHOD cl_rsan_ut_appserv_file_reader=>appserver_file_read
EXPORTING
i_filename = vl_file_name
CHANGING
c_data_tab = t_file_table
EXCEPTIONS
open_failed = 1
read_failed = 2
close_failed = 3
OTHERS = 4.
"Separo os Registros
SPLIT wa_file_table AT ';'
INTO wa_sispro_ex-zlifnrnf
wa_sispro_ex-hkont
wa_sispro_ex-sgtxt
wa_sispro_ex-branch
wa_sispro_ex-kostl
wa_sispro_ex-zbem_inc
wa_sispro_ex-zbem
wa_sispro_ex-zinc
wa_sispro_ex-zdesc_bem
wa_sispro_ex-zbranch
wa_sispro_ex-znf
wa_sispro_ex-zloc
wa_sispro_ex-zesp
wa_sispro_ex-zsli
wa_sispro_ex-zgitem
wa_sispro_ex-zprojeto
wa_sispro_ex-zqtd
wa_sispro_ex-zpedforn
wa_sispro_ex-zrespinv
wa_sispro_ex-zdtaquis
wa_sispro_ex-lifnr
wa_sispro_ex-name1
wa_sispro_ex-wrbtr
wa_sispro_ex-zvldep
wa_sispro_ex-zvlres
wa_sispro_ex-zvlicms
wa_sispro_ex-budat
wa_sispro_ex-zdtinidpr
wa_sispro_ex-zdtultdpr
wa_sispro_ex-zpercdpr.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
wa_sispro-zlifnrnf = wa_sispro_ex-zlifnrnf.
wa_sispro-hkont = wa_sispro_ex-hkont.
wa_sispro-sgtxt = wa_sispro_ex-sgtxt.
wa_sispro-branch = wa_sispro_ex-branch.
wa_sispro-kostl = wa_sispro_ex-kostl.
wa_sispro-zbem_inc = wa_sispro_ex-zbem_inc.
wa_sispro-zbem = wa_sispro_ex-zbem.
wa_sispro-zinc = wa_sispro_ex-zinc.
TRANSLATE wa_sispro_ex-zdesc_bem USING ';,'.
wa_sispro-zdesc_bem = wa_sispro_ex-zdesc_bem.
wa_sispro-zbranch = wa_sispro_ex-zbranch.
wa_sispro-znf = wa_sispro_ex-znf.
wa_sispro-zloc = wa_sispro_ex-zloc.
wa_sispro-zesp = wa_sispro_ex-zesp.
wa_sispro-zsli = wa_sispro_ex-zsli.
wa_sispro-zgitem = wa_sispro_ex-zgitem.
wa_sispro-zprojeto = wa_sispro_ex-zprojeto.
wa_sispro-zqtd = wa_sispro_ex-zqtd.
wa_sispro-zpedforn = wa_sispro_ex-zpedforn.
wa_sispro-zrespinv = wa_sispro_ex-zrespinv.
CONCATENATE wa_sispro_ex-zdtaquis+6(4) wa_sispro_ex-zdtaquis+3(2)
wa_sispro_ex-zdtaquis(2) INTO wa_sispro-zdtaquis.
wa_sispro-lifnr = wa_sispro_ex-lifnr.
wa_sispro-name1 = wa_sispro_ex-name1.
TRANSLATE wa_sispro_ex-wrbtr USING '. '.
CONDENSE wa_sispro_ex-wrbtr NO-GAPS.
TRANSLATE wa_sispro_ex-wrbtr USING ',.'.
wa_sispro-wrbtr = wa_sispro_ex-wrbtr.
TRANSLATE wa_sispro_ex-zvldep USING '. '.
CONDENSE wa_sispro_ex-zvldep NO-GAPS.
TRANSLATE wa_sispro_ex-zvldep USING ',.'.
wa_sispro-zvldep = wa_sispro_ex-zvldep.
TRANSLATE wa_sispro_ex-zvlres USING '. '.
CONDENSE wa_sispro_ex-zvlres NO-GAPS.
TRANSLATE wa_sispro_ex-zvlres USING ',.'.
wa_sispro-zvlres = wa_sispro_ex-zvlres.
TRANSLATE wa_sispro_ex-zvlicms USING '. '.
CONDENSE wa_sispro_ex-zvlicms NO-GAPS.
TRANSLATE wa_sispro_ex-zvlicms USING ',.'.
wa_sispro-zvlicms = wa_sispro_ex-zvlicms.
CONCATENATE wa_sispro_ex-budat+6(4) wa_sispro_ex-budat+3(2)
wa_sispro_ex-budat(2) INTO wa_sispro-budat.
CONCATENATE wa_sispro_ex-zdtinidpr+6(4) wa_sispro_ex-zdtinidpr+3(2)
wa_sispro_ex-zdtinidpr(2) INTO wa_sispro-zdtinidpr.
CONCATENATE wa_sispro_ex-zdtultdpr+6(4) wa_sispro_ex-zdtultdpr+3(2)
wa_sispro_ex-zdtultdpr(2) INTO wa_sispro-zdtultdpr.
TRANSLATE wa_sispro_ex-zpercdpr USING '. '.
CONDENSE wa_sispro_ex-zpercdpr NO-GAPS.
TRANSLATE wa_sispro_ex-zpercdpr USING ',.'.
wa_sispro-zpercdpr = wa_sispro_ex-zpercdpr.
ENDLOOP.