CE PLUS - Nota 000701

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Vinculação

Data/Hora da Publicação: 23/01/2006 00:00:00

Data/Hora Última Alteração: 18/02/2011 14:48:00

Descrição da Nota: ERRO NO ESTORNO DA VINCULAÇÃO DE PRÉ-PAGAMENTO

Sintoma

Ao efetuar vinculações de faturas em contratos de pré Pagto, onde as faturas superam o valor da

primeira parcela de principal, ocorre o seguinte erro: Se por algum motivo abandonarmos o BI com o

/n, ainda na primeira abertura (desmembramento) antes de concluir sua contabilização, ao invés de o

programa abandonar o BI e ele volta a fazer a contabilização buscando o documento da parcela de

principal seguinte, ou seja, é feita a contabilização na segunda parcela e a primeira fica com o

saldo como se não estivesse sido contabilizado.

 

 

Solução

Ao salvar a vinculação e interrompê-la, o programa não está mais dobrando o valor do Saldo à

vincular das parcelas de principal, e ao entrar modificando a vinculação a contabilização está sendo

feita corretamente e o saldo baixado corretamente.

 

Versões Tratadas

6.0

Informações Complementares

----------------------------------------------------------------------------------------------------

Nota Número 00701 Data: 23/01/2006 Hora: 14:13:15

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 00701

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 6.0

Pacote                   : 00022

Agrupamento              : 00097

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

----------------------------------------------------------------------------------------------------

ERRO NO ESTORNO DA VINCULAÇÃO DE PRÉ-PAGAMENTO

----------------------------------------------------------------------------------------------------

Palavras Chave:

VINCULAÇÃO ESTORNO ERRO /N PRÉ-PAGAMENTO

 

----------------------------------------------------------------------------------------------------

Objetos da nota:

REPS /PWS/MZYCB009F03

REPS /PWS/MZYCB009F08

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCB009F03

 

FORM grava_tabelas.

 

...

 

* Se é INCLUSÃO de Vinculação, a mesma deve ser contabilizada

  IF itab_zycbt005_ant[] IS INITIAL.

    v_ind_mudanca = 'X'.

  ELSE.

* >> Início da Deleção

    LOOP AT itab_zycbt005_ant WHERE status = 'I'.

* << Fim da Deleção

* >> Início da Inclusão

    LOOP AT itab_zycbt005_ant WHERE status = 'I'

                              OR    status = ' '. " 274414

* << Fim da Inclusão

    v_ind_mudanca = 'X'.

    ENDLOOP.

*   Maurício/Christian - Chamado 165675 - 26/05/2004 -Inicio

*   Para os contratos de ACE/CP, verifica se a baixa do cliente

*   foi feita na criação.

    IF  ( /pws/zycbe001-tpcontr+0(1)  EQ 'C' AND

          wa_zycbt007-liq_cp NE 'X' ) OR

        /pws/zycbe001-tpcontr+0(1) EQ 'E'.

      PERFORM verifica_baixa_cliente.

    ELSEIF /pws/zycbe001-tpcontr+0(1)  EQ 'C' AND

          wa_zycbt007-liq_cp EQ 'X'.

      LOOP AT itab_zycbt005_ant.

        IF /pws/zycbe001-belnr = itab_zycbt005_ant-belnr.

          itab_zycbt005-flag = 'I'.

          MODIFY itab_zycbt005 TRANSPORTING flag

              WHERE nrinvoic = itab_zycbt005_ant-nrinvoic AND

                    gsberf   = itab_zycbt005_ant-gsberf   AND

                    nrparcf  = itab_zycbt005_ant-nrparcf.

          v_ind_mudanca = 'X'.

        ENDIF.

      ENDLOOP.

    ENDIF.

* Maurício/Christian - Chamado 165675 - 26/05/2004 -Fim

  ENDIF.

 

...

 

ENDFORM.                               " GRAVA_TABELAS

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCB009F03

 

