You are on page 1of 31

ABAP - OLE Excel

Link to this Page

Link

Move Page AB
Click to select the

Tiny Link

Wiki Markup

Close

Set Page Location Move

OK

Cancel

Search

Recently View ed

There w ere no re Know n Location

The specified pag Brow se

Error reading the

You could try relo HTTP Status

You must make a

Failed to retrieve

There w ere no pa Show ing <b>{0}<

You cannot move

ABAP - OLE Exce Use of Generic o

Code Gallery

You cannot move

Page Ordering

Back

Reorder

Move

Unknow n user or

Page Restrictions

Editing restricted

Cancel

Close

Save

9055

Snippets

Page restrictions apply


Added by Wille Alcantara, last edited by Wille Alcantara on Nov 19, 2009

view
************************************************************************
* 31/07/2009 Wille A. Alcntara *
************************************************************************
report zfiaa0001 message-id 00 line-size 723
no standard page heading.
************************************************************************
* Include para Ole Excel *
************************************************************************
include ole2incl.
************************************************************************
* Tabelas *
************************************************************************
tables: anla,
anep,
anlp.
************************************************************************
* Work Areas *
************************************************************************
data: begin of wa_anla,
anln1 type anla-anln1,
anln2 type anla-anln2,
anlkl type anla-anlkl,
end of wa_anla,
begin of wa_anlc,
anln1 type anlc-anln1,
anln2 type anlc-anln2,
gjahr type anlc-gjahr,
kansw type anlc-kansw,
knafa type anlc-knafa,
end of wa_anlc,
begin of wa_anea,
anln1 type anea-anln1,

Move failed. Ther

anln2 type anea-anln2,


gjahr type anea-gjahr,
lnran type anea-lnran,
nafav type anea-nafav,
nafal type anea-nafal,
end of wa_anea,
begin of wa_anep,
anln1 type anep-anln1,
anln2 type anep-anln2,
gjahr type anep-gjahr,
lnran type anep-lnran,
bwasl type anep-bwasl,
anbtr type anep-anbtr,
end of wa_anep,
begin of wa_anek,
anln1 type anek-anln1,
anln2 type anek-anln2,
lnran type anek-lnran,
budat type anek-budat,
end of wa_anek,
begin of wa_anlp,
anln1 type anlp-anln1,
anln2 type anlp-anln2,
gjahr type anlp-gjahr,
afaber type anlp-afaber,
nafap type anlp-nafap,
nafag type anlp-nafag,
nafaz type anlp-nafaz,
end of wa_anlp,
begin of wa_anlz,
anln1 type anlz-anln1,
anln2 type anlz-anln2,
werks type anlz-werks,
end of wa_anlz,
begin of wa_ankt,
anlkl type ankt-anlkl,
txk20 type ankt-txk20,
end of wa_ankt,
begin of wa_t095b,
ktogr type t095b-ktogr,
afabe type t095b-afabe,
ktnafb type t095b-ktnafb,
end of wa_t095b,
begin of wa_skat,
saknr type skat-saknr,
txt20 type skat-txt20,
txt50 type skat-txt50,
end of wa_skat.

data: begin of wa_saida,


classe type t095b-ktnafb,
descr(20) type c,
tot_ant1 type anlc-kansw,
tot_ant2 type anlc-kansw,
tot_ant3 type anlc-kansw,
tot_ant4 type anlc-kansw,
tot_ant5 type anlc-kansw,
space_1 type c,
at0102_1 type anlc-kansw,
at0102_2 type anlc-kansw,
at0102_3 type anlc-kansw,
at0102_4 type anlc-kansw,
at0102_5 type anlc-kansw,
space_2 type c,
at03_1 type anlc-kansw,
at03_2 type anlc-kansw,
at03_3 type anlc-kansw,
at03_4 type anlc-kansw,
at03_5 type anlc-kansw,
space_3 type c,
at04_1 type anlc-kansw,
at04_2 type anlc-kansw,
at04_3 type anlc-kansw,
at04_4 type anlc-kansw,
at04_5 type anlc-kansw,
space_4 type c,
at05_1 type anlc-kansw,
at05_2 type anlc-kansw,
at05_3 type anlc-kansw,
at05_4 type anlc-kansw,
at05_5 type anlc-kansw,
space_5 type c,
resu_1 type anlc-kansw,
resu_2 type anlc-kansw,
resu_3 type anlc-kansw,
resu_4 type anlc-kansw,
resu_5 type anlc-kansw,
space_6 type c,
total_1 type anlc-kansw,
total_2 type anlc-kansw,
total_3 type anlc-kansw,
total_4 type anlc-kansw,
total_5 type anlc-kansw,
total_6 type anlc-kansw,
total_7 type anlc-kansw,
tipo type c,
end of wa_saida,
wa_totais like wa_saida,
wa_campos type char72.
************************************************************************
* Tabelas Internas *

************************************************************************
data: t_anla like table of wa_anla,
t_anlc like table of wa_anlc,
t_anea like table of wa_anea,
t_anep like table of wa_anep,
t_anek like table of wa_anek,
t_anlp like table of wa_anlp,
t_anlz like table of wa_anlz,
t_ankt like table of wa_ankt,
t_t095b like table of wa_t095b,
t_skat like table of wa_skat,
t_saida like table of wa_saida,
t_totais like table of wa_saida,
t_select type table of char72.
************************************************************************
* Field-Symbols *
************************************************************************
field-symbols: <fs_campo> type any.
************************************************************************
* Variaveis *
************************************************************************
data: vg_ktopl type skat-ktopl value 'MONS',
vg_real(02) type c value 'R$',
vg_dolr(03) type c value 'USD',
vg_at01 type werks value 'AT01',
vg_at02 type werks value 'AT02',
vg_at03 type werks value 'AT03',
vg_at04 type werks value 'AT04',
vg_at05 type werks value 'AT05',
vg_020 type anep-bwasl value '020',
vg_101 type anep-bwasl value '101',
vg_114 type anep-bwasl value '114',
vg_200 type anep-bwasl value '200',
vg_300 type anep-bwasl value '300',
vg_310 type anep-bwasl value '310',
vg_331 type anep-bwasl value '331',
vg_336 type anep-bwasl value '336',
vg_338 type anep-bwasl value '338',
vg_339 type anep-bwasl value '339',
vg_dtin type d,
vg_dtfi type d,
vg_dtin_ant type d,
vg_dtfi_ant type d,
vg_c type c value 'C',
vg_d type c value 'D',
vg_z type c value 'Z',
vg_x type c value 'X',
vg_12104000 type anla-anlkl value '12104000',
vg_12104001 type anla-anlkl value '12104001',
vg_empresa type t001-butxt,
vg_descr type t001-butxt,
vg_atual(17) type c,

