CE PLUS - Nota 000869

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Vinculação

Data/Hora da Publicação: 13/02/2006 00:00:00

Data/Hora Última Alteração: 21/02/2011 10:21:48

Descrição da Nota: AJUSTES DOS ERROS ENCONTRADOS NA VINCULAÇÃO DE FATURAS

Sintoma

1- Criada uma captação e não concluida a contabilização, pois não foi preenchido o Campo Banco

Financiador e foi salvo, o status na tabela ZYCBT001 ficou com a letra `` I `` ( inicial), ao tentar

vincular o programa não fez contabilizações, mas gravou as faturas na tabela ZYCBT005. No historico

contábil ficou errado, pois o programa faz a dedução do valor a vincular e o valor nas duas parcelas

de principal, e não aparece as faturas gravadas na tabela ZYCB005, Para resolver este problema é

necessario criar no programa de vinculação uma consistencia quando a captação estiver com status I

inicial, ao tentar fazer uma vinculação o programa avise om a mensagem    ``Contrato ainda foi

contabilizado. Favor verificar``. Essa consistencia evita a vinculação em um contrato que    não

esteja concluído, evitando problemas nas tabelas e no historico contábil.

 

2- Ao fazer vinculações parciais e com faturas iguais com parcelas diferentes, no momento em que fiz

o estorno e cancelei a transação, via /n, na penultima fatura, o programa efetuou o clearing

corretamente das faturas, porém como dito na penultima fatura o programa teve seu clearing

interrompido, sendo assim, o programa deveria manter a vinculação da penultima e da ultima fatura, e

mante-las na tabela ZYCBT005, mas as faturas não aparecem na tabela ZYCBT005. O historico contábil

demonstra deduzido o saldo das faturas na parcela de principal, e não demonstra as faturas ( uma vez

que ela foi excluida erroneamente da ZYCB005).

 

 

Solução

1- Inserido consistência que permite apenas criar a vinculação caso o contrato esteja contabilizado

(com o campo BELNR preenchido ou o campo STATUS diferente de I na tabela /PWS/ZYCBT001).

 

2- Efetuado ajuste para que os saldos das tabelas /PWS/ZYCBT001 e /PWS/ZYCBT002 sejam atualizados

(corrigindo assim os valores apresentados no Histórico Contábil) caso ocorra erro na segunda F-30

(para cada parcela da fatura vinculada são feitas 3 contabilizações: F-02, F-30 e F-30,

respectivamente). Tratado para que a exclusão dos registros vinculados na tabela /PWS/ZYCBT005

apenas ocorra quando a contabilização for feita com sucesso

 

Versões Tratadas

6.0


Pré-Requisitos

Produto:

Nota

Descrição

280101 - CAPTAÇÃO VINCULAÇÃO

Informações Complementares

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

Nota Número 00869 Data: 13/02/2006 Hora: 15:47:17

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

 

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

Nota Número              : 00869

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 6.0

Pacote                   : 00022

Agrupamento              : 00100

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

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

00730  - 00001 - 6.0    - 00096  - 280101 - CAPTAÇÃO VINCULAÇÃO

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

AJUSTES DOS ERROS ENCONTRADOS NA VINCULAÇÃO DE FATURAS

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

Palavras Chave:

VINCULAÇÃO FATURAS

 

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

Objetos da nota:

REPS /PWS/MZYCB009F01

REPS /PWS/MZYCB009F03

REPS /PWS/MZYCB009F05

REPS /PWS/MZYCB009F08

REPS /PWS/MZYCB009F09

REPS /PWS/MZYCB009F10

REPS /PWS/MZYCB009O01

REPS /PWS/MZYCB009TOP

REPS /PWS/MZYCB009X01

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F01

 

...

            PERFORM fill_date1_f30_pre.

            itab_vinc-belnr = v_belnr.

            itab_vinc-dtbelnr = v_dtbelnr.

            MODIFY itab_vinc.

          ELSE.

* >> Início da inclusão: FORM FILL_DATE1_F02_PRE

            v_erro_estorno2 = 'X'.

* << Fim da inclusão

            LOOP AT itab_zycbt032b WHERE tcode  = 'F-02'

                                     AND tabela = '/PWS/ZYCBT005'

                                     AND cpochv = v_cpochv

                                     AND tpmsg  = 'E'.

              itab_erro-vbeln = itab_vinc-belnr.

...

 

 

 

 

 

 

...

        itab_contabil-msg      = text-341.

        itab_contabil-dtdocto  = itab_zycbe033-budat..

        itab_contabil-bukrs    = itab_zycbe033-bukrs.

        APPEND itab_contabil.

      ELSE.