FORM busca_doc_valor_var USING p_flag.

  CLEAR v_vlvinc.

  CLEAR itab_zycbt002p_aux.

  REFRESH itab_zycbt002p_aux.

  LOOP AT itab_zycbt005 WHERE flag = p_flag.

    v_vlvinc =  v_vlvinc + itab_zycbt005-vlvinc. " Vl total a vincular

    CLEAR v_f30_vinc.

  ENDLOOP.

  IF sy-subrc NE 0.

    EXIT.

  ELSE.

    LOOP AT itab_zycbt002p.

      IF itab_zycbt002p-slvinc > 0.

        MOVE itab_zycbt002p TO itab_zycbt002p_aux.

*       Se o valor a vinclar for maior ou igual a parcela do pré, não

*       faz desmembramento, vincula o saldo da parcela.

        IF  ( v_vlvinc >= itab_zycbt002p-slvinc AND

              v_line = 1 )                      .

          v_vlvinc = v_vlvinc - itab_zycbt002p-slvinc.

          CLEAR itab_zycbt002p_aux-slvinc.

          APPEND itab_zycbt002p_aux.

          LOOP AT itab_zycbt005 WHERE flag = p_flag.

            v_wrbtr     = itab_zycbt005-vlvinc - v_vlvinc.

            itab_zycbt005-vlvinc = v_vlvinc.

            MODIFY itab_zycbt005 TRANSPORTING vlvinc

                    WHERE nrseqc   = itab_zycbt005-nrseqc    AND

                          tpdesp   = itab_zycbt005-tpdesp    AND

                          nrparc   = itab_zycbt005-nrparc    AND

                          dtincl   = itab_zycbt005-dtincl    AND

                          nrinvoic = itab_zycbt005-nrinvoic  AND

                          gsberf   = itab_zycbt005-gsberf    AND

                          dtvincul = itab_zycbt005-dtvincul  AND

                          dtvencto = itab_zycbt005-dtvencto.

            v_doc_f30 = 'X' .

            v_vinctot = 'X'.

            PERFORM vinculacao.

          ENDLOOP.

 

          IF v_vlvinc EQ 0. " Se não houver mais vinculações

            EXIT.

          ENDIF.

        ELSE.

          READ TABLE itab_zycbt005 INDEX 1.

*         Se o primeiro vl a vinc for maior que o valor da parcela de

*         pre, não pode desmembrar, faz a vinculação no valor do saldo

*         da parcela.

          IF itab_zycbt005-vlvinc > itab_zycbt002p-slvinc.

            v_vlvinc = v_vlvinc - itab_zycbt002p-slvinc.

            CLEAR itab_zycbt002p_aux-slvinc.

            APPEND itab_zycbt002p_aux.

            v_wrbtr     = itab_zycbt002p-slvinc.

            itab_zycbt005-vlvinc = itab_zycbt005-vlvinc - v_wrbtr.

            MODIFY itab_zycbt005 TRANSPORTING vlvinc

                    WHERE nrseqc   = itab_zycbt005-nrseqc    AND

                          tpdesp   = itab_zycbt005-tpdesp    AND

                          nrparc   = itab_zycbt005-nrparc    AND

                          dtincl   = itab_zycbt005-dtincl    AND

                          nrinvoic = itab_zycbt005-nrinvoic  AND

                          gsberf   = itab_zycbt005-gsberf    AND

                          dtvincul = itab_zycbt005-dtvincul  AND

                          dtvencto = itab_zycbt005-dtvencto.

            v_doc_f30 = 'X' .

            v_vinctot = 'X'.

            PERFORM vinculacao.

*          Se o primeiro vl a vinc for menor  que o valor da parcela de

*          pre, desmembrar a parcela e vincula cada uma das invoices.

          ELSE.

            IF itab_zycbt002p-slvinc < v_vlvinc.

              CLEAR itab_zycbt002p_aux-slvinc.

            ELSE.

           itab_zycbt002p_aux-slvinc = itab_zycbt002p-slvinc - v_vlvinc.

            ENDIF.

            APPEND itab_zycbt002p_aux.

            PERFORM desmembramento USING p_flag.

          ENDIF.

          IF v_vlvinc EQ 0. " Se não houver mais vinculações.

            EXIT.

          ENDIF.

        ENDIF.

      ENDIF.