vg_anterior(17) type c,
vg_titulo(91) type c,
vg_campo(30) type c.
* Declaraes Para OLE EXCEL
data: vg_excel type ole2_object,
vg_workbooks type ole2_object,
vg_cells type ole2_object,
vg_cell1 type ole2_object,
vg_cell2 type ole2_object,
vg_sheet type ole2_object,
vg_col type i,
vg_lin type i.
************************************************************************
* Selection-Screen *
************************************************************************
selection-screen begin of block blck with frame title text-000.
parameter: p_bukrs like anla-bukrs obligatory,
p_year like anlp-gjahr obligatory.
select-options: s_peri for anlp-afbnr obligatory.
parameter: p_afab like anep-afabe obligatory.
selection-screen end of block blck.
selection-screen begin of screen 0100 title text-039.
parameter: p_ver as checkbox,
p_file type rlgrap-filename obligatory.
selection-screen end of screen 0100.
************************************************************************
* At Selection Screen *
************************************************************************
at selection-screen on value-request for p_file.
perform f_salva_arquivo using p_file.
************************************************************************
* At User Command *
************************************************************************
at user-command.
case sy-ucomm.
when 'LEAV'.
perform f_limpa_dados.
leave to screen 0.
when 'CANC'.
perform f_limpa_dados.
leave program.
when 'BT_EXCEL'.
perform: f_call_screen,
f_gera_excel.
endcase.
************************************************************************
* Start-Of-Selection *
************************************************************************
start-of-selection.

set pf-status 'ZFIAA0001'.


perform: f_trata_periodo,
f_seleciona_dados,
f_monta_saida,
f_writer.
end-of-selection.
*&---------------------------------------------------------------------*
*& Form f_trata_periodo
*&---------------------------------------------------------------------*
form f_trata_periodo.
data: vl_periodo(02) type n,
vl_ano(04) type n.
if ( s_peri-low > 12
or s_peri-low < 01 )
or ( s_peri-high > 12
or s_peri-high < 01 ).
message i398 with text-040 space space space.
stop.
endif.
if s_peri-high is initial.
s_peri-high = s_peri-low.
concatenate p_year s_peri-low '01' into vg_dtin.
perform f_convert_periodo using vg_dtin vg_dtfi.
else.
concatenate p_year s_peri-high '01' into vg_dtin.
perform f_convert_periodo using vg_dtin vg_dtfi.
concatenate p_year s_peri-low '01' into vg_dtin.
endif.
* Trata Perodo Anterior
vl_periodo = s_peri-low - 1.
vl_ano = p_year.
if s_peri-low = '01'.
vl_periodo = 12.
vl_ano = p_year - 1.
endif.
concatenate vl_ano vl_periodo '01' into vg_dtin_ant.
perform f_convert_periodo using vg_dtin_ant vg_dtfi_ant.
endform. " f_trata_periodo
*&---------------------------------------------------------------------*
*& Form f_convert_periodo
*&---------------------------------------------------------------------*
form f_convert_periodo using p_dtin type d
p_dtfi type d.

call function 'LAST_DAY_OF_MONTHS'


exporting
day_in = p_dtin
importing
last_day_of_month = p_dtfi.
if sy-subrc eq 0. endif.
endform. " f_convert_periodo
*&---------------------------------------------------------------------*
*& Form f_seleciona_dados
*&---------------------------------------------------------------------*
form f_seleciona_dados.
refresh t_select.
perform f_monta_select using 'WA_ANEK'.
select (t_select)
from anek
into table t_anek
where bukrs eq p_bukrs
and ( budat >= vg_dtin_ant and budat <= vg_dtfi ).
if sy-subrc ne 0.
message i398 with text-031 space space space.
stop.
endif.
refresh t_select.
perform f_monta_select using 'WA_ANLA'.
select (t_select)
from anla
into table t_anla
for all entries in t_anek
where bukrs eq p_bukrs
and anln1 eq t_anek-anln1
and anln2 eq t_anek-anln2.
if sy-subrc ne 0.
message i398 with text-029 space space space.
stop.
endif.
refresh t_select.
perform f_monta_select using 'WA_ANLC'.
select (t_select)
from anlc
into table t_anlc
for all entries in t_anek
where bukrs eq p_bukrs
and anln1 eq t_anek-anln1
and anln2 eq t_anek-anln2
and gjahr eq p_year.
if sy-subrc ne 0.
message i398 with text-030 space space space.

stop.
endif.
refresh t_select.
perform f_monta_select using 'WA_ANEA'.
select (t_select)
from anea
into table t_anea
for all entries in t_anek
where bukrs eq p_bukrs
and anln1 eq t_anek-anln1
and anln2 eq t_anek-anln2
and gjahr eq p_year
and afabe eq p_afab.
refresh t_select.
perform f_monta_select using 'WA_ANEP'.
select (t_select)
from anep
into table t_anep
for all entries in t_anek
where bukrs eq p_bukrs
and anln1 eq t_anek-anln1
and anln2 eq t_anek-anln2
and gjahr eq p_year
and afabe eq p_afab.
refresh t_select.
perform f_monta_select using 'WA_ANLP'.
select (t_select)
from anlp
into table t_anlp
for all entries in t_anek
where bukrs eq p_bukrs
and anln1 eq t_anek-anln1
and anln2 eq t_anek-anln2
and gjahr eq p_year
and afaber eq p_afab.
refresh t_select.
perform f_monta_select using 'WA_ANLZ'.
select (t_select)
from anlz
into table t_anlz
for all entries in t_anek
where bukrs eq p_bukrs
and anln1 eq t_anek-anln1
and anln2 eq t_anek-anln2.
refresh t_select.
perform f_monta_select using 'WA_ANKT'.
select (t_select)
from ankt
into table t_ankt

for all entries in t_anla


