Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Rotina de Pagamento
Data/Hora da Publicação: 17/05/2007 00:00:00
Data/Hora Última Alteração: 18/02/2011 13:57:15
Descrição da Nota: COMPLEMENTO DO BOLETO - ATUALIZACAO CAMPO VLMI
Sintoma
Quando efetuamos um complemento de boleto com mais de uma tela de faturas, o programa está fazendo a
conversão para Reais somente das faturas constantes na tela. Ápós um enter o programa reprocessa
ajustando o valor correto em Reais.
Solução
o programa foi alterado para que o campo vlmi seja atualizado para todas as faturas.
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 03703 Data: 17/05/2007 Hora: 13:09:21
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 03703
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00001
Agrupamento : 00166
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02659 - 00001 - 6.0 - 00026 - COMPLEMENTO DO BOLETO DE REMESSA - TAXA AO RECONTABILIZAR IMPOSTO
----------------------------------------------------------------------------------------------------
COMPLEMENTO DO BOLETO - ATUALIZACAO CAMPO VLMI
----------------------------------------------------------------------------------------------------
Palavras Chave:
COMPLEMENTO DO BOLETO - ATUALIZACAO CAMPO VLMI
----------------------------------------------------------------------------------------------------
Objetos da nota:
DYNP /PWS/SAPMZYCB110 0100
REPS /PWS/MZYCB110F01
REPS /PWS/MZYGL110F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/SAPMZYCB110 0100
...
CHAIN.
FIELD /pws/zycbe031-kursf.
FIELD /pws/zycbe031-taxair.
FIELD /pws/zycbe031-taxacide.
MODULE calcula_total.
ENDCHAIN.
LOOP AT itab_zycbt031_tc.
FIELD /pws/zycbe048-instituicao MODULE consiste_instituicao.
MODULE altera_dados.
ENDLOOP.
* >> Início da inclusão: PAI
MODULE calcula_vlmi.
* << Fim da inclusão
CALL SUBSCREEN ss_dados.
CALL SUBSCREEN ss_html.
MODULE:
user_command_0200,
user_command_exit AT EXIT-COMMAND.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB110F01
...
ENDIF.
itab_zycbt031_tc-belnr_p = itab_zycet033-docfat.
PERFORM carrega_dados_globais.
APPEND itab_zycbt031_tc.
ENDIF.
ENDLOOP.
ENDFORM.
FORM calcula_vlmi.
DATA: v_vlmeaux_ir LIKE /pws/zycbt031-vlme,
v_vlmeaux_cide LIKE /pws/zycbt031-vlme.
* >> Início da inclusão: FORM CALCULA_VLMI
DATA: v_tabix TYPE sy-tabix.
DESCRIBE TABLE itab_zycbt031_tc LINES v_linha.
* << Fim da inclusão
LOOP AT itab_zycbt031_tc.
* >> Início da inclusão: FORM CALCULA_VLMI
v_tabix = sy-tabix.
IF v_tabix = 1.
CLEAR: v_vlmi_tot.
ENDIF.
* << Fim da inclusão
SELECT SINGLE * FROM /pws/zycbt007
WHERE bukrs = /pws/zycbe031-bukrs.
IF NOT /pws/zycbt007-waersb IS INITIAL.
...
...
v_vlmeaux_cide =
itab_zycbt031_tc-v_vlcide / ( 10 ** ( tcurx-currdec - 2 ) ).
v_vlmeaux_ir =
itab_zycbt031_tc-v_vlir / ( 10 ** ( tcurx-currdec - 2 ) ).
IF ( NOT /pws/zycbe031-kursf IS INITIAL AND
itab_zycbt031_tc-v_vlmi IS INITIAL ) OR
v_taxa_alter_p = 'X'.
itab_zycbt031_tc-v_vlmi =
( ( /pws/zycbe031-kursf / v_dfact ) * v_pfact ) *
v_vlmeaux.
* >> Início da inclusão: FORM CALCULA_VLMI
ENDIF.
IF v_linha = v_tabix.
IF v_vlmi_tot > /pws/zycbe031-vlmi.
itab_zycbt031_tc-v_vlmi = v_vlmi_tot - /pws/zycbe031-vlmi.
ELSEIF v_vlmi_tot < /pws/zycbe031-vlmi.
itab_zycbt031_tc-v_vlmi = /pws/zycbe031-vlmi - v_vlmi_tot.
ENDIF.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM CALCULA_VLMI
v_vlmi_tot = v_vlmi_tot + itab_zycbt031_tc-v_vlmi.
* << Fim da inclusão
IF ( NOT /pws/zycbe031-taxair IS INITIAL AND
itab_zycbt031_tc-v_vlmiir IS INITIAL ) OR
v_taxa_alter_i = 'X'.
itab_zycbt031_tc-v_vlmiir =
( ( /pws/zycbe031-taxair / v_dfact ) * v_pfact ) *
v_vlmeaux_ir.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYGL110F01
...
ELSE.
itab_zycbt031_tc-belnr_p = /pws/zycbe031-belnr_p.
itab_zycbt031_tc-belnr_pi = /pws/zycbe031-belnr_pi.
itab_zycbt031_tc-belnr_cide = /pws/zycbe031-belnr_cide.
ENDIF.
MODIFY itab_zycbt031_tc.
ENDLOOP.
ENDFORM.
FORM altera_dados.
DATA: v_currdec LIKE tcurx-currdec.
* >> Início da exclusão: FORM ALTERA_DADOS
IF tc_cont-current_line = 1.
CLEAR: v_vlmi_tot, v_vlmiir_tot.
ENDIF.
* << Fim da exclusão
itab_zycbt031_tc-bukrs = /pws/zycbt031-bukrs.
itab_zycbt031_tc-gsber = /pws/zycbe119-gsber.
itab_zycbt031_tc-werks = /pws/zycbe119-werks.
itab_zycbt031_tc-j_1bbranch = /pws/zycbe119-j_1bbranch.
itab_zycbt031_tc-belnr_p = /pws/zycbt031-belnr_p.
itab_zycbt031_tc-belnr_pi = /pws/zycbt031-belnr_pi.
itab_zycbt031_tc-belnr_cide = /pws/zycbt031-belnr_cide.
itab_zycbt031_tc-belnr_c = /pws/zycbe134-belnr_c.
itab_zycbt031_tc-belnr_ci = /pws/zycbe134-belnr_ci.
itab_zycbt031_tc-v_belnr_cide = v_belnr_cide.
...
...
itab_zycbt031_tc-codnorma = /pws/zycbe048-codnorma.
itab_zycbt031_tc-modalidade = /pws/zycbe048-modalidade.
CONDENSE itab_zycbt031_tc-nrcontr.
SELECT SINGLE currdec
FROM tcurx
INTO v_currdec
WHERE currkey = itab_zycbt031_tc-waers.
IF sy-subrc NE 0.
v_currdec = 2.
ENDIF.
* >> Início da exclusão: FORM ALTERA_DADOS
v_vlmeaux = itab_zycbt031_tc-v_vlme / ( 10 ** ( v_currdec - 2 ) ).
IF ( NOT /pws/zycbe031-kursf IS INITIAL AND
/pws/zycbe064-vlmi IS INITIAL ) OR v_taxa_alter_p = 'X'.
itab_zycbt031_tc-v_vlmi = /pws/zycbe064-vlmi =
( ( /pws/zycbe031-kursf / v_dfact ) * v_pfact ) * v_vlmeaux.
IF wa_tcurx-currdec = 0.
itab_zycbt031_tc-v_vlmi = itab_zycbt031_tc-v_vlmi *
( 10 ** ( wa_tcurx-currdec - 2 ) ).
ENDIF.
v_vlmi_tot = v_vlmi_tot + itab_zycbt031_tc-v_vlmi.
DESCRIBE TABLE itab_zycbt031_tc LINES v_linha.
IF v_linha = tc_cont-current_line.
IF v_vlmi_tot > /pws/zycbe031-vlmi.
v_dif = v_vlmi_tot - /pws/zycbe031-vlmi.
itab_zycbt031_tc-v_vlmi = itab_zycbt031_tc-v_vlmi - v_dif.
ELSEIF v_vlmi_tot < /pws/zycbe031-vlmi.
v_dif = /pws/zycbe031-vlmi - v_vlmi_tot.
itab_zycbt031_tc-v_vlmi = itab_zycbt031_tc-v_vlmi + v_dif.
ENDIF.
ENDIF.
ELSE.
itab_zycbt031_tc-v_vlmi = /pws/zycbe064-vlmi.
ENDIF.
* << Fim da exclusão
v_vlmeaux = itab_zycbt031_tc-v_vlir / ( 10 ** ( v_currdec - 2 ) ).
IF ( NOT /pws/zycbe031-taxair IS INITIAL AND
/pws/zycbe064-vlmiir IS INITIAL ) OR v_taxa_alter_i = 'X'.
itab_zycbt031_tc-v_vlmiir = /pws/zycbe064-vlmiir =
( ( /pws/zycbe031-taxair / v_dfact ) * v_pfact ) * v_vlmeaux.
IF wa_tcurx-currdec = 0.
itab_zycbt031_tc-v_vlmiir = itab_zycbt031_tc-v_vlmiir *
( 10 ** ( wa_tcurx-currdec - 2 ) ).
ENDIF.
v_vlmiir_tot = v_vlmiir_tot + itab_zycbt031_tc-v_vlmiir.
...