* >> Início da Inclusão

*     Chamado 274414 - Alexandre Adhmann - 12/01/2006 - INICIO

      IF NOT itab_erro[] IS INITIAL.

        EXIT.

      ENDIF.

*     Chamado 274414 - Alexandre Adhmann - 12/01/2006 - FIM

* << Fim da Inclusão

    ENDLOOP.

*   Repõe valores das vinculações.

    LOOP AT itab_zycbt005.

      MOVE itab_zycbt005-vlme_p TO itab_zycbt005-vlvinc.

      itab_zycbt005-vlvinc = itab_zycbt005-vlvinc *

                             itab_zycbt005-parid.

      MODIFY itab_zycbt005 TRANSPORTING vlvinc

              WHERE nrseqc   = itab_zycbt005-nrseqc    AND

                    tpdesp   = itab_zycbt005-tpdesp    AND

                    nrparc   = itab_zycbt005-nrparc    AND

                    dtincl   = itab_zycbt005-dtincl    AND

                    nrinvoic = itab_zycbt005-nrinvoic  AND

                    gsberf   = itab_zycbt005-gsberf    AND

                    dtvincul = itab_zycbt005-dtvincul  AND

                    dtvencto = itab_zycbt005-dtvencto.

    ENDLOOP.

  ENDIF.

ENDFORM.                    " busca_doc_valor_var

 

 

FORM vinculacao.

 

...

 

      READ TABLE itab_zycbt032 WITH KEY tcode  = text-041

                                        tabela = text-002

                                        cpochv = v_cpochv

                                        tpmsg  = 'S'.

 

      IF sy-subrc = 0.               " Contabiliz. com sucesso

        ADD 1 TO v_f30_vinc.

*       Atualiza itab_zycbt005 com o Status e

*       o número do Documento Contábil e Taxa de Câmbio

        itab_zycbt005-status   = text-008.

 

*       Verifica se o número de documento a ser gravado é valido

        IF NOT itab_zycbt032-belnr IS INITIAL.

          IF itab_zycbt005-belnr_vinc IS INITIAL.

            itab_zycbt005-belnr_vinc = itab_zycbt032-belnr.

          ENDIF.

          itab_zycbt005-belnr = itab_zycbt032-belnr.

          itab_zycbt005-status = 'C'.

 

          READ TABLE itab_zycbe033 WITH KEY cpochv = v_cpochv.

          itab_zycbt005-dtbelnr = itab_zycbe033-budat.

          CLEAR v_ind_errocont.  "Limpa indicador de erro de contab.

          itab_zycbt002p-slvinc = itab_zycbt002p_aux-slvinc.

          IF v_vinctot = 'X' AND

             v_linha1 <= 1.                    "PWS7809632.

            itab_zycbt002p-belnr2 = itab_zycbt032-belnr.

            itab_zycbt002p-dtvincul = itab_zycbe033-budat.

            CLEAR v_vinctot.

          ENDIF.

          MODIFY itab_zycbt002p TRANSPORTING slvinc belnr2 dtvincul

             WHERE nrseqc = itab_zycbt002p-nrseqc AND

                   nrparc = itab_zycbt002p-nrparc AND

                   tpparc = itab_zycbt002p-tpparc.

 

          PERFORM atualiza_zycbt069.

        ENDIF.

        MODIFY itab_zycbt005 TRANSPORTING belnr belnr_vinc

                                          dtbelnr vlvinc status

                WHERE nrseqc   = itab_zycbt005-nrseqc    AND

                      tpdesp   = itab_zycbt005-tpdesp    AND

                      nrparc   = itab_zycbt005-nrparc    AND

                      dtincl   = itab_zycbt005-dtincl    AND

                      nrinvoic = itab_zycbt005-nrinvoic  AND

                      gsberf   = itab_zycbt005-gsberf    AND

                      dtvincul = itab_zycbt005-dtvincul  AND

                      dtvencto = itab_zycbt005-dtvencto.