where spras = sy-langu
and anlkl = t_anla-anlkl.
refresh t_select.
perform f_monta_select using 'WA_T095B'.
select (t_select)
from t095b
into table t_t095b
for all entries in t_anla
where ktopl eq vg_ktopl
and ktogr eq t_anla-anlkl
and afabe eq p_afab.
if sy-subrc eq 0.
refresh t_select.
perform f_monta_select using 'WA_SKAT'.
select (t_select)
from skat
into table t_skat
for all entries in t_t095b
where saknr eq t_t095b-ktnafb
and ktopl eq vg_ktopl
and spras eq sy-langu.
endif.
endform. " f_seleciona_dados
*&---------------------------------------------------------------------*
*& Form f_monta_saida
*&---------------------------------------------------------------------*
form f_monta_saida.
sort: t_anla by anln1 anln2,
t_anlc by anln1 anln2,
t_anep by anln1 anln2 lnran,
t_anek by budat anln1 anln2 lnran,
t_anea by anln1 anln2 lnran,
t_anlp by anln1 anln2,
t_anlz by anln1 anln2,
t_t095b by ktogr ktnafb,
t_skat by saknr.
loop at t_anek into wa_anek.
clear: wa_anla,
wa_anlz,
wa_t095b,
wa_anea,
wa_anlc,
wa_anep.
read table t_anla into wa_anla with key anln1 = wa_anek-anln1
anln2 = wa_anek-anln2
binary search.

read table t_anlz into wa_anlz with key anln1 = wa_anla-anln1


anln2 = wa_anla-anln2
binary search.
check sy-subrc eq 0.
read table t_t095b into wa_t095b with key ktogr = wa_anla-anlkl
binary search.
read table t_skat into wa_skat with key saknr = wa_t095b-ktnafb
binary search.
read table t_ankt into wa_ankt with key anlkl = wa_anla-anlkl
binary search.
read table t_anea into wa_anea with key anln1 = wa_anla-anln1
anln2 = wa_anla-anln2
lnran = wa_anek-lnran
binary search.
read table t_anlc into wa_anlc with key anln1 = wa_anla-anln1
anln2 = wa_anla-anln2
binary search.
read table t_anep into wa_anep with key anln1 = wa_anla-anln1
anln2 = wa_anla-anln2
lnran = wa_anek-lnran
binary search.
check sy-subrc eq 0.
wa_saida-classe = wa_anla-anlkl.
wa_saida-descr = wa_ankt-txk20.
if wa_anla-anlkl eq vg_12104000
or wa_anla-anlkl eq vg_12104001.
wa_saida-tipo = vg_z.
else.
wa_saida-tipo = vg_c.
endif.
if wa_anek-budat+4(02) eq vg_dtin_ant+4(02).
* Tratamento para Bloco Inicial
* Tratamento para Perodo Anterior ao indicado na Tela de Seleo
perform f_trata_bloco_inicial.
else.
* Tratamento para Bloco Intermedirio
perform f_trata_intermediario.
endif.
clear: wa_saida.
endloop.
* Tratamento para Linhas de Totais
sort: t_saida by tipo classe.
loop at t_saida into wa_saida.
move wa_saida to wa_totais.
clear: wa_totais-classe,
wa_totais-descr.

collect wa_totais into t_totais.


clear: wa_totais-tipo.
collect wa_totais into t_totais.
endloop.
endform. " f_monta_saida
*&---------------------------------------------------------------------*
*& Form F_MONTA_SELECT
*&---------------------------------------------------------------------*
form f_monta_select using p_struc .
data: t_com like rstrucinfo occurs 0 with header line.
data: vl_repid type sy-repid.
vl_repid = sy-repid.
call function 'GET_COMPONENT_LIST'
exporting
program = vl_repid
fieldname = p_struc
tables
components = t_com[].
loop at t_com.
append t_com-compname to t_select.
endloop.
endform. " F_MONTA_SELECT
*&---------------------------------------------------------------------*
*& Form f_monta_intermediario
*&---------------------------------------------------------------------*
form f_monta_intermediario using p_campo2
p_campo3
p_campo4
p_campo5
p_total.
if wa_anep-bwasl eq vg_020 or wa_anep-bwasl eq vg_101
or wa_anep-bwasl eq vg_114 or wa_anep-bwasl eq vg_331
or wa_anep-bwasl eq vg_336 or wa_anep-bwasl eq vg_338
or wa_anep-bwasl eq vg_339.
wa_saida-resu_2 = p_campo2 = wa_anep-anbtr.
elseif wa_anep-bwasl eq vg_300 or wa_anep-bwasl eq vg_310.
wa_saida-resu_3 = p_campo3 = wa_anep-anbtr.
elseif wa_anep-bwasl eq vg_200.
wa_saida-resu_4 = p_campo4 = wa_anep-anbtr.
endif.
perform f_somatoria using wa_anlc-kansw wa_anep-anbtr
changing p_campo5.

perform f_calcula_resumo using wa_saida-resu_2 wa_saida-resu_3


wa_saida-resu_4 wa_saida-resu_5.
wa_saida-total_7 = wa_saida-resu_1 = p_total = p_campo5.
endform. " f_monta_intermediario
*&---------------------------------------------------------------------*
*& Form f_somatoria
*&---------------------------------------------------------------------*
form f_somatoria using p_kansw
p_anbtr
changing p_retorno.
p_retorno = p_kansw + p_anbtr.
endform. " f_somatoria
*&---------------------------------------------------------------------*
*& Form f_total_bloco
*&---------------------------------------------------------------------*
form f_total_bloco using p_valor
changing p_total.
p_total = p_valor.
endform. " f_total_bloco
*&---------------------------------------------------------------------*
*& Form f_trata_bloco_inicial
*&---------------------------------------------------------------------*
form f_trata_bloco_inicial.
case wa_anlz-werks.
when vg_at01 or vg_at02.
perform: f_somatoria using wa_anlc-kansw wa_anep-anbtr
changing wa_saida-tot_ant1,
f_total_bloco using wa_saida-tot_ant1
changing wa_saida-tot_ant5.
wa_saida-at0102_1 = wa_saida-tot_ant1.
collect wa_saida into t_saida.
check wa_anla-anlkl ne vg_12104000
and wa_anla-anlkl ne vg_12104001.
clear: wa_saida-tot_ant1,
wa_saida-tot_ant5.
* Depreciao Acumulada Perodo Anterior
perform f_trata_deprec_acum using wa_saida-tot_ant1
wa_saida-tot_ant5.
wa_saida-at0102_1 = wa_saida-tot_ant1.
collect wa_saida into t_saida.
when vg_at03.
perform: f_somatoria using wa_anlc-kansw wa_anep-anbtr
changing wa_saida-tot_ant2,
f_total_bloco using wa_saida-tot_ant2
changing wa_saida-tot_ant5.

