Módulo: CÂMBIO FINANCEIRO
Funcionalidade: Remessa
Data/Hora da Publicação: 05/12/2008 00:00:00
Data/Hora Última Alteração: 18/02/2011 14:15:39
Descrição da Nota: REMESSA - CÁLCULO IMPOSTOS NO PRIMEIRO ENTER - PERÍODO CONTÁBIL FECHADO
Sintoma
Ao criar/modificar uma remessa ocorrem os seguintes erros:
- não calcula o valor dos impostos no primeiro enter, precisa apagar os mesmos para calcular.
- se excluir um imposto que outro depende, exemplo: excluir o irrf e o cálculo do cofins depende da
base do irrf, fica valor negativo e gera dump
- esta exibindo período contábil fechado, sendo que o mesmo não esta. Depois joga período = '00' no
batch-input.
Solução
- deixar calcular no criar ou modificar.
- se houver valores negativos, deixar igual a zero(0.00)
- enviar a data de lançamento, para que analise corretamente o período fechado.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 07725 Data: 05/12/2008 Hora: 16:28:01
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 07725
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00007
Agrupamento : 00076
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
04449 - 00001 - 7.0 - 00002 - CRIAR REMESSA CÂMBIO FINANCEIRO
04798 - 00002 - 7.0 - 00003 - REMESSA - DA BASE CÁLCULO IMPOSTOS
07449 - 00003 - 7.0 - 00007 - ERRO NA BASE DE CALCULO NO PROGRAMA DE REMESSA
07712 - 00004 - 7.0 - 00007 - PROGRAMA DE REMESSA - ALTERAR CODIGOS DE ANO FISCAL
----------------------------------------------------------------------------------------------------
REMESSA - CÁLCULO IMPOSTOS NO PRIMEIRO ENTER - PERÍODO CONTÁBIL FECHADO
----------------------------------------------------------------------------------------------------
Palavras Chave:
REMESSA CÁLCULO IMPOSTOS NO PRIMEIRO ENTER PERÍODO CONTÁBIL FECHADO
/PWS/ZYCAT026 DUMP VALORES NEGATIVOS IMPOSTOS
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCA_BASE_CALCULO_IMPOSTO
FUNC /PWS/ZYCA_TRANSACAO_F_63R
REPS /PWS/MZYCA109I01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCA_BASE_CALCULO_IMPOSTO
...
v_chamada TO MEMORY ID 'GEN013',
vl_remessa TO MEMORY ID 'GEN021',
wa_irrf TO MEMORY ID 'GEN022',
wa_cide TO MEMORY ID 'GEN023',
wa_pis TO MEMORY ID 'GEN024',
wa_cofins TO MEMORY ID 'GEN025',
wa_iss TO MEMORY ID 'GEN026',
wa_iof TO MEMORY ID 'GEN027'.
SUBMIT /pws/zyglr039 AND RETURN.
IMPORT: vl_base FROM MEMORY ID 'GEN028'.
* >> Início da inclusão: FUNCTION /PWS/ZYCA_BASE_CALCULO_IMPOSTO
if vl_base < 0.
clear vl_base.
endif.
* << Fim da inclusão
ENDFUNCTION.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCA_TRANSACAO_F_63R
...
EXPORTING
date = t_dados-budat
version = v_periv
IMPORTING
period = v_monat
EXCEPTIONS
period_in_not_valid = 1
period_not_assigned = 2
version_undefined = 3
OTHERS = 4.
* >> Início da inclusão: FUNCTION /PWS/ZYCA_TRANSACAO_F_63R
v_budat = v_data_lanc_char.
* << Fim da inclusão
WHILE v_ok EQ 'N'.
PERFORM check_periodo USING '+'
v_monat
v_bukrs
v_gjahr
space
CHANGING v_budat
v_ok.
MOVE v_budat+6(4) TO v_gjahr.
MOVE v_budat+3(2) TO v_monat.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCA109I01
...
ENDIF.
IF NOT v_defator IS INITIAL AND
NOT v_parafator IS INITIAL.
/pws/zycae025-vlimpmi = ( ( v_kursf / v_defator ) * v_parafator ) *
v_vlme.
ELSE.
IF NOT v_kursf IS INITIAL.
/pws/zycae025-vlimpmi = v_vlme * v_kursf.
ENDIF.
ENDIF.
* >> Início da exclusão: MODULE CONSISTE_VALORES
IF /pws/zycae025-aliqgera < 0 OR
/pws/zycae025-advalorem < 0 OR
/pws/zycae025-basecalc < 0 OR
* << Fim da exclusão
* >> Início da inclusão: MODULE CONSISTE_VALORES
IF /pws/zycae025-basecalc < 0 OR
* << Fim da inclusão
/pws/zycae025-vlimpme < 0 OR
* >> Início da exclusão: MODULE CONSISTE_VALORES
/pws/zycae025-vlimpmi < 0 OR
/pws/zycae025-reducao < 0.
MESSAGE i268 WITH text-003.
EXIT.
* << Fim da exclusão
* >> Início da inclusão: MODULE CONSISTE_VALORES
/pws/zycae025-vlimpmi < 0.
IF /pws/zycae025-basecalc < 0.
CLEAR /pws/zycae025-basecalc.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: MODULE CONSISTE_VALORES
IF /pws/zycae025-vlimpme < 0.
CLEAR /pws/zycae025-vlimpme.
ENDIF.
IF /pws/zycae025-vlimpmi < 0.
CLEAR /pws/zycae025-vlimpmi.
ENDIF.
ENDIF.
* << Fim da inclusão
itab_zycat025 = /pws/zycae025.
itab_zycat025-mandt = sy-mandt.
itab_zycat025-bukrs = /pws/zycbe124-bukrs.
itab_zycat025-nrseq = /pws/zycbe124-nrseq.
itab_zycat025-mark = mark.
MODIFY itab_zycat025 INDEX tc_cab-current_line.
IF sy-subrc NE 0.
APPEND itab_zycat025.
ENDIF.
ENDMODULE.
...
...
itab_zycat025_aux2[] = itab_zycat025[].
READ TABLE itab_zycat025 WITH KEY tpimp(4) = 'IRRF'.
IF sy-subrc = 0.
v_control_ir = v_control_ir + 1.
READ TABLE itab_zycat024 WITH KEY bukrs = /pws/zycbe124-bukrs
tpimp = itab_zycat025-tpimp.
IF sy-subrc EQ 0 AND
( ( itab_zycat024-altera_base IS INITIAL OR
itab_zycat025-basecalc IS INITIAL ) OR
( v_control_ir EQ 1 AND
* >> Início da exclusão: MODULE CONTROLA_IMPOSTOS
sy-tcode EQ '/PWS/ZYCB109_C' ) ).
* << Fim da exclusão
* >> Início da inclusão: MODULE CONTROLA_IMPOSTOS
sy-tcode NE '/PWS/ZYCB109_E' ) ).
* << Fim da inclusão
READ TABLE itab_zyglt100 WITH KEY zexit = 'REM003' BINARY SEARCH.
IF sy-subrc EQ 0 AND NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario)
IN PROGRAM (itab_zyglt100-programa).
ELSE.
READ TABLE itab_zycat026 WITH KEY tpimp = itab_zycat025-tpimp(4).
IF sy-subrc = 0 AND NOT itab_zycat026-formula IS INITIAL.
PERFORM calcula_base_calculo USING /pws/zycbe124-vlme
itab_zycat025-tpimp
itab_zycat026-formula
...
...
ENDIF.
READ TABLE itab_zycat025 WITH KEY tpimp(3) = 'IOF'.
IF sy-subrc = 0.
v_control_io = v_control_io + 1.
READ TABLE itab_zycat024 WITH KEY bukrs = /pws/zycbe124-bukrs
tpimp = itab_zycat025-tpimp.
IF sy-subrc EQ 0 AND
( ( itab_zycat024-altera_base IS INITIAL OR
itab_zycat025-basecalc IS INITIAL ) OR
( v_control_io EQ 1 AND
* >> Início da exclusão: MODULE CONTROLA_IMPOSTOS
sy-tcode EQ '/PWS/ZYCB109_C' ) ).
* << Fim da exclusão
* >> Início da inclusão: MODULE CONTROLA_IMPOSTOS
sy-tcode NE '/PWS/ZYCB109_E' ) ).
* << Fim da inclusão
READ TABLE itab_zyglt100 WITH KEY zexit = 'REM003' BINARY SEARCH.
IF sy-subrc EQ 0 AND NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario)
IN PROGRAM (itab_zyglt100-programa).
ELSE.
READ TABLE itab_zycat026 WITH KEY tpimp = itab_zycat025-tpimp(3).
IF sy-subrc = 0 AND NOT itab_zycat026-formula IS INITIAL.
PERFORM calcula_base_calculo USING /pws/zycbe124-vlme
itab_zycat025-tpimp
itab_zycat026-formula
...
...
ENDIF.
READ TABLE itab_zycat025 WITH KEY tpimp(4) = 'CIDE'.
IF sy-subrc = 0.
v_control_ci = v_control_ci + 1.
READ TABLE itab_zycat024 WITH KEY bukrs = /pws/zycbe124-bukrs
tpimp = itab_zycat025-tpimp.
IF sy-subrc EQ 0 AND
( ( itab_zycat024-altera_base IS INITIAL OR
itab_zycat025-basecalc IS INITIAL ) OR
( v_control_ci EQ 1 AND
* >> Início da exclusão: MODULE CONTROLA_IMPOSTOS
sy-tcode EQ '/PWS/ZYCB109_C' ) ).
* << Fim da exclusão
* >> Início da inclusão: MODULE CONTROLA_IMPOSTOS
sy-tcode NE '/PWS/ZYCB109_E' ) ).
* << Fim da inclusão
READ TABLE itab_zycat025_aux2 WITH KEY tpimp(4) = 'IRRF'.
IF sy-subrc = 0 AND itab_zycat025_aux2-dedfat = 'X' AND
/pws/zycbe124-vlme => itab_zycat025_aux2-vlimpme.
IF v_verif IS INITIAL.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
defaultoption = 'Y'
textline1 = text-100
textline2 = text-101
titel = space
...
...
IF sy-subrc EQ 0 AND NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario)
IN PROGRAM (itab_zyglt100-programa).
ELSE.
READ TABLE itab_zycat024 WITH KEY bukrs = /pws/zycbe124-bukrs
tpimp = itab_zycat025-tpimp.
IF sy-subrc EQ 0 AND
( ( itab_zycat024-altera_base IS INITIAL OR
itab_zycat025-basecalc IS INITIAL ) OR
( v_control_is EQ 1 AND
* >> Início da exclusão: MODULE CONTROLA_IMPOSTOS
sy-tcode EQ '/PWS/ZYCB109_C' ) ).
* << Fim da exclusão
* >> Início da inclusão: MODULE CONTROLA_IMPOSTOS
sy-tcode NE '/PWS/ZYCB109_E' ) ).
* << Fim da inclusão
READ TABLE itab_zycat026 WITH KEY
tpimp = itab_zycat025-tpimp(3).
IF sy-subrc = 0 AND NOT itab_zycat026-formula IS INITIAL.
PERFORM calcula_base_calculo USING /pws/zycbe124-vlme
itab_zycat025-tpimp
itab_zycat026-formula
CHANGING itab_zycat025-basecalc.
ELSE.
itab_zycat025-basecalc = /pws/zycbe124-vlme.
ENDIF.
...
...
ENDIF.
READ TABLE itab_zycat025 WITH KEY tpimp(3) = 'PIS'.
IF sy-subrc = 0.
v_control_pi = v_control_pi + 1.
READ TABLE itab_zycat024 WITH KEY bukrs = /pws/zycbe124-bukrs
tpimp = itab_zycat025-tpimp.
IF sy-subrc EQ 0 AND
( ( itab_zycat024-altera_base IS INITIAL OR
itab_zycat025-basecalc IS INITIAL ) OR
( v_control_pi EQ 1 AND
* >> Início da exclusão: MODULE CONTROLA_IMPOSTOS
sy-tcode EQ '/PWS/ZYCB109_C' ) ).
* << Fim da exclusão
* >> Início da inclusão: MODULE CONTROLA_IMPOSTOS
sy-tcode NE '/PWS/ZYCB109_E' ) ).
* << Fim da inclusão
CLEAR itab_zycat025_aux2-advalorem.
v_advalorem = 100.
v_advalorem2 = 100.
READ TABLE itab_zycat025_aux2 WITH KEY tpimp(3) = 'ISS'.
IF sy-subrc = 0.
v_advalorem = v_advalorem + itab_zycat025_aux2-advalorem.
ELSE.
SELECT SINGLE aliq FROM /pws/zycat024
INTO v_aliq
WHERE bukrs = /pws/zycbe124-bukrs
...
...
ENDIF.
READ TABLE itab_zycat025 WITH KEY tpimp(6) = 'COFINS'.
IF sy-subrc = 0.
v_control_co = v_control_co + 1.
READ TABLE itab_zycat024 WITH KEY bukrs = /pws/zycbe124-bukrs
tpimp = itab_zycat025-tpimp.
IF sy-subrc EQ 0 AND
( ( itab_zycat024-altera_base IS INITIAL OR
itab_zycat025-basecalc IS INITIAL ) OR
( v_control_co EQ 1 AND
* >> Início da exclusão: MODULE CONTROLA_IMPOSTOS
sy-tcode EQ '/PWS/ZYCB109_C' ) ).
* << Fim da exclusão
* >> Início da inclusão: MODULE CONTROLA_IMPOSTOS
sy-tcode NE '/PWS/ZYCB109_E' ) ).
* << Fim da inclusão
CLEAR itab_zycat025_aux2-advalorem.
v_advalorem = 100.
v_advalorem2 = 100.
READ TABLE itab_zycat025_aux2 WITH KEY tpimp(3) = 'ISS'.
IF sy-subrc = 0.
v_advalorem = v_advalorem + itab_zycat025_aux2-advalorem.
ELSE.
SELECT SINGLE aliq FROM /pws/zycat024
INTO v_aliq
WHERE bukrs = /pws/zycbe124-bukrs
...
...
LOOP AT itab_zycat025 WHERE tpimp(4) = 'IRRF'
OR tpimp(3) = 'IOF'
OR tpimp(3) = 'PIS'
OR tpimp(6) = 'COFINS'.
READ TABLE itab_zyglt100 WITH KEY zexit = 'REM003' BINARY SEARCH.
IF sy-subrc EQ 0 AND NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario)
IN PROGRAM (itab_zyglt100-programa).
ENDIF.
ENDLOOP.
* >> Início da inclusão: MODULE CONTROLA_IMPOSTOS
clear: itab_zycat025-basecalc, itab_zycat025-vlimpme,
itab_zycat025-vlimpmi.
MODIFY itab_zycat025 TRANSPORTING basecalc vlimpme vlimpmi
WHERE basecalc < 0
OR vlimpme < 0
OR vlimpmi < 0.
* << Fim da inclusão
ENDMODULE.
MODULE set_mc_rateio_imposto_conta INPUT.
PERFORM set_mc_rateio_imposto_conta.
ENDMODULE.
MODULE consiste_tpimp INPUT.
IF NOT /pws/zycbe141-tpimp IS INITIAL AND v_status_s NE 0.
READ TABLE itab_zycbt141_i WITH KEY tpimp = /pws/zycbe141-tpimp.
IF sy-subrc = 0.
READ TABLE itab_zycat025 WITH KEY tpimp = /pws/zycbe141-tpimp.
IF sy-subrc NE 0.
...