*       Histórico Documentos Contábeis

        itab_zycbt077-belnr = itab_zycbt032-belnr.

        itab_zycbt077-bukrs = itab_zycbe033-bukrs.

        itab_zycbt077-gjahr = itab_zycbe033-budat(4).

        itab_zycbt077-status = 'C'.

        itab_zycbt077-tcode = itab_zycbt032-tcode.

        CONCATENATE text-198 /pws/zycbe001-tpcontr INTO

            itab_zycbt077-codeven.

        itab_zycbt077-codmod = 'E'.

        itab_zycbt077-nrseqc = /pws/zycbe001-nrseqc.

        itab_zycbt077-gsberf = itab_zycbt005-gsberf.

        itab_zycbt077-dtvincul = itab_zycbt005-dtvincul.

        itab_zycbt077-nrinvoic = itab_zycbt005-nrinvoic.

        itab_zycbt077-nrparc   = itab_zycbt002p_aux-nrparc.

*       Ch. 213594 - KB - 21/02/2005 - Início

*       MODIFY /pws/zycbt077 FROM itab_zycbt077.

*       Ch. 213594 - KB - 21/02/2005 - Fim

*       Preenche itab com doc.contábil gerado p/ Estorno

        itab_contabil-nrinvoic = itab_zycbt005-nrinvoic.

        itab_contabil-docto    = itab_zycbt032-belnr.

        itab_contabil-msg      = text-285.

        itab_contabil-bukrs    = /pws/zycbe001-bukrs.

        itab_contabil-dtdocto  = itab_zycbt005-dtvincul.

        APPEND itab_contabil.

        COMMIT WORK.

      ELSE.                          " Contabiliz. com erro

        LOOP AT itab_zycbt032 WHERE cpochv = v_cpochv.

*         Armazena mensagens de erro do Call Transaction em uma tabela

*         interna para mostrá-las posteriormente em um report

          itab_erro-msg   = itab_zycbt032-msg.

          APPEND itab_erro.

        ENDLOOP.

        v_subrc = 4.

* >> Início da Inclusão

*       Chamado 274414 - Renato - 18.01.2006 - Inicio

        IF itab_zycbt002p-slvinc < v_wrbtr.

* << Fim da Inclusão

          itab_zycbt002p-slvinc = itab_zycbt002p-slvinc

                                      + v_wrbtr.

          MODIFY itab_zycbt002p TRANSPORTING slvinc

                 WHERE nrseqc = itab_zycbt002p-nrseqc AND

                       nrparc = itab_zycbt002p-nrparc AND

                       tpparc = itab_zycbt002p-tpparc.

* >> Início da Inclusão

        ENDIF.

*       Chamado 274414 - Renato - 18.01.2006 - Fim

* << Fim da Inclusão

 

*       A fatura não pôde ser incluída na vinculação(cria msg de erro)

        CONCATENATE text-053 itab_zycbt005-nrinvoic text-076

                                  INTO v_msg SEPARATED BY space.

        itab_erro-msg   = v_msg.

        APPEND itab_erro.

      ENDIF.

    ELSE.

*     Campos da tela em branco

      LOOP AT itab_zycbt034.

        MESSAGE i016 WITH itab_zycbt034-descricao.

      ENDLOOP.

      v_subrc = 4.

      itab_zycbt002p-slvinc = itab_zycbt002p-slvinc

                                  + v_wrbtr.

      MODIFY itab_zycbt002p TRANSPORTING slvinc

             WHERE nrseqc = itab_zycbt002p-nrseqc AND

                   nrparc = itab_zycbt002p-nrparc AND

                   tpparc = itab_zycbt002p-tpparc.

    ENDIF.

  ENDIF.                               " Pesquisa interna t034

 

  PERFORM limpa_itabs_contabil.

 

...

 

ENDFORM.                    " vinculacao

ENDFORM.                    " vinculacao