wa_saida-at03_1 = wa_saida-tot_ant2.
collect wa_saida into t_saida.
check wa_anla-anlkl ne vg_12104000
and wa_anla-anlkl ne vg_12104001.
clear: wa_saida-tot_ant2,
wa_saida-tot_ant5,
wa_saida-at03_1.
* Depreciao Acumulada Perodo Anterior
perform f_trata_deprec_acum using wa_saida-tot_ant2
wa_saida-tot_ant5.
wa_saida-at03_1 = wa_saida-tot_ant2.
collect wa_saida into t_saida.
when vg_at04.
perform: f_somatoria using wa_anlc-kansw wa_anep-anbtr
changing wa_saida-tot_ant3,
f_total_bloco using wa_saida-tot_ant3
changing wa_saida-tot_ant5.
wa_saida-at04_1 = wa_saida-tot_ant3.
collect wa_saida into t_saida.
check wa_anla-anlkl ne vg_12104000
and wa_anla-anlkl ne vg_12104001.
clear: wa_saida-tot_ant3,
wa_saida-tot_ant5.
* Depreciao Acumulada Perodo Anterior
perform f_trata_deprec_acum using wa_saida-tot_ant3
wa_saida-tot_ant5.
wa_saida-at04_1 = wa_saida-tot_ant3.
collect wa_saida into t_saida.
when vg_at05.
perform: f_somatoria using wa_anlc-kansw wa_anep-anbtr
changing wa_saida-tot_ant4,
f_total_bloco using wa_saida-tot_ant4
changing wa_saida-tot_ant5.
wa_saida-at05_1 = wa_saida-tot_ant4.
collect wa_saida into t_saida.
check wa_anla-anlkl ne vg_12104000
and wa_anla-anlkl ne vg_12104001.
clear: wa_saida-tot_ant4,
wa_saida-tot_ant5.
* Depreciao Acumulada Perodo Anterior
perform f_trata_deprec_acum using wa_saida-tot_ant4
wa_saida-tot_ant5.
wa_saida-at05_1 = wa_saida-tot_ant4.
collect wa_saida into t_saida.
endcase.

endform. " f_trata_bloco_inicial


*&---------------------------------------------------------------------*
*& Form f_trata_intermediario
*&---------------------------------------------------------------------*
form f_trata_intermediario.
case wa_anlz-werks.
when vg_at01 or vg_at02.
perform f_monta_intermediario using wa_saida-at0102_2
wa_saida-at0102_3
wa_saida-at0102_4
wa_saida-at0102_5
wa_saida-total_3.
collect wa_saida into t_saida.
* Trata Totais - ltimo Bloco
clear: wa_saida-at0102_2,
wa_saida-at0102_3,
wa_saida-at0102_4,
wa_saida-at0102_5,
wa_saida-resu_1,
wa_saida-resu_2,
wa_saida-resu_3,
wa_saida-resu_4,
wa_saida-resu_5,
wa_saida-total_3.
if vg_at01 eq wa_anlz-werks.
perform f_somatoria using wa_anlc-kansw wa_anep-anbtr
changing wa_saida-total_1.
wa_saida-total_7 = wa_saida-total_1.
else.
perform f_somatoria using wa_anlc-kansw wa_anep-anbtr
changing wa_saida-total_2.
wa_saida-total_7 = wa_saida-total_2.
endif.
collect wa_saida into t_saida.
check wa_anla-anlkl ne vg_12104000
and wa_anla-anlkl ne vg_12104001.
clear: wa_saida-total_1,
wa_saida-total_2.
* Depreciao Acumulada Perodo Atual
perform f_trata_depre_acum_atual using wa_saida-at0102_2
wa_saida-at0102_4
wa_saida-at0102_5.
if vg_at01 eq wa_anlz-werks.
perform f_monta_sum_dep using wa_anlp-nafag wa_anlp-nafaz
wa_anea-nafav wa_anea-nafal
wa_anlc-knafa
changing wa_saida-total_1.
wa_saida-total_7 = wa_saida-total_1.

else.
perform f_monta_sum_dep using wa_anlp-nafag wa_anlp-nafaz
wa_anea-nafav wa_anea-nafal
wa_anlc-knafa
changing wa_saida-total_2.
wa_saida-total_7 = wa_saida-total_2.
endif.
collect wa_saida into t_saida.
when vg_at03.
perform f_monta_intermediario using wa_saida-at03_2
wa_saida-at03_3
wa_saida-at03_4
wa_saida-at03_5
wa_saida-total_4.
collect wa_saida into t_saida.
* Trata Totais - ltimo Bloco
clear: wa_saida-at03_1,
wa_saida-at03_2,
wa_saida-at03_3,
wa_saida-at03_4,
wa_saida-at03_5,
wa_saida-resu_1,
wa_saida-resu_2,
wa_saida-resu_3,
wa_saida-resu_4,
wa_saida-resu_5,
wa_saida-total_4.
check wa_anla-anlkl ne vg_12104000
and wa_anla-anlkl ne vg_12104001.
* Depreciao Acumulada Perodo Atual
perform f_trata_depre_acum_atual using wa_saida-at03_2
wa_saida-at03_4
wa_saida-at03_5.
perform f_monta_sum_dep using wa_anlp-nafag wa_anlp-nafaz
wa_anea-nafav wa_anea-nafal
wa_anlc-knafa
changing wa_saida-total_4.
wa_saida-total_7 = wa_saida-total_4.
collect wa_saida into t_saida.
when vg_at04.
perform f_monta_intermediario using wa_saida-at04_2
wa_saida-at04_3
wa_saida-at04_4
wa_saida-at04_5
wa_saida-total_5.
collect wa_saida into t_saida.
* Trata Totais - ltimo Bloco
clear: wa_saida-at04_1,

wa_saida-at04_2,
wa_saida-at04_3,
wa_saida-at04_4,
wa_saida-at04_5,
wa_saida-resu_1,
wa_saida-resu_2,
wa_saida-resu_3,
wa_saida-resu_4,
wa_saida-resu_5,
wa_saida-total_5.
check wa_anla-anlkl ne vg_12104000
and wa_anla-anlkl ne vg_12104001.
* Depreciao Acumulada Perodo Atual
perform f_trata_depre_acum_atual using wa_saida-at04_2
wa_saida-at04_4
wa_saida-at04_5.
perform f_monta_sum_dep using wa_anlp-nafag wa_anlp-nafaz
wa_anea-nafav wa_anea-nafal
wa_anlc-knafa
changing wa_saida-total_5.
wa_saida-total_7 = wa_saida-total_5.
collect wa_saida into t_saida.
when vg_at05.
perform f_monta_intermediario using wa_saida-at05_2
wa_saida-at05_3
wa_saida-at05_4
wa_saida-at05_5
wa_saida-total_6.
collect wa_saida into t_saida.
* Trata Totais - ltimo Bloco
clear: wa_saida-at05_2,
wa_saida-at05_3,
wa_saida-at05_4,
wa_saida-at05_5,
wa_saida-resu_1,
wa_saida-resu_2,
wa_saida-resu_3,
wa_saida-resu_4,
wa_saida-resu_5,
wa_saida-total_6.
check wa_anla-anlkl ne vg_12104000
and wa_anla-anlkl ne vg_12104001.
* Depreciao Acumulada Perodo Atual
perform f_trata_depre_acum_atual using wa_saida-at05_2
wa_saida-at05_4
wa_saida-at05_5.
perform f_monta_sum_dep using wa_anlp-nafag wa_anlp-nafaz
wa_anea-nafav wa_anea-nafal

