Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Fatura Despesas
Data/Hora da Publicação: 01/04/2010 00:00:00
Data/Hora Última Alteração: 06/04/2010 00:00:00
Descrição da Nota: AJUSTES AMÉRICA LATINA
Sintoma
Ao tentar estornar a fatura contabilizada pela MIRO se ocorre algum erro e não é possivel realizar o
estorno o programa não exibe nenhuma mensagem.
Ao tentar contabilizar uma fatura de mercadoria de CPT com frete destacado está dando erro.
É necessario contabilizar os impostos em que se recupera do valor pago em uma conta diferente.
Solução
Corrigida contabilização da fatura de mercadorias de icoterm diferente de FOB.
Ajustado estorna da fatura para exibir as mensagens de erro que ocorrerem ao tentar estornar a miro.
Ajustata contabilização da fatura de despesas para utilizar as contas de tributo parametrizada na
/pws/zygl012 para lançar na MIRO os impostos com a condição Garantizado.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 10030 Data: 01/04/2010 Hora: 14:39:24
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 10030
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 8.0
Pacote : 00003
Agrupamento : 00015
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
04544 - 00001 - AJUSTADO O ESTORNO DA FATURA PARCELADA CONTABILIZADA PELA MIRO.
05337 - 00002 - TRATATIVA PARA MOEDAS QUE NÃO POSSUEM CASAS DECIMAIS
----------------------------------------------------------------------------------------------------
Texto Rápido:
AJUSTES AMÉRICA LATINA
----------------------------------------------------------------------------------------------------
Palavras Chave:
CONTABILIZAÇÃO - IMPOSTO - AMÉRICA - LATINA - ESTORNO - MIRO - MENSAGEM
/PWS/SAPMZYCI003
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI003F02
REPT /PWS/SAPMZYCI003
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F02
...
itab_zycie033-lifnr = /pws/zycie006-lifnr.
ENDIF.
itab_zycie033-bktxt = /pws/zycie006-nrfat.
itab_zycie033-xblnr = /pws/zycie006-lfsnr.
itab_zycie033-mwskz = /pws/zycie006-iva.
CLEAR v_cont.
FREE: itab_zycit031,
itab_itemdata.
CLEAR: itab_itemdata,
itab_zycit031, itab_zycie033-rmwwr, itab_zycie033-waers.
* >> Início da inclusão: FORM MIRO_AM_LA
REFRESH: itab_glaccount, itab_iva, itab_zyglt316.
CLEAR: itab_glaccount, itab_iva, itab_zyglt316.
SELECT * FROM /pws/zyglt316 INTO TABLE itab_zyglt316
WHERE ktosl EQ 'TRI'
AND bukrs EQ /pws/zycie006-bukrs.
* << Fim da inclusão
IF /pws/zycie006-tpfatura EQ '04'.
LOOP AT itab_zycit003.
READ TABLE itab_contas_aux WITH KEY ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
PERFORM retorna_decimais USING /pws/zycie006-waers
CHANGING itab_contas_aux-wrbtr.
CLEAR: itab_zycit031.
itab_zycit031-tcode = itab_zycie033-tcode .
itab_zycit031-tabela = itab_zycie033-tabela .
itab_zycit031-cpochv = itab_zycie033-cpochv .
...
...
v_erro = 'X'.
EXIT.
ENDIF.
ELSE.
CONTINUE.
ENDIF.
CLEAR: v_vlaux, v_indice.
LOOP AT itab_zycit403 WHERE codigo = itab_zycit019-codigo.
v_indice = v_indice + 1.
READ TABLE itab_zycit003
WITH KEY ebeln = itab_zycit403-ebeln
ebelp = itab_zycit403-ebelp.
* >> Início da inclusão: FORM MIRO_AM_LA
IF itab_zycit403-condicoes EQ 'G'.
READ TABLE itab_ivaped
WITH KEY ebeln = itab_zycit403-ebeln
ebelp = itab_zycit403-ebelp.
CLEAR: itab_account, itab_zyglt316.
READ TABLE itab_zyglt316
WITH KEY codaux1 = itab_zycit403-codigo.
IF sy-subrc NE 0.
MESSAGE i015 WITH text-195 itab_zycit403-codigo.
v_erro = 'X'.
EXIT.
ENDIF.
READ TABLE itab_ivaped INDEX 1.
itab_glaccount-item_amount = itab_zycit047-vldp *
( itab_zycit403-valorrec / itab_zycit403a-valorrec ).
v_vlaux = v_vlaux + itab_glaccount-item_amount.
IF v_line = v_indice.
v_vlaux = itab_zycit047-vldp - v_vlaux.
itab_glaccount-item_amount = itab_glaccount-item_amount +
v_vlaux.
ENDIF.
itab_glaccount-db_cr_ind = 'S'.
itab_glaccount-comp_code = /pws/zycie006-bukrs .
itab_glaccount-tax_code = /pws/zycie006-iva .
itab_glaccount-gl_account = itab_zyglt316-konts.
IF itab_ivaped-knttp IS INITIAL.
CLEAR itab_marc. REFRESH itab_marc.
SELECT SINGLE matnr prctr FROM marc INTO itab_marc
WHERE matnr EQ itab_ivaped-matnr AND
werks EQ itab_ivaped-werks.
IF sy-subrc NE 0.
SELECT SINGLE matnr prctr FROM marc INTO itab_marc
WHERE matnr EQ itab_ivaped-matnr.
ENDIF.
itab_glaccount-profit_ctr = itab_marc-prctr.
ELSEIF itab_ivaped-knttp = 'K'.
READ TABLE itab_ekkn WITH KEY ebeln = itab_ivaped-ebeln
ebelp = itab_ivaped-ebelp.
CLEAR itab_csks. REFRESH itab_csks.
SELECT SINGLE kostl kokrs prctr FROM csks INTO itab_csks
WHERE kostl EQ itab_ekkn-kostl
AND kokrs EQ itab_ekkn-kokrs.
itab_glaccount-profit_ctr = itab_csks-prctr.
ELSEIF itab_ivaped-knttp = 'F' .
READ TABLE itab_ekkn WITH KEY ebeln = itab_ivaped-ebeln
ebelp = itab_ivaped-ebelp.
CLEAR itab_aufk. REFRESH itab_aufk.
SELECT SINGLE aufnr prctr FROM aufk INTO itab_aufk
WHERE aufnr EQ itab_ekkn-aufnr.
itab_glaccount-profit_ctr = itab_aufk-prctr.
ENDIF.
COLLECT itab_glaccount.
itab_iva-mwskz = itab_glaccount-tax_code.
COLLECT itab_iva.
ELSE.
* << Fim da inclusão
CLEAR: itab_zycit031.
itab_zycit031-tcode = itab_zycie033-tcode .
itab_zycit031-tabela = itab_zycie033-tabela .
itab_zycit031-cpochv = itab_zycie033-cpochv .
itab_zycit031-ebeln = itab_zycit003-ebeln .
itab_zycit031-ebelp = itab_zycit003-ebelp .
itab_zycit031-meins = itab_zycit003-meins .
itab_zycit031-mwskz = itab_zycie033-mwskz .
itab_zycit031-menge = itab_zycit003-qtd_iten.
itab_zycit031-wrbtr = itab_zycit047-vldp *
...
...
ENDIF.
ENDLOOP.
ENDIF.
COLLECT itab_zycit031.
IF itab_zycit031-lgort IS INITIAL.
itab_zycit031-menge = itab_zycit003-qtd_iten.
MODIFY itab_zycit031 TRANSPORTING menge
WHERE ebeln EQ itab_zycit003-ebeln
AND ebelp EQ itab_zycit003-ebelp.
ENDIF.
* >> Início da inclusão: FORM MIRO_AM_LA
ENDIF.
* << Fim da inclusão
ENDLOOP.
ENDLOOP.
IF v_erro EQ 'X'.
EXIT.
ENDIF.
ENDIF.
ELSEIF /pws/zycie006-tpfatura EQ '02'.
READ TABLE itab_zycit030 WITH KEY codigo = 'FRETEI'.
LOOP AT itab_zycit003.
READ TABLE itab_contas_aux WITH KEY ebeln = itab_zycit003-ebeln
...
...
CLEAR: itab_zycit031.
itab_zycit031-tcode = itab_zycie033-tcode .
itab_zycit031-tabela = itab_zycie033-tabela .
itab_zycit031-cpochv = itab_zycie033-cpochv .
itab_zycit031-ebeln = itab_zycit003-ebeln .
itab_zycit031-ebelp = itab_zycit003-ebelp .
itab_zycit031-wrbtr = itab_contas_aux-wrbtr.
v_vlfr = itab_zycit003-vlfre_aux .
v_vlsg = itab_zycit003-vlseg_aux.
itab_zycie033-rmwwr = itab_zycit031-wrbtr + itab_zycie033-rmwwr.
* >> Início da inclusão: FORM MIRO_AM_LA
READ TABLE itab_ekko_a WITH KEY ebeln = itab_zycit003-ebeln.
v_ebelp+1(5) = itab_zycit003-ebelp.
CLEAR itab_konv.
LOOP AT itab_zycit030 WHERE codigo = 'SEGURO'.
READ TABLE itab_konv WITH KEY knumv = itab_ekko_a-knumv
kposn = v_ebelp
kschl = itab_zycit030-kschl.
IF sy-subrc EQ 0.
EXIT.
ENDIF.
ENDLOOP.
IF itab_konv-kschl IS INITIAL.
CLEAR: v_vlfr.
ENDIF.
CLEAR itab_konv.
LOOP AT itab_zycit030 WHERE codigo = 'SEGURO'.
READ TABLE itab_konv WITH KEY knumv = itab_ekko_a-knumv
kposn = v_ebelp
kschl = itab_zycit030-kschl.
IF sy-subrc EQ 0.
itab_zycit031-lgort = itab_zycit030-kschl.
EXIT.
ENDIF.
ENDLOOP.
IF itab_konv-kschl IS INITIAL.
CLEAR: v_vlfr.
ENDIF.
* << Fim da inclusão
itab_zycit031-wrbtr = itab_zycit031-wrbtr - v_vlfr.
IF /pws/zycit031-inco1_ci EQ 'CIF'.
itab_zycit031-wrbtr = itab_zycit031-wrbtr - v_vlsg.
ENDIF.
itab_zycit031-menge = itab_zycit003-toinv.
itab_zycit031-meins = itab_zycit003-meins.
itab_zycit031-mwskz = itab_ivaped-mwskz.
APPEND itab_zycit031.
itab_zycie033-waers = /pws/zycie006-waers.
IF NOT v_vlfr IS INITIAL.
...
...
EXCEPTIONS
user_exit = 1
OTHERS = 2
.
IF sy-subrc <> 0.
ENDIF.
CLEAR: itab_retorno-hwste.
LOOP AT itab_itens_iva.
ADD itab_itens_iva-fwste TO itab_retorno-hwste.
ENDLOOP.
* >> Início da exclusão: FORM MIRO_AM_LA
REFRESH: itab_glaccount, itab_iva.
IF /pws/zycie006-imposto EQ 'X'
AND /pws/zycie006-tpfatura EQ '04'.
* << Fim da exclusão
* >> Início da inclusão: FORM MIRO_AM_LA
IF ( /pws/zycie006-imposto EQ 'X'
AND /pws/zycie006-tpfatura EQ '04' ) OR
NOT itab_glaccount[] IS INITIAL.
* << Fim da inclusão
DELETE itab_zycit483 WHERE vldp EQ 0
OR iva EQ space
OR tpdesp EQ space.
LOOP AT itab_zycit483.
itab_483_contas-codaux1 = itab_zycit483-tpdesp.
COLLECT itab_483_contas.
ENDLOOP.
READ TABLE itab_ivaped INDEX 1.
IF NOT itab_483_contas[] IS INITIAL.
SELECT * FROM /pws/zyglt316 INTO TABLE itab_zyglt316
...
...
MESSAGE i030 WITH v_belnr_ant.
IF v_parcela = 'X'.
CLEAR: itab_zycit132-miro, itab_zycit132-status.
itab_zycit132-status = 'X'.
MODIFY itab_zycit132 TRANSPORTING miro status
WHERE belnr_mr1m EQ /pws/zycie006-belnr_mr1m.
ENDIF.
PERFORM clear_date_batch.
CLEAR v_mr1m_ok.
ELSE.
* >> Início da inclusão: FORM ESTORN_MIRO_LA
LOOP AT itab_zycit032.
MESSAGE i015 WITH itab_zycit032-msg+0(50)
itab_zycit032-msg+50(50).
ENDLOOP.
PERFORM clear_date_batch.
* << Fim da inclusão
v_erro = 'X'.
ENDIF.
* >> Início da inclusão: FORM ESTORN_MIRO_LA
ELSE.
LOOP AT itab_zycit032.
MESSAGE i015 WITH itab_zycit032-msg+0(50)
itab_zycit032-msg+50(50).
ENDLOOP.
PERFORM clear_date_batch.
v_erro = 'X'.
* << Fim da inclusão
ENDIF.
ELSEIF e_subrc EQ '8'.
EXIT.
ELSE.
v_erro = 'X'.
ENDIF.
ENDFORM.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPT /PWS/SAPMZYCI003
------------------------------------------------------------------------
Incluído símbolo de texto:
Idioma: EN
Símbolo: 195
Texto: (32 caracteres)
"Parameterize the account for tax"
Comprimento máximo: 50
------------------------------------------------------------------------
Incluído símbolo de texto:
Idioma: PT
Símbolo: 195
Texto: (33 caracteres)
"Parametrizar conta para o imposto"
Comprimento máximo: 50