* >> Início da inclusão: FORM FILL_DATE1_F30_PRE

        v_erro_estorno2 = 'X'.

* << Fim da inclusão

        LOOP AT itab_zycbt032 WHERE tcode  = 'F-30'

                                AND tabela = '/PWS/ZYCBT005'

                                AND cpochv = v_cpochv

                                AND tpmsg  = 'E'.

          itab_erro-vbeln = wa_zycbt005-belnr.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F03

 

...

  /pws/zycbe005-geber      =  itab_zycbt005-geber.

  /pws/zycbe005-ebeln      =  itab_zycbt005-ebeln.

  /pws/zycbe005-cod_area   =  itab_zycbt005-cod_area.

  /pws/zycbe005-dtcredext  =  itab_zycbt005-dtcredext.

  MOVE itab_zycbt005-slpagar TO /pws/zycbe005-slpagar.

* >> Início da inclusão: FORM CARREGA_ZYCBE005

  /pws/zycbe005-nrparc     =  itab_zycbt005-nrparc.

* << Fim da inclusão

  READ TABLE itab_zycbt017 WITH KEY nrinvoic = itab_zycbt005-nrinvoic

                                    nrparcf  = itab_zycbt005-nrparcf

                                    gsberf   = itab_zycbt005-gsberf.

  IF sy-subrc EQ 0.

    /pws/zycbe017-zterm      = itab_zycbt017-zterm.

...

 

 

 

 

 

...

                MOVE itab_zycbt005 TO itab_zycbt005_excluidas.

                APPEND itab_zycbt005_excluidas.

              ENDIF.

            ENDIF.

            IF /pws/zycbe001-tpcontr NE 'PT'.

* >> Início da inclusão: FORM EXCLUI_DADOS_ITAB

              /pws/zycbe001-slvinc = /pws/zycbe001-slvinc +

                                     itab_zycbt005-vlvinc.

            elseif /pws/zycbe001-tpcontr eq 'PT' and

                   sy-tcode eq c_transacao_c.

* << Fim da inclusão

              /pws/zycbe001-slvinc = /pws/zycbe001-slvinc +

                                     itab_zycbt005-vlvinc.

            ENDIF.

            DELETE itab_zycbt005_aux

                   WHERE nrinvoic = itab_zycbt005-nrinvoic

...

 

 

 

 

 

 

...

  DATA: BEGIN OF itab_zycbt017_salva OCCURS 0.

          INCLUDE STRUCTURE /pws/zycbt017.

  DATA: END OF itab_zycbt017_salva.

  CLEAR v_excep.

  CLEAR v_erro_estorno.

* >> Início da inclusão: FORM GRAVA_TABELAS

  CLEAR v_erro_estorno2.

  PERFORM verifica_vldesvinc.

  CHECK v_executa IS INITIAL.

* << Fim da inclusão

  IF v_performance = 'X'.

    EXIT.

  ENDIF.

  IF /pws/zycbt089-controle_ov = 'X'.

    IF NOT itab_zycbt005[] IS INITIAL.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F05

 

...

           gsberf   = itab_zycbt005-gsberf.

  itab_zycbt005-vlcomis = ( itab_zycbt005-vlme_p *

                           itab_zycbt017-vlcomis ) /

                           itab_zycbt017-vlavinc.

  itab_zycbt005-slcomi =  itab_zycbt005-vlcomis.

* >> Início da exclusão: FORM MOVE_SALDO

  MODIFY itab_zycbt005.

* << Fim da exclusão

* >> Início da inclusão: FORM MOVE_SALDO

  MODIFY itab_zycbt005 index v_index.

* << Fim da inclusão

  PERFORM atualiza_itab_zycbt017.

* >> Início da exclusão: FORM MOVE_SALDO

  MODIFY itab_zycbt005.

* << Fim da exclusão

* >> Início da inclusão: FORM MOVE_SALDO

  MODIFY itab_zycbt005 index v_index.

* << Fim da inclusão

ENDFORM.

 

 

FORM vincula_unica.

  GET CURSOR FIELD v_campo VALUE v_valor.

  GET CURSOR LINE v_index_sl.

  CHECK NOT v_index_sl IS INITIAL.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F08

 

...

        v_linha.

  CLEAR v_dtdocto.

  CLEAR v_f30_vinc.

  PERFORM get_parameters_001.

  PERFORM clear_date_batch.