wa_anlc-knafa
changing wa_saida-total_6.
wa_saida-total_7 = wa_saida-total_6.
collect wa_saida into t_saida.
endcase.
endform. " f_trata_intermediario
*&---------------------------------------------------------------------*
*& Form f_writer
*&---------------------------------------------------------------------*
form f_writer.
data: vl_classe(35) type c,
vl_x type c,
vl_y type c.
sort: t_saida by tipo classe.
* Monta Cabealho
select single butxt
into vg_empresa
from t001
where bukrs eq p_bukrs
and spras eq sy-langu.
* Imprime Linha Inicial
perform f_linha.
concatenate p_bukrs vg_empresa into vg_descr separated by space.
concatenate text-002 vg_real into vg_titulo separated by space.
if p_afab eq 10.
concatenate text-002 vg_dolr into vg_titulo separated by space.
endif.
perform: f_primeiro_cabec,
f_segundo_cabec using vg_descr vg_empresa,
f_terceiro_cabec,
f_pri_lin_total.
loop at t_saida into wa_saida.
concatenate wa_saida-classe '-' wa_saida-descr
into vl_classe separated by space.
format color 2 intensified off.
if wa_saida-tipo eq vg_c
or wa_saida-tipo eq vg_z.
if wa_saida-tipo eq vg_z
and vl_y is initial.
format color 5 intensified off.
read table t_totais into wa_totais with key tipo = vg_z.
write: /(001) sy-vline,
002(35) text-037 centered.
perform f_imprime_rel using wa_totais.

format color 2 intensified off.


write: /(001) sy-vline,
002(35) vl_classe left-justified.
move vg_z to vl_y.
else.
write: /(001) sy-vline,
002(35) vl_classe left-justified.
endif.
else.
if wa_saida-tipo eq vg_d
and vl_x is initial.
format color 5 intensified off.
read table t_totais into wa_totais with key tipo = vg_d.
write: /(001) sy-vline,
002(35) text-036 left-justified.
perform f_imprime_rel using wa_totais.
format color 2 intensified off.
write: /(001) sy-vline,
002(35) vl_classe left-justified.
move vg_z to vl_x.
else.
write: /(001) sy-vline,
002(35) vl_classe left-justified.
endif.
endif.
perform f_imprime_rel using wa_saida.
endloop.
* Linha Final
perform f_linha.
endform. " f_writer
*&---------------------------------------------------------------------*
*& Form f_monta_sum_dep
*&---------------------------------------------------------------------*
form f_monta_sum_dep using p_wa_anlp_nafag
p_wa_anlp_nafaz
p_wa_anea_nafav
p_wa_anea_nafal
p_wa_anlc_knafa
changing p_retorno.
p_retorno = ( p_wa_anlp_nafag + p_wa_anlp_nafaz + p_wa_anea_nafav +
p_wa_anea_nafal + p_wa_anlc_knafa ).
endform. " f_monta_sum_dep
*&---------------------------------------------------------------------*
*& Form f_trata_deprec_acum

*&---------------------------------------------------------------------*
form f_trata_deprec_acum using p_total like anlc-kansw
p_tot_f like anlc-kansw.
wa_saida-classe = wa_t095b-ktnafb.
wa_saida-descr = wa_skat-txt20.
wa_saida-tipo = vg_d.
perform f_monta_sum_dep using wa_anlp-nafag wa_anlp-nafaz
wa_anea-nafav wa_anea-nafal
wa_anlc-knafa
changing p_total.
perform f_total_bloco using p_total
changing p_tot_f.
endform. " f_trata_deprec_acum
*&---------------------------------------------------------------------*
*& Form f_trata_depre_acum_atual
*&---------------------------------------------------------------------*
form f_trata_depre_acum_atual using p_campo_2
p_campo_4
p_campo_5.
wa_saida-classe = wa_t095b-ktnafb.
wa_saida-descr = wa_skat-txt20.
wa_saida-resu_2 = p_campo_2 = wa_anlp-nafaz.
if wa_anep-bwasl eq vg_020
or wa_anep-bwasl eq vg_101
or wa_anep-bwasl eq vg_114.
wa_saida-resu_4 = p_campo_4 = wa_anea-nafav.
endif.
perform f_monta_sum_dep using wa_anlp-nafag wa_anlp-nafaz
wa_anea-nafav wa_anea-nafal
wa_anlc-knafa
changing p_campo_5.
wa_saida-resu_1 = p_campo_5.
perform f_calcula_resumo using wa_saida-resu_2 wa_saida-resu_3
wa_saida-resu_4 wa_saida-resu_5.
wa_saida-tipo = vg_d.
endform. " f_trata_depre_acum_atual
*&---------------------------------------------------------------------*
*& Form F_PRIMEIRO_CABEC
*&---------------------------------------------------------------------*
form f_primeiro_cabec.
data: vl_periodo(02) type n.
vl_periodo = ( s_peri-low - 1 ).
perform f_monta_mes using vl_periodo
changing vg_anterior.
perform f_monta_mes using s_peri-high
changing vg_atual.

format color 7 intensified on.


write: /(001) sy-vline,
037(01) sy-vline,
055(01) sy-vline,
056(17) vg_anterior centered,
074(01) sy-vline,
127(01) sy-vline,
129(01) sy-vline,
130(91) vg_titulo centered,
220(01) sy-vline,
222(01) sy-vline,
223(91) vg_titulo centered,
313(01) sy-vline,
315(01) sy-vline,
316(91) vg_titulo centered,
406(01) sy-vline,
408(01) sy-vline,
409(91) vg_titulo centered,
499(01) sy-vline,
501(01) sy-vline,
502(91) vg_titulo centered,
592(01) sy-vline,
594(01) sy-vline,
595(127) vg_atual centered,
721(01) sy-vline.
endform. " F_PRIMEIRO_CABEC
*&---------------------------------------------------------------------*
*& Form F_MONTA_MES
*&---------------------------------------------------------------------*
form f_monta_mes using p_periodo
changing p_mes.
case p_periodo.
when 01.
perform f_concatena using text-003
changing p_mes.
when 02.
perform f_concatena using text-004
changing p_mes.
when 03.
perform f_concatena using text-005
changing p_mes.
when 04.
perform f_concatena using text-006
changing p_mes.
when 05.
perform f_concatena using text-007
changing p_mes.
when 06.
perform f_concatena using text-008
changing p_mes.
when 07.
perform f_concatena using text-009

