Professional Documents
Culture Documents
***INCLUDE MZFICOM003F01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form f_selecao_inf_nota
*&---------------------------------------------------------------------*
*&
TELA 0100 - chamada para seleo de dados
*&
Rotina que seleciona as comisses que ainda no nro nota fiscal
*&---------------------------------------------------------------------*
*&
form f_selecao_pagamentos using value(p_status).
call function 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 10
text
= 'Lendo comisses ...'.
*> Leitura das comisses da quinzena selecionada que no tem o numero
*> da nota fiscal informado
if ( p_status eq 'E' ).
select * from zfitcom003
into table t_zfitcom003
where ( pagnr
in s_pagnr )
and ( bukrs
eq p_bukrs )
and ( vkbur
in s_vkbur )
*>
and ( quinzena le p_quinz )
and ( status le '2'
).
else.
select * from zfitcom003
into table t_zfitcom003
where ( pagnr
in s_pagnr
and ( bukrs
eq p_bukrs
and ( vkbur
in s_vkbur
*>
and ( quinzena le p_quinz
and ( status eq p_status
endif.
check ( sy-subrc eq 0 ).
)
)
)
)
).
zfitcom004
table t_zfitcom004
all entries in t_zfitcom003
( pagnr eq t_zfitcom003-pagnr ).
select * from
into
for
where
zfitcom011
table t_base12
all entries in t_zfitcom003
( pagnr eq t_zfitcom003-pagnr ).
perform f_valida_vkbur.
if ( not t_tvbur[] is initial ).
perform f_calcula_impostos.
endif.
call function 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 100
text
= 'Finalizado ...'.
endform.
" f_selecao_pagamentos
*&---------------------------------------------------------------------*
*&
Form f_verifica_nota
*&---------------------------------------------------------------------*
*&
Rotina que verifica em quais vendedores foi informada a nf
*&---------------------------------------------------------------------*
*&
form f_verifica_nota.
zfitcom003-usrnf = sy-uname.
zfitcom003-dtrnf = sy-datum.
zfitcom003-hrrnf = sy-uzeit.
zfitcom003-status = '2'.
modify t_zfitcom003 from zfitcom003
transporting usrnf dtrnf hrrnf status
where ( nfnum ne space ).
delete t_zfitcom003 where ( nfnum eq space ).
endform.
" f_verifica_nota
*&---------------------------------------------------------------------*
*&
Form f_gera_pagamento
*&---------------------------------------------------------------------*
*&
Rotina que executa baixa na conta de comisso e lana crdito
*&
na conta do representante
*&---------------------------------------------------------------------*
*&
form f_gera_pagamento.
data: SPERR_USER
LIKE SY-UNAME.
" Sperrender User
delete t_zfitcom004 where ( mark ne c_mark ).
describe table t_zfitcom003 lines v_totpgt.
clear v_totproc.
loop at t_zfitcom003 into zfitcom003.
refresh: t_bdcdata, t_bdcaux, t_itemaux, t_item.
clear wa_shdb.
*> Filtra somente itens do pagamento e soma valores por belnr
*> criando nova tabela de itens
move-corresponding zfitcom003 to wa_shdb.
clear v_totlin.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
t_itemaux[] = t_zfitcom004[].
delete t_itemaux where ( pagnr ne zfitcom003-pagnr ).
sort t_itemaux by pagnr belnr buzei.
loop at t_itemaux into wa_itemaux.
wa_item = wa_itemaux.
on change of belnr.
endon.
at end of belnr.
sum.
wa_item-vlpgto = wa_itemaux-vlpgto + wa_itemaux-vlperd
+ wa_itemaux-vldesc + wa_itemaux-vlpdd.
wa_item-vlsald = wa_item-wrbtr - wa_item-vlpgto
- wa_item-vlreal.
if ( wa_item-vlsald lt 0 ).
clear wa_item-vlsald.
endif.
*
*
*
*
*
*
*
*
wa_item-vlperd
wa_item-vldesc
wa_item-vlpdd
append wa_item
endat.
endloop.
= wa_itemaux-vlperd.
= wa_itemaux-vldesc.
= wa_itemaux-vlpdd.
to t_item.
if ( wa_item-shkzg eq 'S' ).
wa_shdb-vlpgto = wa_item-vldesc.
endif.
*
*
*
check ( wa_item-vlpgto ne 0 ) or
( wa_item-shkzg eq 'S' ).
if ( wa_item-vlsald gt 0 ).
clear wa_shdb-mark.
v_totlin = v_totlin + 1.
else.
wa_shdb-mark = c_mark.
endif.
v_bukrs
= wa_item-bukrs.
wa_shdb-vlpgto = wa_shdb-vlpgto + wa_shdb-vldesc +
wa_shdb-vlpdd + wa_shdb-vlperd.
if ( wa_shdb-vlpgto ne 0 ).
( wa_item-shkzg eq 'S' ).
append wa_shdb to t_shdb.
endif.
*BDS - fim.
move-corresponding wa_shdb to wa_shdb60.
append wa_shdb60 to t_shdb60.
endloop.
*> Guarda valores de impostos para o fornecedor
select * from lfbw
into table t_lfbw_old
where ( lifnr eq wa_lfa1-lifnr )
and ( bukrs eq v_bukrs
).
* Verifica se o fornecedor no est sendo bloqueado por alguma transao
CALL FUNCTION 'ENQUEUE_EXLFA1'
EXPORTING LIFNR
= wa_lfa1-lifnr
EXCEPTIONS FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2.
CASE SY-SUBRC.
*------- Konto von anderem Benutzer gesperrt --------------------------WHEN 1.
SPERR_USER = SY-MSGV1.
* Erro de sistema ao bloquear; contactar o administrador de sistema
MESSAGE E042(f2) WITH wa_LFA1-LIFNR SPERR_USER.
*------- Systemfehler -------------------------------------------------WHEN 2.
MESSAGE E038(f2).
ENDCASE.
CALL FUNCTION 'DEQUEUE_EXLFA1'
EXPORTING LIFNR
= wa_LFA1-LIFNR
EXCEPTIONS SYSTEM_FAILURE = 1.
perform f_grava_lfbw using 1.
perform f_grava_batch_input.
perform f_grava_lfbw using 2.
refresh: t_shdb, t_shdb60.
endloop.
concatenate 'Foram processados' v_totpgt 'pagamentos,'
into v_text
separated by space.
concatenate 'onde' v_totproc 'foram criados com sucesso!' into v_text2
separated by space.
message i999(zarm) with v_text v_text2.
endform.
" f_gera_pagamento
*&---------------------------------------------------------------------*
*&
Form f_grava_batch_input
*&---------------------------------------------------------------------*
*&
Grava BI
*&---------------------------------------------------------------------*
*&
form f_grava_batch_input.
data:
v_idx(02)
v_abpos
v_zuonr
type n,
like rf05a-abpos,
like bsis-zuonr,
v_first
type c,
v_item_shkzg type c,
v_resctr_txt(8) type c,
v_comando
type c,
v_data(10)
type c,
v_datnf(10)
type c.
refresh: t_bdcdata, t_messtab.
sort t_shdb60 by mark hkont gsber belnr buzei.
sort t_shdb by mark hkont belnr buzei.
loop at t_shdb60 into wa_shdb60.
wa_60aux = wa_shdb60.
at first.
clear: v_first, v_comando.
write zfitcom003-datnf
to v_datnf ddmmyy.
write sy-datum
to v_data ddmmyy.
if ( zfitcom003-resctr eq c_mark ).
v_resctr_txt = 'Resciso'.
else.
v_resctr_txt = 'Clculo'.
endif.
concatenate v_resctr_txt 'representante' wa_60aux-vkbur
into v_text separated by space.
concatenate v_resctr_txt wa_60aux-pagnr 'representante'
wa_60aux-vkbur into v_text2 separated by space.
*>
'1100',
'=PAYM',
wa_60aux-lifnr,
v_datnf,
'KR',
v_data,
wa_60aux-nfnum,
v_valor,
'BRL',
v_text2.
'1100',
'=MORE',
v_data,
'5000',
'A'.
'SAPMF05A'
'BDC_OKCODE'
'INVFO-ZFBDT'
'INVFO-ZTERM'
'INVFO-ZLSPR'
perform f_shdb60_creditos.
endat.
at new gsber.
sum.
if ( v_linhas > 3 ).
clear v_linhas.
perform f_bdcinsert using: 'X' 'SAPMF05A'
'1100',
' ' 'BDC_OKCODE' '=0006',
' ' 'BDC_CURSOR' 'ACGL_ITEM-MARKSP(01)',
' ' 'ACGL_ITEM-MARKSP(01)' c_mark.
perform f_bdcinsert using: 'X' 'SAPMF05A'
'1100',
' ' 'BDC_OKCODE' '/00'.
endif.
v_linhas = v_linhas + 1.
if ( wa_shdb60-vlpgto < 0 ).
wa_shdb60-vlpgto = wa_shdb60-vlpgto * -1.
v_item_shkzg
= 'H'.
else.
v_item_shkzg
= 'S'.
endif.
write wa_shdb60-vlpgto to v_valor.
* S gera se tiver o nro da conta contbil
if not wa_shdb60-hkont is initial.
concatenate 'ACGL_ITEM-HKONT(' v_linhas ')' into v_campo.
perform f_bdcinsert using ' ' v_campo
wa_shdb60-hkont.
concatenate 'ACGL_ITEM-SHKZG(' v_linhas ')' into v_campo.
perform f_bdcinsert using ' ' v_campo
v_item_shkzg.
concatenate 'ACGL_ITEM-WRBTR(' v_linhas ')' into v_campo.
perform f_bdcinsert using ' ' v_campo
v_valor.
concatenate 'ACGL_ITEM-ZUONR(' v_linhas ')' into v_campo.
perform f_bdcinsert using ' ' v_campo
wa_60aux-nfnum.
concatenate 'ACGL_ITEM-SGTXT(' v_linhas ')' into v_campo.
perform f_bdcinsert using ' ' v_campo
v_text2.
concatenate 'ACGL_ITEM-GSBER(' v_linhas ')' into v_campo.
perform f_bdcinsert using ' ' v_campo
wa_shdb60-gsber.
endif.
endat.
if ( v_linhas > 3 ).
clear v_linhas.
perform f_bdcinsert using: 'X' 'SAPMF05A'
'1100',
' ' 'BDC_OKCODE' '=0006',
' ' 'BDC_CURSOR' 'ACGL_ITEM-MARKSP(01)',
' ' 'ACGL_ITEM-MARKSP(01)' c_mark.
perform f_bdcinsert using: 'X' 'SAPMF05A'
'1100',
' ' 'BDC_OKCODE' '/00'.
endif.
endloop.
t_bdcdata
p_mode
'S'
t_messtab.
if ( sy-subrc ne 0 ).
perform f_busca_mensagem using ' ' changing v_msg.
message i999(zarm) with v_msg(50) v_msg+50(50) v_msg+100(50).
else.
v_numdoc = sy-msgv1.
perform f_busca_mensagem using 'S' changing v_msg.
refresh: t_bdcdata, t_messtab.
data: lc_fim(01).
* Verifica se no grid existem soh os lantos de resciso 1/3 e 1/12
loop at t_shdb into wa_shdb.
if wa_shdb-belnr = '9999999999'.
lc_fim = 'X'.
else.
lc_fim = ' '.
endif.
endloop.
*> Fazer agora a PA do pagamento acima.
if lc_fim is initial.
loop at t_shdb into wa_shdb.
wa_shdbaux = wa_shdb.
at first.
v_abpos = 1.
clear: v_first, v_comando.
write sy-datum
to v_data ddmmyy.
if ( zfitcom003-resctr eq c_mark ).
v_resctr_txt = 'Resciso'.
else.
v_resctr_txt = 'Clculo'.
endif.
concatenate v_resctr_txt 'rp:' wa_shdbaux-vkbur
into v_text separated by space.
concatenate v_resctr_txt wa_shdbaux-pagnr 'representante'
wa_shdbaux-vkbur
into v_text2 separated by space.
perform f_bdcinsert using: 'X'
' '
' '
' '
' '
' '
' '
'SAPMF05A'
'BDC_OKCODE'
'BKPF-BLDAT'
'BKPF-BLART'
'BKPF-BUKRS'
'BKPF-WAERS'
'BKPF-XBLNR'
'0122',
'=SL',
v_data,
'AB',
P_BUKRS,
'BRL',
wa_shdbaux-nfnum,
'
'
'
'
'BKPF-BKTXT' v_text,
'RF05A-AUGTX' v_text2,
'RF05A-XPOS1(04)' c_mark,
'FS006-DOCID' '*'.
' ' 'RF05A-NEWBS' '31',
' ' 'RF05A-NEWKO' wa_shdbaux-lifnr.
*
*
'
'
'
'
endat.
* S compensa os lanctos normais - resciso no compensa
check not wa_shdb-hkont is initial.
at new hkont.
if ( v_first ne c_mark ).
v_first = c_mark.
else.
perform f_bdcinsert using: 'X' 'SAPDF05X'
'3100',
' ' 'BDC_OKCODE' '=SL'.
endif.
clear v_linhas.
v_idx = 1.
perform f_bdcinsert using: 'X'
' '
' '
' '
' '
' '
if ( wa_shdb-mark eq c_mark ).
perform f_bdcinsert using '
'SAPMF05A'
'BDC_OKCODE'
'RF05A-AGBUK'
'RF05A-AGKON'
'RF05A-AGKOA'
'RF05A-XNOPS'
'0710',
'/00',
P_BUKRS,
wa_shdb-hkont,
'S',
'X'.
'SAPMF05A'
'0710',
'BDC_OKCODE' '/00',
'RF05A-AGBUK' P_BUKRS,
'RF05A-AGKON' wa_shdb-hkont,
'RF05A-AGKOA' 'S',
'RF05A-XNOPS' 'X',
'RF05A-XPOS1(03)' c_mark.
t_bdcdata
p_mode
'S'
t_messtab.
if ( sy-subrc eq 0 ).
v_totproc = v_totproc + 1.
v_compdc = sy-msgv1.
perform f_busca_mensagem using 'S' changing v_msg.
zfitcom003-uspgt = sy-uname.
zfitcom003-dtpgt = sy-datum.
zfitcom003-hrpgt = sy-uzeit.
zfitcom003-status = '3'.
zfitcom003-numdoc = v_numdoc.
zfitcom003-compdc = v_compdc.
modify t_zfitcom003 from zfitcom003
transporting uspgt dtpgt hrpgt
'0105',
'=BU',
v_numdoc,
sy-datum(4),
'02'.
if ( p_mode is initial ).
p_mode = 'N'.
endif.
call transaction 'FB08' using
mode
update
messages into
t_bdcdata
p_mode
'S'
t_messtab.
if ( sy-subrc ne 0 ).
perform f_busca_mensagem using ' ' changing v_msg.
message i999(zarm) with v_msg(50) v_msg+50(50) v_msg+100(50).
endif.
endif.
else.
v_totproc = v_totproc + 1.
v_compdc = sy-msgv1.
perform f_busca_mensagem using 'S' changing v_msg.
zfitcom003-uspgt = sy-uname.
zfitcom003-dtpgt = sy-datum.
zfitcom003-hrpgt = sy-uzeit.
zfitcom003-status = '3'.
zfitcom003-numdoc = v_numdoc.
zfitcom003-compdc = v_compdc.
modify t_zfitcom003 from zfitcom003
transporting uspgt dtpgt hrpgt
status numdoc compdc
where ( pagnr eq zfitcom003-pagnr ).
* Atualizar no banco
update zfitcom003 from table t_zfitcom003.
commit work.
endif.
endif.
endform.
" f_grava_batch_input
*&---------------------------------------------------------------------*
*&
Form f_shdb60_creditos
*&---------------------------------------------------------------------*
*&
Grava BI dos descontos concedidos, perdas ou proviso de PDD
*&---------------------------------------------------------------------*
*&
form f_shdb60_creditos.
delete t_item where ( shkzg eq 'S' ).
sort t_item by pagnr belnr buzei.
clear v_linhas.
loop at t_item into wa_item.
wa_itemaux = wa_item.
at new belnr.
sum.
if ( wa_item-vlperd gt 0 ).
write wa_item-vlperd to v_valor.
v_text
= text-b01.
perform f_bi_creditos.
endif.
if ( wa_item-vlpdd gt 0 ).
write wa_item-vlpdd to v_valor.
v_text
= text-b02.
perform f_bi_creditos.
endif.
if ( wa_item-vldesc gt 0 ).
write wa_item-vldesc to v_valor.
v_text
= text-b03.
perform f_bi_creditos.
endif.
endat.
*> Correo para pagto de resciso
*> begin GMS - SPEC - 21.09.2004
if ( wa_item-blart eq '12' ).
write wa_item-vlpgto to v_valor.
v_text
= text-b04.
perform f_bi_creditos.
endif.
if ( wa_item-blart eq '03' ).
" f_shdb60_creditos
*&---------------------------------------------------------------------*
*&
Form f_bi_creditos
*&---------------------------------------------------------------------*
form f_bi_creditos.
data: v_hkont
v_shkzg
like zfitcom004-hkont,
like bsis-shkzg.
if ( v_linhas eq 4 ).
clear v_linhas.
perform f_bdcinsert using: 'X'
' '
' '
' '
perform f_bdcinsert using: 'X'
' '
endif.
'SAPMF05A'
'1100',
'BDC_OKCODE' '=0006',
'BDC_CURSOR' 'ACGL_ITEM-MARKSP(01)',
'ACGL_ITEM-MARKSP(01)' c_mark.
'SAPMF05A'
'1100',
'BDC_OKCODE' '/00'.
do 1 times.
v_hkont = '4302005'.
if ( '1203' cs wa_item-blart ).
v_shkzg = 'S'.
else.
v_shkzg = 'H'.
endif.
*Em 02/09/2004 - alteramos para no lanar a contrapartida da conta.
* pois esta j conta sumarizada no total (2104009/2104010)
* Pendncia 1035
*
else.
*
v_hkont = wa_itemaux-hkont.
* endif.
v_linhas = v_linhas + 1.
concatenate 'ACGL_ITEM-HKONT(' v_linhas ')' into v_campo.
perform f_bdcinsert using ' ' v_campo
v_hkont.
concatenate 'ACGL_ITEM-SHKZG(' v_linhas ')' into v_campo.
perform f_bdcinsert using ' ' v_campo
v_shkzg.
concatenate 'ACGL_ITEM-WRBTR(' v_linhas ')' into v_campo.
perform f_bdcinsert using ' ' v_campo
v_valor.
concatenate 'ACGL_ITEM-ZUONR(' v_linhas ')' into v_campo.
perform f_bdcinsert using ' ' v_campo
wa_itemaux-zuonr.
concatenate 'ACGL_ITEM-SGTXT(' v_linhas ')' into v_campo.
perform f_bdcinsert using ' ' v_campo
v_text.
concatenate 'ACGL_ITEM-GSBER(' v_linhas ')' into v_campo.
perform f_bdcinsert using ' ' v_campo
wa_itemaux-gsber.
enddo.
endform.
" f_bi_creditos
*&---------------------------------------------------------------------*
*&
Form f_shdb_descontos
*&---------------------------------------------------------------------*
*&
Grava BI dos descontos concedidos, perdas ou proviso de PDD
*&---------------------------------------------------------------------*
*&
form f_shdb_descontos.
data: v_totdesc like zfitcom004-vldesc,
v_perdas
like zfitcom004-vlperd.
delete t_item where ( shkzg eq 'S' ).
sort t_item by pagnr belnr buzei.
refresh: t_bdcaux, t_bdcaux2.
clear v_totdesc.
loop at t_item into wa_item.
wa_itemaux = wa_item.
at new belnr.
sum.
clear v_perdas.
if ( wa_item-vlperd gt 0 ).
write wa_item-vlperd to v_valor.
v_text
= text-b01.
v_perdas = v_perdas + wa_item-vlperd.
perform f_bi_descontos.
endif.
if ( wa_item-vlpdd gt 0 ).
write wa_item-vlpdd to v_valor.
v_text
= text-b02.
v_perdas = v_perdas + wa_item-vlpdd.
perform f_bi_descontos.
endif.
if ( wa_item-vldesc gt 0 ).
write wa_item-vldesc to v_valor.
v_text
= text-b03.
v_perdas = v_perdas + wa_item-vldesc.
perform f_bi_descontos.
endif.
endat.
if ( wa_item-blart eq '12' ).
write wa_item-vlpgto to v_valor.
v_text
= text-b04.
perform f_bi_descontos.
endif.
if ( wa_item-blart eq '03' ).
write wa_item-vlpgto to v_valor.
v_text
= text-b05.
perform f_bi_descontos.
endif.
endloop.
'0302',
v_valor,
'OV01',
v_text.
if ( t_bdcaux[] is initial ).
perform f_bdcinsert using ' ' 'BDC_OKCODE' '=SL'.
else.
perform f_bdcinsert using ' ' 'BDC_OKCODE' '/00'.
append lines of t_bdcaux2 to t_bdcaux.
append lines of t_bdcaux to t_bdcdata.
refresh t_bdcaux.
perform f_bdcinsert using: 'X' 'SAPMF05A'
'0300',
' ' 'BDC_OKCODE' '=SL'.
append lines of t_bdcaux2 to t_bdcdata.
refresh t_bdcaux2.
endif.
endform.
" f_shdb_descontos
*&---------------------------------------------------------------------*
*&
Form f_bi_descontos
*&---------------------------------------------------------------------*
form f_bi_descontos.
if ( '1203' cs wa_item-blart ).
perform f_bdcaux
using: ' ' 'RF05A-NEWBS' '40',
' ' 'RF05A-NEWKO' '4302005'.
else.
perform f_bdcaux
using: ' ' 'RF05A-NEWBS' '50',
' ' 'RF05A-NEWKO' '4302005'.
endif.
append lines of t_bdcaux2 to t_bdcaux.
refresh t_bdcaux2.
perform f_bdcaux
using: 'X'
' '
' '
' '
' '
perform f_bdcaux2
endform.
'SAPMF05A'
'BDC_OKCODE'
'BSEG-WRBTR'
'BSEG-SGTXT'
'BSEG-ZUONR'
'0300',
'/00',
v_valor,
v_text,
wa_itemaux-zuonr.
" f_bi_descontos
*&---------------------------------------------------------------------*
*&
Form f_gera_estorno
*&---------------------------------------------------------------------*
*&
Rotina que executa estorno da compensao do pagamento
*&---------------------------------------------------------------------*
*&
form f_gera_estorno.
data: v_vlsald like zfitcom004-vlsald,
v_belnr like bsik-belnr,
clear v_vlsald.
t_itemaux[] = t_zfitcom004[].
delete t_itemaux where ( pagnr ne zfitcom003-pagnr ).
perform f_saldo_por_atribuicao tables t_itemaux t_item.
sort t_item by pagnr.
loop at t_item into wa_item.
at first.
sum.
exit.
endat.
endloop.
if ( wa_item-vlsald eq 0 ). "Estorno de pagamento total
read table t_lfa1 into wa_lfa1 with key vkbur = zfitcom003-vkbur
binary search.
if ( sy-subrc ne 0 ). clear wa_lfa1. endif.
select belnr from
into
where
and
and
and
endselect.
bsik
v_belnr
( lifnr
( bukrs
( gjahr
( belnr
eq
eq
eq
eq
wa_lfa1-lifnr
'COVL'
zfitcom003-dtpgt(04)
zfitcom003-numdoc
)
)
)
).
if ( sy-subrc ne 0 ).
message i999(zarm) with 'Pagamento' zfitcom003-numdoc
'j foi realizado!'.
continue.
endif.
refresh: t_bdcdata, t_messtab.
perform f_bdcinsert using: 'X'
' '
' '
' '
' '
'SAPMF05R'
'BDC_OKCODE'
'RF05R-AUGBL'
'RF05R-BUKRS'
'RF05R-GJAHR'
if ( p_mode is initial ).
p_mode = 'N'.
endif.
call transaction 'FBRA' using
mode
update
messages into
t_bdcdata
p_mode
'S'
t_messtab.
'0100',
'=RAGL',
zfitcom003-compdc,
'COVL',
zfitcom003-dtpgt(4).
v_return = sy-subrc.
if ( sy-subrc ne 0 ).
perform f_busca_mensagem using ' ' changing v_msg.
message i999(zarm) with v_msg(50) v_msg+50(50) v_msg+100(50).
*
*
*
*
endif.
else.
v_return = 0.
endif.
'0105',
'=BU',
zfitcom003-compdc,
zfitcom003-dtpgt(4),
'02'.
if ( p_mode is initial ).
p_mode = 'N'.
endif.
call transaction 'FB08' using
mode
update
messages into
t_bdcdata
p_mode
'S'
t_messtab.
v_return = sy-subrc.
if ( sy-subrc ne 0 ).
perform f_busca_mensagem using ' ' changing v_msg.
message i999(zarm) with v_msg(50) v_msg+50(50) v_msg+100(50).
endif.
*> Extorna o lanamento de pagamento
check ( v_return eq 0 ).
refresh: t_bdcdata, t_messtab.
perform f_bdcinsert using:
'X' 'SAPMF05A'
' ' 'BDC_OKCODE'
' ' 'RF05A-BELNS'
' ' 'RF05A-GJAHS'
' ' 'UF05A-STGRD'
'0105',
'=BU',
zfitcom003-numdoc,
zfitcom003-dtpgt(4),
'02'.
if ( p_mode is initial ).
p_mode = 'N'.
endif.
call transaction 'FB08' using
mode
update
messages into
t_bdcdata
p_mode
'S'
t_messtab.
if ( sy-subrc eq 0 ).
v_numdoc = sy-msgv1.
perform f_busca_mensagem using 'S' changing v_msg.
clear: zfitcom003-uspgt, zfitcom003-dtpgt, zfitcom003-hrpgt,
zfitcom003-numdoc, zfitcom003-compdc.
zfitcom003-status = '2'.
zfitcom003-numcan = v_numdoc.
" f_gera_estorno
*&---------------------------------------------------------------------*
*&
Form f_elimina_pagamento
*&---------------------------------------------------------------------*
*&
Elimina pagamentos da tela
*&---------------------------------------------------------------------*
*&
form f_elimina_pagamento.
loop at t_zfitcom003 into zfitcom003.
zfitcom003-status = '4'.
zfitcom003-uscan = sy-uname.
zfitcom003-dtcan = sy-datum.
zfitcom003-hrcan = sy-uzeit.
modify t_zfitcom003 from zfitcom003
transporting uscan dtcan hrcan status
where ( pagnr eq zfitcom003-pagnr ).
endloop.
endform.
" f_elimina_pagamento
*&---------------------------------------------------------------------*
*&
Form f_bdcinsert
*&---------------------------------------------------------------------*
*&
Processa batch-input
*&---------------------------------------------------------------------*
*&
form f_bdcinsert using
value(p_dynbegin)
value(p_program)
value(p_dynpro).
clear wa_bdcdata.
if ( p_dynbegin eq c_mark ).
wa_bdcdata-program = p_program.
wa_bdcdata-dynpro = p_dynpro.
wa_bdcdata-dynbegin = p_dynbegin.
else.
wa_bdcdata-fnam
= p_program.
wa_bdcdata-fval
= p_dynpro.
endif.
append wa_bdcdata to t_bdcdata.
endform.
" f_bdcinsert
*&---------------------------------------------------------------------*
*&
Form f_bdcaux
*&---------------------------------------------------------------------*
*&
Processa batch-input
*&---------------------------------------------------------------------*
*&
value(p_dynbegin)
value(p_program)
value(p_dynpro).
clear wa_bdcaux.
if ( p_dynbegin eq c_mark ).
wa_bdcaux-program = p_program.
wa_bdcaux-dynpro = p_dynpro.
wa_bdcaux-dynbegin = p_dynbegin.
else.
wa_bdcaux-fnam
= p_program.
wa_bdcaux-fval
= p_dynpro.
endif.
append wa_bdcaux to t_bdcaux.
endform.
" f_bdcinsert
*&---------------------------------------------------------------------*
*&
Form f_bdcaux2
*&---------------------------------------------------------------------*
*&
Processa batch-input
*&---------------------------------------------------------------------*
*&
form f_bdcaux2 using value(p_dynbegin)
value(p_program)
value(p_dynpro).
clear wa_bdcaux.
if ( p_dynbegin eq c_mark ).
wa_bdcaux-program = p_program.
wa_bdcaux-dynpro = p_dynpro.
wa_bdcaux-dynbegin = p_dynbegin.
else.
wa_bdcaux-fnam
= p_program.
wa_bdcaux-fval
= p_dynpro.
endif.
append wa_bdcaux to t_bdcaux2.
endform.
" f_bdcaux2
*&---------------------------------------------------------------------*
*&
Form f_busca_mensagem
*&---------------------------------------------------------------------*
*&
Retorna mensagem da execuo do BI
*&---------------------------------------------------------------------*
*&
form f_busca_mensagem using
value(p_msgtyp)
changing p_text.
loop at t_messtab into wa_messtab.
check ( p_msgtyp is initial and 'WIASE' cs wa_messtab-msgtyp ) or
( wa_messtab-msgtyp eq p_msgtyp ).
sy-msgv1 = wa_messtab-msgv1.
sy-msgv2 = wa_messtab-msgv2.
sy-msgv3 = wa_messtab-msgv3.
sy-msgv4 = wa_messtab-msgv4.
sy-msgno = wa_messtab-msgnr.
call function 'CUTC_GET_MESSAGE'
EXPORTING
msg_type
= wa_messtab-msgtyp
msg_id
= wa_messtab-msgid
msg_no
msg_arg1
msg_arg2
msg_arg3
msg_arg4
IMPORTING
raw_message
EXCEPTIONS
msg_not_found
internal_error
others
=
=
=
=
=
sy-msgno
sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4
= p_text
= 1
= 2
= 3.
if ( wa_messtab-msgtyp eq 'E' ).
exit.
endif.
endloop.
endform.
" f_busca_mensagem
*&---------------------------------------------------------------------*
*&
Form f_limpa_variaveis
*&---------------------------------------------------------------------*
*&
Rotina de limpeza de variaveis.
*&---------------------------------------------------------------------*
*&
form f_limpa_variaveis.
clear : v_rescisao, v_lines,
v_mark, v_copied, v_cop400, v_indice,
v_oldind, v_indatu, v_totvend, v_answer, v_confirm, v_tabix,
v_dynnr,
v_linsz, ok_code, v_wrbtr, v_vlcorr, v_vlreal,
v_vlpgto, v_vldesc, v_vlperd, v_vlsald, v_imposto, v_pagnr,
v_comissao, v_nroitem, v_numdoc, v_nroite, v_totbase12.
refresh : t_bsis, t_bsad, t_valida, t_parametros,
t_vbrk, t_compdoc, t_descontos, t_zfitcom003, t_zfitcom004,
t_base12, t_antigos, t_novos, t_kna1,
t_indices, t_lfbw.
endform.
" f_limpa_variaveis
*&---------------------------------------------------------------------*
*&
Form f_saldo_por_atribuicao
*&---------------------------------------------------------------------*
form f_saldo_por_atribuicao tables t_entrada structure wa_item
t_saida structure wa_item.
data: wa_saida
like wa_item,
wa_entrada like wa_item,
v_reduz_pgto like wa_item-vlpgto.
refresh t_saida.
wa_entrada-zuonr = '9999999999'.
case p_bukrs.
when 'COVL'. wa_entrada-gsber = 'OV01'.
when 'CPPL'. wa_entrada-gsber = 'CP01'.
endcase.
modify t_entrada from wa_entrada transporting zuonr gsber
where ( belnr eq '9999999999' ).
sort t_entrada by pagnr zuonr belnr buzei.
" f_valida_vkbur
*&---------------------------------------------------------------------*
*&
Form f_menu_pagamentos
*&---------------------------------------------------------------------*
form f_menu_pagamentos using
value(p_tipo)
value(p_text).
if ( p_excjob ne c_mark ).
p_quinz
= p_data.
p_code100
= code100.
p_newcom
= p_novcom.
p_concom
= p_ctocom.
p_rescisao = v_rescisao.
p_background = p_excjob.
endif.
perform f_selecao_pagamentos using p_tipo.
if ( t_zfitcom003[] is initial ).
message w999(zarm) with p_text.
else.
if ( not t_tverr[] is initial ).
call screen '0500' starting at 20 5.
endif.
if ( t_tvbur[] is initial ).
message w999(zarm) with text-m30.
else.
call screen '0200'.
endif.
endif.
endform.
" f_menu_pagamentos
*&---------------------------------------------------------------------*
*&
Form f_grava_lfbw
*&---------------------------------------------------------------------*
*
Altera o imposto IR do fornecedor, quando se tratar de pagto
* de resciso nos lanamentos (1/3) e (1/12)
*----------------------------------------------------------------------*
form f_grava_lfbw using
value(p_ope).
data: v_tabix(2)
v_field(30)
type n,
type c.
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM mudar_empresa_do_buffer.
DATA: LC_DATUM(10).
WRITE SY-DATUM TO LC_DATUM.
refresh: t_bdcdata, t_messtab.
perform f_bdcinsert using: 'X' 'SAPMF05A'
'1100',
' ' 'BDC_OKCODE' '/ECCDE',
' ' 'INVFO-ACCNT' wa_60aux-lifnr,
' ' 'INVFO-BLDAT' LC_DATUM,
' ' 'INVFO-BUDAT' LC_DATUM.
* perform f_bdcinsert using: 'X' 'SAPMF05A'
'1100',
*
' ' 'BDC_OKCODE' '/ECCDE'.
perform f_bdcinsert using: 'X' 'SAPLACHD'
'1000',
' ' 'BDC_OKCODE' '=ENTR',
' ' 'BKPF-BUKRS' p_bukrs.
perform f_bdcinsert using: 'X' 'SAPMF05A'
'1100',
' ' 'BDC_OKCODE' '/EEND'.
perform f_bdcinsert using: 'X' 'SAPLSPO1'
'0200',
' ' 'BDC_OKCODE' '=YES'.
*
*
*
*
*
*
*
*
*
*
perform bdc_dynpro
perform bdc_field