* >> Início da inclusão: FORM FILL_DATE1_F30_DESM

  SELECT SINGLE nrseqc FROM /pws/zycbt005 INTO /pws/zycbt005-nrseqc

         WHERE nrseqc = /pws/zycbe001-nrseqc.

  IF sy-subrc NE 0 AND

     NOT /pws/zycbe074-dtcont IS INITIAL.

    v_dtdocto = /pws/zycbe074-dtcont.

  ELSE.

* << Fim da inclusão

  v_dtdocto = /pws/zycbe005-dtvincul.

* >> Início da inclusão: FORM FILL_DATE1_F30_DESM

  ENDIF.

* << Fim da inclusão

  v_prazo = /pws/zycbe001-przcontr.

...

 

 

 

 

 

 

...

          ENDLOOP.

          IF v_vlvinc EQ 0.

            EXIT.

          ENDIF.

        ELSE.

* >> Início da exclusão: FORM BUSCA_DOC_VALOR_VAR

          READ TABLE itab_zycbt005 INDEX 1.

* << Fim da exclusão

          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_contabil-bukrs    = /pws/zycbe001-bukrs.

        itab_contabil-dtdocto  = itab_zycbt005-dtvincul.

        APPEND itab_contabil.

        COMMIT WORK.

      ELSE.

* >> Início da inclusão: FORM VINCULACAO

        v_erro_estorno2 = 'X'.

* << Fim da inclusão

        LOOP AT itab_zycbt032 WHERE cpochv = v_cpochv.

          itab_erro-msg   = itab_zycbt032-msg.

          APPEND itab_erro.

        ENDLOOP.

        v_subrc = 4.

...

 

 

 

 

 

...

          PERFORM vinculacao.

          v_vlvinc = v_vlvinc - v_wrbtr.

          MODIFY itab_zycbt005.

        ENDLOOP.

      ELSE.

* >> Início da inclusão: FORM DESMEMBRAMENTO

        v_erro_estorno2 = 'X'.

* << Fim da inclusão

        LOOP AT itab_zycbt032 WHERE cpochv = v_cpochv.

          itab_erro-msg   = itab_zycbt032-msg.

          APPEND itab_erro.

        ENDLOOP.

        CONCATENATE text-053 itab_zycbt005-nrinvoic text-076

...

 

 

 

 

 

 

...

          CLEAR itab_zycbt005-belnr_vinc.

          MODIFY itab_zycbt005

            INDEX v_index.

        ELSE.

          PERFORM anula_desm_ace TABLES itab_zycbt005.

* >> Início da exclusão: FORM LANCAMENTO_PROVISAO_DP

          CLEAR: itab_zycbt005-belnr_vinc,

                 v_belnr_001.

* << Fim da exclusão

* >> Início da inclusão: FORM LANCAMENTO_PROVISAO_DP

          READ TABLE itab_zycbt030

            WITH KEY nrinvoic = itab_zycbt005-nrinvoic

                     nrparcf  = itab_zycbt005-nrparcf

                     gsberf   = itab_zycbt005-gsberf.

          clear v_belnr_001.

* << Fim da inclusão

          MODIFY itab_zycbt005

            INDEX v_index.

        ENDIF.

        DELETE

          FROM /pws/zycbt084

...

 

 

 

 

 

...

    v_vinc_tot = 'X'.

  ELSE.

    CLEAR v_vinc_tot.

  ENDIF.

  IF wa_zycbt007-liq_trans EQ space.

* >> Início da exclusão: FORM DESMEMBRA_CLIENTE

    v_data = itab_zycbt030-budat(4).

* << Fim da exclusão

* >> Início da inclusão: FORM DESMEMBRA_CLIENTE

    v_data = itab_zycbt030-budat.

* << Fim da inclusão

  ELSE.

* >> Início da exclusão: FORM DESMEMBRA_CLIENTE

    v_data = itab_zycbt030-budat_t(4).

* << Fim da exclusão

* >> Início da inclusão: FORM DESMEMBRA_CLIENTE

    v_data = itab_zycbt030-budat_t.

* << Fim da inclusão

  ENDIF.

  CLEAR v_year.

  CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

       EXPORTING

            v_bukrs                = itab_zycbt005-bukrs

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F09

 

...

              itab_zycbt209-belnr

              itab_zycbt209-gsberf

              itab_zycbt209-nrparcf

         INTO v_cpochv.

  itab_zycbe033-cpochv = v_cpochv.

* >> Início da inclusão: FORM DESMEMBRA_LIQ_AND_CP

  IF /pws/zycbe001-tpcontr(1) = 'C'.

    IF wa_zycbt007-liq_cp EQ 'X'.

      CONCATENATE '003' /pws/zycbe001-tpcontr INTO v_codeven.

    endif.

  endif.