changing p_mes.
when 08.
perform f_concatena using text-010
changing p_mes.
when 09.
perform f_concatena using text-011
changing p_mes.
when 10.
perform f_concatena using text-012
changing p_mes.
when 11.
perform f_concatena using text-013
changing p_mes.
when 12.
perform f_concatena using text-014
changing p_mes.
endcase.
endform. " F_MONTA_MES
*&---------------------------------------------------------------------*
*& Form f_segundo_cabec
*&---------------------------------------------------------------------*
form f_segundo_cabec using p_empresa
p_desc.
format color 3 intensified off.
write: /(001) sy-vline,
002(35) p_empresa centered,
038(17) text-015 centered,
056(17) text-016 centered,
074(17) text-017 centered,
092(17) text-018 centered,
110(17) p_desc centered,
127(01) sy-vline,
129(01) sy-vline,
130(91) text-015 centered,
220(01) sy-vline,
222(01) sy-vline,
223(91) text-016 centered,
313(01) sy-vline,
315(01) sy-vline,
316(91) text-017 centered,
406(01) sy-vline,
408(01) sy-vline,
409(91) text-018 centered,
499(01) sy-vline,
501(01) sy-vline,
502(91) text-026 centered,
592(01) sy-vline,
594(01) sy-vline,
631(17) text-015 centered,
649(17) text-016 centered,
667(17) text-017 centered,
685(17) text-018 centered,

703(17) p_desc centered,


721(01) sy-vline.
endform. " f_segundo_cabec
*&---------------------------------------------------------------------*
*& Form f_terceiro_cabec
*&---------------------------------------------------------------------*
form f_terceiro_cabec.
format color 7 intensified on.
write: /(001) sy-vline,
038(17) text-025 centered,
056(17) vg_at03 centered,
074(17) vg_at04 centered,
092(17) vg_at05 centered,
110(17) text-024 centered,
127(01) sy-vline,
129(01) sy-vline,
130(17) text-019 centered,
148(17) text-020 centered,
166(17) text-021 centered,
184(17) text-022 centered,
202(17) text-023 centered,
220(01) sy-vline,
222(01) sy-vline,
223(17) text-019 centered,
241(17) text-020 centered,
259(17) text-021 centered,
277(17) text-022 centered,
295(17) text-023 centered,
313(01) sy-vline,
315(01) sy-vline,
316(17) text-019 centered,
334(17) text-020 centered,
352(17) text-021 centered,
370(17) text-022 centered,
388(17) text-023 centered,
406(01) sy-vline,
408(01) sy-vline,
409(17) text-019 centered,
424(17) text-020 centered,
445(17) text-021 centered,
463(17) text-022 centered,
481(17) text-023 centered,
499(01) sy-vline,
501(01) sy-vline,
502(17) text-019 centered,
520(17) text-020 centered,
538(17) text-021 centered,
556(17) text-022 centered,
574(17) text-023 centered,
592(01) sy-vline,
594(01) sy-vline,
595(17) vg_at01 centered,

613(17) vg_at02 centered,


631(17) text-025 centered,
649(17) vg_at03 centered,
667(17) vg_at04 centered,
685(17) vg_at05 centered,
703(17) text-024 centered,
721(01) sy-vline.
endform. " f_terceiro_cabec
*&---------------------------------------------------------------------*
*& Form f_pri_lin_total
*&---------------------------------------------------------------------*
form f_pri_lin_total.
sort: t_totais by tipo descending.
format color 1 intensified on.
read table t_totais into wa_totais with key tipo = space.
write: /(001) sy-vline,
002(35) text-027 centered. "Inicial 20
perform f_imprime_rel using wa_totais.
format color 2 intensified on.
read table t_totais into wa_totais with key tipo = vg_c.
write: /(001) sy-vline,
002(35) text-028 centered.
perform f_imprime_rel using wa_totais.
endform. " f_pri_lin_total
*&---------------------------------------------------------------------*
*& Form f_imprime_rel
*&---------------------------------------------------------------------*
form f_imprime_rel using p_saida like wa_saida.
data: vl_brl(3) type c value 'BRL',
vl_usd(3) type c value 'USD',
vl_cur(3) type c.
vl_cur = vl_brl.
if p_afab eq 10.
vl_cur = vl_usd.
endif.
write: 038(17) p_saida-tot_ant1 currency vl_cur right-justified,
056(17) p_saida-tot_ant2 currency vl_cur right-justified,
074(17) p_saida-tot_ant3 currency vl_cur right-justified,
092(17) p_saida-tot_ant4 currency vl_cur right-justified,
110(17) p_saida-tot_ant5 currency vl_cur right-justified,
127(01) sy-vline,
129(01) sy-vline,
130(17) p_saida-at0102_1 currency vl_cur right-justified,
148(17) p_saida-at0102_2 currency vl_cur right-justified,
166(17) p_saida-at0102_3 currency vl_cur right-justified,
184(17) p_saida-at0102_4 currency vl_cur right-justified,
202(17) p_saida-at0102_5 currency vl_cur right-justified,
220(01) sy-vline,
222(01) sy-vline,

223(17) p_saida-at03_1 currency vl_cur right-justified,


241(17) p_saida-at03_2 currency vl_cur right-justified,
259(17) p_saida-at03_3 currency vl_cur right-justified,
277(17) p_saida-at03_4 currency vl_cur right-justified,
295(17) p_saida-at03_5 currency vl_cur right-justified,
313(01) sy-vline,
315(01) sy-vline,
316(17) p_saida-at04_1 currency vl_cur right-justified,
334(17) p_saida-at04_2 currency vl_cur right-justified,
352(17) p_saida-at04_3 currency vl_cur right-justified,
370(17) p_saida-at04_4 currency vl_cur right-justified,
388(17) p_saida-at04_5 currency vl_cur right-justified,
406(01) sy-vline,
408(01) sy-vline,
409(17) p_saida-at05_1 currency vl_cur right-justified,
427(17) p_saida-at05_2 currency vl_cur right-justified,
445(17) p_saida-at05_3 currency vl_cur right-justified,
463(17) p_saida-at05_4 currency vl_cur right-justified,
481(17) p_saida-at05_5 currency vl_cur right-justified,
499(01) sy-vline,
501(01) sy-vline,
502(17) p_saida-resu_1 currency vl_cur right-justified,
520(17) p_saida-resu_2 currency vl_cur right-justified,
538(17) p_saida-resu_3 currency vl_cur right-justified,
556(17) p_saida-resu_4 currency vl_cur right-justified,
574(17) p_saida-resu_5 currency vl_cur right-justified,
592(01) sy-vline,
594(01) sy-vline,
595(17) p_saida-total_1 currency vl_cur right-justified,
613(17) p_saida-total_2 currency vl_cur right-justified,
631(17) p_saida-total_3 currency vl_cur right-justified,
649(17) p_saida-total_4 currency vl_cur right-justified,
667(17) p_saida-total_5 currency vl_cur right-justified,
685(17) p_saida-total_6 currency vl_cur right-justified,
703(17) p_saida-total_7 currency vl_cur right-justified,
721(01) sy-vline.
endform. " f_imprime_rel
*&---------------------------------------------------------------------*
*& Form f_gera_excel
*&---------------------------------------------------------------------*
form f_gera_excel.
perform: f_cria_planilha,
f_monta_cabecalhos,
f_monta_linhas,
f_salvar_planilha.
endform. " f_gera_excel
*&---------------------------------------------------------------------*
*& Form f_calcula_resumo
*&---------------------------------------------------------------------*
form f_calcula_resumo using p_resu_2
p_resu_3

p_resu_4
p_resu_5.
p_resu_5 = p_resu_2 + p_resu_3 + p_resu_4.
endform. " f_calcula_resumo
*&---------------------------------------------------------------------*
*& Form f_linha
*&---------------------------------------------------------------------*
form f_linha.
write: /001(127) sy-uline,
129(092) sy-uline,
222(092) sy-uline,
315(092) sy-uline,
408(092) sy-uline,
501(092) sy-uline,
594(128) sy-uline.
endform. " f_linha
*&---------------------------------------------------------------------*
*& Form f_concatena
*&---------------------------------------------------------------------*
form f_concatena using p_texto
changing p_mes.
case p_afab.
when 01.
concatenate p_texto '-' vg_real into p_mes separated by space.
when 10.
concatenate p_texto '-' vg_dolr into p_mes separated by space.
endcase.
endform. " f_concatena
*&---------------------------------------------------------------------*
*& Form f_cria_planilha
*&---------------------------------------------------------------------*
form f_cria_planilha.
data: vl_visible type i.
vl_visible = 1.
if p_ver is initial.
vl_visible = 0.
endif.
* Cria aplicao Excel
create object vg_excel 'EXCEL.APPLICATION'.
set property of vg_excel 'DisplayAlerts' = 0.
call method of vg_excel 'WORKBOOKS' = vg_workbooks.
set property of vg_excel 'VISIBLE' = vl_visible.
* Criao do WorkBook
set property of vg_excel 'SheetsInNewWorkbook' = 1.
call method of vg_workbooks 'ADD'.
call method of vg_excel 'WORKSHEETS' = vg_sheet.

call method of vg_sheet 'ADD'.


free object vg_sheet.
* Nomeia e Ativa Aba da Planilha
call method of vg_excel 'WORKSHEETS' = vg_sheet exporting #1 = 1.
set property of vg_sheet 'NAME' = text-038. "Limite 31 Caracteres
call method of vg_sheet 'ACTIVATE'.
endform. " f_cria_planilha
*&---------------------------------------------------------------------*
*& Form f_monta_cabecalhos
*&---------------------------------------------------------------------*
form f_monta_cabecalhos.
* Monta Primeiro Cabealho
perform f_mescla_celulas using 1 1 3 2 vg_descr.
perform f_add_field using 1 4 vg_anterior.
perform: f_mescla_celulas using 1 9 1 13 vg_titulo,
f_mescla_celulas using 1 15 1 19 vg_titulo,
f_mescla_celulas using 1 21 1 25 vg_titulo,
f_mescla_celulas using 1 27 1 31 vg_titulo,
f_mescla_celulas using 1 33 1 37 vg_titulo,
f_mescla_celulas using 1 39 1 45 vg_atual.
* Monta Segundo Cabealho
perform: f_add_field using 2 3 text-015,
f_add_field using 2 4 text-016,
f_add_field using 2 5 text-017,
f_add_field using 2 6 text-018,
f_add_field using 2 7 vg_empresa.
perform: f_mescla_celulas using 2 9 2 13 text-015,
f_mescla_celulas using 2 15 2 19 text-016,
f_mescla_celulas using 2 21 2 25 text-017,
f_mescla_celulas using 2 27 2 31 text-018,
f_mescla_celulas using 2 33 2 37 text-026.
perform: f_add_field using 2 41 text-015,
f_add_field using 2 42 text-016,
f_add_field using 2 43 text-017,
f_add_field using 2 44 text-018,
f_add_field using 2 45 vg_empresa.
* Monta Terceiro Cabealho
perform: f_add_field using 3 3 text-025,
f_add_field using 3 4 vg_at03,
f_add_field using 3 5 vg_at04,
f_add_field using 3 6 vg_at05,
f_add_field using 3 7 text-024.
perform: f_add_field using 3 9 text-019,
f_add_field using 3 10 text-020,
f_add_field using 3 11 text-021,
f_add_field using 3 12 text-022,
f_add_field using 3 13 text-023.

perform: f_add_field using 3 15 text-019,


f_add_field using 3 16 text-020,
f_add_field using 3 17 text-021,
f_add_field using 3 18 text-022,
f_add_field using 3 19 text-023.
perform: f_add_field using 3 21 text-019,
f_add_field using 3 22 text-020,
f_add_field using 3 23 text-021,
f_add_field using 3 24 text-022,
f_add_field using 3 25 text-023.
perform: f_add_field using 3 27 text-019,
f_add_field using 3 28 text-020,
f_add_field using 3 29 text-021,
f_add_field using 3 30 text-022,
f_add_field using 3 31 text-023.
perform: f_add_field using 3 33 text-019,
f_add_field using 3 34 text-020,
f_add_field using 3 35 text-021,
f_add_field using 3 36 text-022,
f_add_field using 3 37 text-023.
perform: f_add_field using 3 39 vg_at01,
f_add_field using 3 40 vg_at02,
f_add_field using 3 41 text-025,
f_add_field using 3 42 vg_at03,
f_add_field using 3 43 vg_at04,
f_add_field using 3 44 vg_at05,
f_add_field using 3 45 text-024.
endform. " f_monta_cabecalhos
*&---------------------------------------------------------------------*
*& Form f_mescla_celulas
*&---------------------------------------------------------------------*
form f_mescla_celulas using p_l1 type i
p_c1 type i
p_l2 type i
p_c2 type i
p_desc.
call method of vg_sheet 'Cells' = vg_cells exporting #1 = p_l2
#2 = p_c1.
set property of vg_cells 'Value' = p_desc.
call method of vg_excel 'Cells' = vg_cell1
exporting
#1 = p_l1
#2 = p_c1.
call method of vg_excel 'Cells' = vg_cell2
exporting
#1 = p_l2
#2 = p_c2.
call method of vg_excel 'Range' = vg_cells
exporting