* << Fim da inclusão

  PERFORM verify_null_field USING itab_zycbt005-dtvincul

                                  'DTPAGTO'

                                  text-003.

  itab_zycbe033-budat = itab_zycbt005-dtvincul.

  itab_zycbe033-bldat = itab_zycbt005-dtvincul.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F10

 

...

  ELSE.

    APPEND wa_desvincula TO itab_desvincula.

  ENDIF.

ENDFORM.

FORM efetua_estorno.

* >> Início da inclusão: FORM EFETUA_ESTORNO

  PERFORM verifica_vldesvinc.

  CHECK v_executa IS INITIAL.

* << Fim da inclusão

  LOOP AT itab_desvincula WHERE vldesvin GT 0.

    READ TABLE itab_zycbt005

      WITH KEY nrinvoic = itab_desvincula-nrinvoic

               nrparcf  = itab_desvincula-nrparcf

               gsberf   = itab_desvincula-gsberf.

...

 

...

  IF NOT itab_contabil[] IS INITIAL.

    EXPORT itab_contabil TO MEMORY ID '040'.

    EXPORT text-059 TO MEMORY ID '050'.

    SUBMIT /pws/zycbr040 AND RETURN.

    REFRESH itab_contabil.

* >> Início da inclusão: FORM EFETUA_ESTORNO

    CLEAR v_ind_mudanca.

* << Fim da inclusão

  ENDIF.

  PERFORM limpa_desvincula.

ENDFORM.

FORM calcula_estorno.

  DATA: v_parafator LIKE tcurf-ffact ,

...

 

...

    NOT itab_zyglt100-programa IS INITIAL.

  PERFORM (itab_zyglt100-formulario)

    IN PROGRAM (itab_zyglt100-programa)

    IF FOUND.

ENDFORM.

* >> Início da inclusão:

FORM verifica_vldesvinc.

  CLEAR: v_executa, v_processo.

  LOOP AT itab_zycbt005.

  READ TABLE itab_desvincula WITH KEY nrinvoic = itab_zycbt005-nrinvoic

                                      nrparcf  = itab_zycbt005-nrparcf

                                      gsberf   = itab_zycbt005-gsberf.

    IF sy-subrc EQ 0 AND

       itab_desvincula-vldesvin >= itab_zycbt005-vlvinc.

      MESSAGE i061 WITH text-379 itab_zycbt005-nrinvoic

                                 itab_zycbt005-nrparcf

                        text-381.

      v_executa = 'X'.

     DELETE itab_desvincula WHERE nrinvoic = itab_zycbt005-nrinvoic AND

                                  nrparcf  = itab_zycbt005-nrparcf  AND

                                  gsberf   = itab_zycbt005-gsberf.

    ENDIF.

  ENDLOOP.

  CASE sy-ucomm.

    WHEN 'ESTOR'.

      LOOP AT itab_zycbt005_ant.

        READ TABLE itab_zycbt005 WITH KEY

                                  nrseqc   = itab_zycbt005_ant-nrseqc

                                  tpdesp   = itab_zycbt005_ant-tpdesp

                                  nrparc   = itab_zycbt005_ant-nrparc

                                  dtincl   = itab_zycbt005_ant-dtincl

                                  nrinvoic = itab_zycbt005_ant-nrinvoic

                                  nrparcf  = itab_zycbt005_ant-nrparcf

                                  gsberf   = itab_zycbt005_ant-gsberf

                                  dtvincul = itab_zycbt005_ant-dtvincul

                                  dtvencto = itab_zycbt005_ant-dtvencto.

        IF sy-subrc NE 0.

          v_processo = 'X'.

        ENDIF.

      ENDLOOP.

    WHEN 'SAVE'.

      LOOP AT itab_desvincula WHERE NOT vldesvin IS INITIAL.

        v_processo = 'X'.

      ENDLOOP.

  ENDCASE.

  IF v_processo = 'X'.

    MESSAGE w061 WITH text-382 text-383.

    itab_zycbt005[] = itab_zycbt005_ant[].

    v_executa = 'X'.

  ENDIF.

endform.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCB009O01

 

...

    itab_pf_status-fcode = 'DEVE'.

    APPEND itab_pf_status.

    MOVE 'ESTOR' TO itab_pf_status-fcode.

    APPEND itab_pf_status.

  ENDIF.

* >> Início da exclusão: MODULE STATUS_0100

  IF sy-tcode EQ c_transacao_a.

    LOOP AT itab_zycbt005.

      IF itab_zycbt005-vlestorno GT 0.

        MOVE 'X' TO v_flag_estorno.

      ENDIF.

    ENDLOOP.

    IF NOT v_flag_estorno IS INITIAL.

      MOVE 'ESTOR' TO itab_pf_status-fcode.

      APPEND itab_pf_status.

    ENDIF.

  ENDIF.