#1 = vg_cell1
#2 = vg_cell2.
call method of vg_cells 'Select' .
call method of vg_cells 'Merge' .
call method of vg_excel 'Cells' = vg_cell1
exporting
#1 = p_l2
#2 = p_c1.
set property of vg_cell1 'HorizontalAlignment' = -4108 .
set property of vg_cell1 'VerticalAlignment' = -4108 .
endform. " f_mescla_celulas
*&---------------------------------------------------------------------*
*& Form f_add_field
*&---------------------------------------------------------------------*
form f_add_field using p_linha type i
p_coluna type i
p_valor.
call method of vg_excel 'Cells' = vg_cell1
exporting
#1 = p_linha
#2 = p_coluna.
set property of vg_cell1 'Value' = p_valor.
endform. " f_add_field
*&---------------------------------------------------------------------*
*& Form f_monta_linhas
*&---------------------------------------------------------------------*
form f_monta_linhas.
data: vl_dep type c,
vl_and type c.
refresh t_select.
perform f_monta_select using 'WA_SAIDA'.
* Monta Primeira Linha de Totais
perform f_mescla_celulas using 4 1 4 2 text-027.
read table t_totais into wa_totais with key tipo = space.
perform f_print_line using 4 wa_totais vg_x.
* Monta Segunda Linha de Totais
perform f_mescla_celulas using 5 1 5 2 text-028.
read table t_totais into wa_totais with key tipo = vg_c.
perform f_print_line using 5 wa_totais vg_x.
* Monta Linhas
vg_lin = 6.
loop at t_saida into wa_saida.
* Imprime Cabealho para Depreciao Acumulada
if wa_saida-tipo eq vg_d
and vl_dep is initial.

read table t_totais into wa_totais with key tipo = vg_d.


perform f_mescla_celulas using vg_lin 1 vg_lin 2 text-036.
perform f_print_line using vg_lin wa_totais vg_x.
add 1 to vg_lin.
add 1 to vl_dep.
elseif wa_saida-tipo eq vg_z
and vl_and is initial.
* Imprime Cabealho para Imobilizado em Andamento
read table t_totais into wa_totais with key tipo = vg_z.
perform f_mescla_celulas using vg_lin 1 vg_lin 2 text-037.
perform f_print_line using vg_lin wa_totais vg_x.
add 1 to vg_lin.
add 1 to vl_and.
endif.
* Imprime Linhas
perform f_print_line using vg_lin wa_saida space.
add 1 to vg_lin.
endloop.
endform. " f_monta_linhas
*&---------------------------------------------------------------------*
*& Form f_print_line
*&---------------------------------------------------------------------*
form f_print_line using p_lin type i
p_totais like wa_saida
p_desc.
data: vl_descr(05) type c value 'DESCR',
vl_txtcl(06) type c value 'CLASSE',
vl_txtsp(03) type c value 'SPA',
vl_txtts(09) type c value 'P_TOTAIS-',
vl_tipo(04) type c value 'TIPO'.
* Ao submeter o programa na SLIN a programa indica uma inconsistncia
* nesse ponto, por que a estrutua P_TOTAIS no utilizada estticamente
* mais ela utilizada de forma dinmica, por isso a inconsistncia foi
* ignorada.
loop at t_select into wa_campos.
vg_col = sy-tabix.
concatenate vl_txtts wa_campos into vg_campo.
assign (vg_campo) to <fs_campo>.
if not p_desc is initial and ( wa_campos eq vl_descr
or wa_campos eq vl_txtcl ).
continue.
endif.
check wa_campos(3) ne vl_txtsp
and wa_campos ne vl_tipo.
perform: f_add_field using p_lin vg_col <fs_campo>.
endloop.

endform. " f_print_line


*&---------------------------------------------------------------------*
*& Form f_call_screen
*&---------------------------------------------------------------------*
form f_call_screen.
call selection-screen 0100 starting at 030 010.
if sy-subrc ne 0.
stop.
endif.
endform. " f_call_screen
*&---------------------------------------------------------------------*
*& Form f_salvar_planilha
*&---------------------------------------------------------------------*
form f_salvar_planilha.
call method of vg_sheet 'SaveAs'
exporting #1 = p_file
#2 = 1. "#EC NEEDED )
call method of vg_sheet 'SAVE'.
call method of vg_sheet 'QUIT'.
set property of vg_excel 'Visible' = 0.
endform. " f_salvar_planilha
*&---------------------------------------------------------------------*
*& Form f_salva_arquivo
*&---------------------------------------------------------------------*
form f_salva_arquivo using p_file.
data: vl_filename type string,
vl_full type string,
vl_path type string,
vl_filter type string,
vl_cam type string,
vl_xls(04) type c value '.XLS',
vl_ini(03) type c value 'C:\'.
vl_filter = vl_xls.
vl_cam = vl_ini.
call method cl_gui_frontend_services=>file_save_dialog
exporting
default_file_name = vl_filename
file_filter = vl_filter
initial_directory = vl_cam
changing
filename = vl_filename
path = vl_path
fullpath = vl_full.
concatenate vl_full vl_filter into p_file.
endform. " f_salva_arquivo

*&---------------------------------------------------------------------*
*& Form f_limpa_dados
*&---------------------------------------------------------------------*
form f_limpa_dados.
clear: wa_anla, wa_anlc, wa_anea, wa_anep,
wa_anek, wa_anlp, wa_anlz, wa_ankt,
wa_t095b, wa_skat, wa_saida, wa_totais.
refresh: t_anla, t_anlc, t_anea, t_anep,
t_anek, t_anlp, t_anlz, t_ankt,
t_t095b, t_skat, t_saida, t_totais, t_select.
free: t_anla, t_anlc, t_anea, t_anep,
t_anek, t_anlp, t_anlz, t_ankt,
t_t095b, t_skat, t_saida, t_totais, t_select.
free object: vg_excel, vg_workbooks, vg_cells,
vg_cell1, vg_cell2, vg_sheet.
endform. " f_limpa_dados

You might also like