* << Fim da exclusão

  CALL CUSTOMER-FUNCTION '083'

     EXPORTING

     v_sbu   = v_sbu

     v_tcode = sy-tcode

     IMPORTING

...

 

 

 

 

...

           wa_cols-screen-name = '/PWS/ZYCBE005-KDAUF'    OR

           wa_cols-screen-name = '/PWS/ZYCBE005-FICTR'    OR

           wa_cols-screen-name = '/PWS/ZYCBE005-GEBER'    OR

           wa_cols-screen-name = '/PWS/ZYCBE005-EBELN'    OR

           wa_cols-screen-name = '/PWS/ZYCBE005-ERGOKONT' OR

* >> Início da inclusão: MODULE SET_SCREEN

           wa_cols-screen-name = 'WA_DESVINCULA-VLDESVIN' OR

* << Fim da inclusão

           wa_cols-screen-name = '/PWS/ZYCBE005-COD_AREA' OR

           wa_cols-screen-name = '/PWS/ZYCBE005-DTCREDEXT'.

          IF ( wa_cols-screen-name EQ '/PWS/ZYCBE005-VLME_P'   OR

               wa_cols-screen-name EQ '/PWS/ZYCBE005-VLVINC' ) AND

             /pws/zycbe001-tpcontr CA 'E' AND

...

 

 

 

 

...

  CLEAR wa_zycbt007.

  SELECT SINGLE empresa

         FROM /pws/zyglt364

         INTO /pws/zyglt364-empresa

         WHERE usuario EQ sy-uname.

* >> Início da exclusão: MODULE PARAMETROS

  IF sy-subrc IS INITIAL.

* << Fim da exclusão

* >> Início da inclusão: MODULE PARAMETROS

  IF sy-subrc EQ 0.

* << Fim da inclusão

    SELECT SINGLE * FROM /pws/zycbt007

                    INTO wa_zycbt007

                    WHERE bukrs EQ /pws/zyglt364-empresa.

* >> Início da inclusão: MODULE PARAMETROS

  ELSE.

    SELECT SINGLE * FROM /pws/zycbt007

                    INTO wa_zycbt007

                    WHERE bukrs EQ /pws/zycbe001-bukrs.

* << Fim da inclusão

  ENDIF.

ENDMODULE.

 

 

 

MODULE set_screen_0401 OUTPUT.

  IF v_status1_s = '0'.

    LOOP AT SCREEN.

...

 

...

            gsberf   = /pws/zycbe005-gsberf   AND

            dtvincul = /pws/zycbe005-dtvincul.

      IF sy-subrc EQ 0.

        IF screen-name = '/PWS/ZYCBE005-VLME_P'   OR

           screen-name = '/PWS/ZYCBE005-VLVINC'   .

* >> Início da exclusão: MODULE SET_SCREEN_VINC

          IF /pws/zycbe005-slpagar NE /pws/zycbe006-vlme OR

             /pws/zycbe006-vlme EQ 0.

* << Fim da exclusão

* >> Início da inclusão: MODULE SET_SCREEN_VINC

          IF /pws/zycbe005-slpagar NE /pws/zycbt006-vlme OR

             /pws/zycbt006-vlme EQ 0.

* << Fim da inclusão

            screen-input = '0'.

          ELSE.

            screen-input = v_status_s.

          ENDIF.

        ENDIF.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009TOP

 

...

  v_monat         LIKE t001b-frpe1,

  v_ano           LIKE  t009b-bdatj,

  v_dtbelnr       LIKE /pws/zycbt005-dtbelnr,

  v_arb(1),

  v_executa       TYPE c,

* >> Início da inclusão:

  v_processo(1)   TYPE c,

* << Fim da inclusão

  v_performance   TYPE c,

  v_index_sl      TYPE i,

  v_dclique(1),

  v_dtlanc        LIKE /pws/zycbt030-budat,

  v_cvalor(1),

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009X01

 

...

  /pws/zycbe050,

  /pws/zycbt050,

  /pws/zycbt051,

  /pws/zycbe051.

DATA: BEGIN OF COMMON PART c.

* >> Início da inclusão:

data:

  v_erro_estorno2 TYPE c.

* << Fim da inclusão

DATA: BEGIN OF itab_zycbt001 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt001.

DATA: END OF itab_zycbt001.

DATA: BEGIN OF itab_zycbt005 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt005.

...