CE PLUS - Nota 004418

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Vinculação

Data/Hora da Publicação: 14/08/2007 00:00:00

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

Descrição da Nota: VINCULAÇÃO CP COM LIQUIDAÇÃO AUTOMÁTICA - ESTORNO

Sintoma

Ao efetuar a vinculação de câmbio pronto com liquidação automática, não esta levando o documento

contábil para compensar na primeira F-30(cliente). Ao estornar a vinculação e gerar erro na primeira

FBRA, esta limpando as tabelas de vinculação e atualizando os saldos, não permitindo voltar para

fazer o estorno corretamente.

 

 

Solução

Ajustar consistência de verificação de liquidação em andamento, no form encontra_documento, para

tratar o tipo de conta correto: D(cliente) S(razão). Barrar a atualização das tabelas e saldos

quando houver erro no estorno.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

VINCULAÇÃO - LIQUIDAÇÃO AUTOMÁTICA CP - CONTA LIQ. ANDAMENTO

VINCULAÇÃO - ESTORNO AUTOMATICO POR ERRO NA CONTABILIZAÇÃO

VINCULAÇÃO - LIQUIDAÇÃO CAMBIO PRONTO

Informações Complementares

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

Nota Número 04418 Data: 14/08/2007 Hora: 14:59:37

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

 

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

Nota Número              : 04418

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00002

Agrupamento              : 00008

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

Referência às notas relacionadas:

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

 

03538  - 00001 - 7.0    - 00001  - VINCULAÇÃO - LIQUIDAÇÃO CAMBIO PRONTO

03752  - 00002 - 7.0    - 00001  - VINCULAÇÃO -  ESTORNO AUTOMATICO POR ERRO NA CONTABILIZAÇÃO

04109  - 00003 - 7.0    - 00002  - VINCULAÇÃO - LIQUIDAÇÃO AUTOMÁTICA CP - CONTA LIQ. ANDAMENTO

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

VINCULAÇÃO CP COM LIQUIDAÇÃO AUTOMÁTICA - ESTORNO

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

Palavras Chave:

VINCULAÇÃO CP COM LIQUIDAÇÃO AUTOMÁTICA ESTORNO

CÂMBIO PRONTO

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

Objetos da nota:

REPS /PWS/MZYCB009F03

REPS /PWS/MZYCB009F07

REPS /PWS/MZYCB009F08

REPS /PWS/MZYCB009F09

REPS /PWS/MZYCB009F10

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F03

 

...

                 AND gsberf    = itab_zycbt005_ant-gsberf

                 AND dtvincul  = itab_zycbt005_ant-dtvincul

                 AND dtvencto  = itab_zycbt005_ant-dtvencto.

          PERFORM monta_log_cfm USING    wa_zycbt005_log

                                        '/PWS/ZYCBT005'

                                CHANGING wa_log.

          PERFORM grava_log USING '/PWS/ZYCBT005'

                                  wa_log

                                  'E'.

        ENDIF.

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

        IF   itab_zycbt005_ant-belnr  IS INITIAL AND

           ( itab_zycbt005_ant-status EQ 'I'     OR

             itab_zycbt005_ant-status IS INITIAL ).

* << Fim da inclusão

        DELETE FROM /pws/zycbt005

               WHERE nrseqc  = itab_zycbt005_ant-nrseqc

               AND tpdesp    = itab_zycbt005_ant-tpdesp

               AND nrparc    = itab_zycbt005_ant-nrparc

               AND dtincl    = itab_zycbt005_ant-dtincl

               AND nrinvoic  = itab_zycbt005_ant-nrinvoic

               AND nrparcf   = itab_zycbt005_ant-nrparcf

               AND gsberf    = itab_zycbt005_ant-gsberf

               AND dtvincul  = itab_zycbt005_ant-dtvincul

               AND dtvencto  = itab_zycbt005_ant-dtvencto.

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

        ENDIF.

* << Fim da inclusão

        CALL CUSTOMER-FUNCTION '084'

            TABLES

            itab_zycbt005 = itab_zycbt005_ant.

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

        IF   itab_zycbt005_ant-belnr  IS INITIAL AND

           ( itab_zycbt005_ant-status EQ 'I'     OR

             itab_zycbt005_ant-status IS INITIAL ).

* << Fim da inclusão

        DELETE FROM /pws/zycbt004

               WHERE nrseqc = itab_zycbt005_ant-nrseqc

               AND   tpdesp = 'J'

               AND   nrparc = itab_zycbt005_ant-nrparc

               AND   dtincl = itab_zycbt005_ant-dtvincul.

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

        ENDIF.

* << Fim da inclusão

        IF ( itab_zycbt005_ant-tpcontr(1) = 'D' ) OR

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

             wa_zycbt007-liq_cp EQ 'X' ).

          IF wa_zycbt007-cfm = 'X'.

            SELECT SINGLE *

                  FROM /pws/zycbt006

                  INTO wa_zycbt006_log

                  WHERE nrseqc  = itab_zycbt005_ant-nrseqc

                  AND tpdesp    = itab_zycbt005_ant-tpdesp

                  AND nrparc    = itab_zycbt005_ant-nrparc

...

 

...

                  AND dtpagto   = itab_zycbt005_ant-dtvincul.

            IF sy-subrc EQ 0.

              PERFORM monta_log_cfm USING    wa_zycbt006_log

                                            '/PWS/ZYCBT006'

                                    CHANGING wa_log.

              PERFORM grava_log USING '/PWS/ZYCBT006'

                                      wa_log

                                      'E'.

            ENDIF.

          ENDIF.

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

          IF   itab_zycbt005_ant-belnr  IS INITIAL AND

             ( itab_zycbt005_ant-status EQ 'I'     OR

               itab_zycbt005_ant-status IS INITIAL ).

* << Fim da inclusão

          DELETE FROM /pws/zycbt006

                 WHERE nrseqc  = itab_zycbt005_ant-nrseqc

                 AND tpdesp    = itab_zycbt005_ant-tpdesp

                 AND nrparc    = itab_zycbt005_ant-nrparc

                 AND dtincl    = itab_zycbt005_ant-dtincl

                 AND nrinvoic  = itab_zycbt005_ant-nrinvoic

                 AND nrparcf   = itab_zycbt005_ant-nrparcf

                 AND gsberf    = itab_zycbt005_ant-gsberf

                 AND dtvincul  = itab_zycbt005_ant-dtvincul

                 AND dtvencto  = itab_zycbt005_ant-dtvencto

                 AND dtpagto   = itab_zycbt005_ant-dtvincul.

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

          ENDIF.

* << Fim da inclusão

          IF ( /pws/zycbe001-tpcontr EQ 'C '  AND

               wa_zycbt007-liq_cp    EQ 'X' ) OR

             ( /pws/zycbe001-tpcontr EQ 'DP'  AND

               /pws/zycbt089-f_cont_vinc EQ 'F' ).

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

            IF   itab_zycbt005_ant-belnr  IS INITIAL AND

               ( itab_zycbt005_ant-status EQ 'I'     OR

                 itab_zycbt005_ant-status IS INITIAL ).

* << Fim da inclusão

            DELETE FROM /pws/zycbt006

                   WHERE nrseqc EQ itab_zycbt005_ant-nrseqc

                   AND tpdesp   EQ itab_zycbt005_ant-tpdesp

                   AND nrparc   EQ itab_zycbt005_ant-nrparc

                   AND dtincl   EQ itab_zycbt005_ant-dtincl

                   AND nrinvoic EQ itab_zycbt005_ant-nrinvoic

                   AND nrparcf  EQ itab_zycbt005_ant-nrparcf

                   AND gsberf   EQ itab_zycbt005_ant-gsberf

                   AND dtvincul EQ itab_zycbt005_ant-dtvincul

                   AND dtvencto EQ itab_zycbt005_ant-dtvencto

                   AND dtpagto  EQ /pws/zycbe006-dtpagto.

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

            ENDIF.

* << Fim da inclusão

          ENDIF.

          COMMIT WORK.

        ENDIF.

      ENDIF.

    ENDLOOP.

  ENDIF.

  IF itab_zycbt005_ant[] IS INITIAL.

    v_ind_mudanca = 'X'.

  ELSE.

    LOOP AT itab_zycbt005_ant WHERE status = 'I'

...

 

...

                  ktosl           = 'TRE'

                  codaux1         = 'BAIXA CLIENTE'

             TABLES

                  account         = itab_zyglt316

             EXCEPTIONS

                  key_not_found   = 1

                  rules_not_found = 2

                  OTHERS          = 3.

        READ TABLE itab_zyglt316 INDEX 1.

        v_conta = itab_zyglt316-konts.

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

        v_modulo = 'S'.

* << Fim da inclusão

      ENDIF.

    itab_zycbe033-d_newko = v_conta.

    ENDIF.

  ENDIF.

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

  IF /pws/zycbe001-tpcontr(1) = 'C' AND /pws/zycbt089-tp_liq_and EQ 'S'.

    v_modulo = 'S'.

* << Fim da exclusão

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

  IF /pws/zycbe001-tpcontr(1) = 'C' AND /pws/zycbt089-tp_liq_and EQ 'S'

     AND v_modulo = 'S'.

* << Fim da inclusão

    CALL FUNCTION '/PWS/ZYCB_DOCUMENTO_VERIFICA'

         EXPORTING

              i_modulo             = v_modulo

              i_bukrs              = /pws/zycbe001-bukrs

              i_hkont              = v_conta

              i_gjahr              = v_data

         CHANGING

              c_belnr              = v_belnr

         EXCEPTIONS

              documento_compensado = 1

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F07

 

...

      PERFORM desmembra_ace_cp.

      PERFORM clearing_030_cp.

      MODIFY /pws/zycbt030 FROM TABLE itab_zycbt030.

      COMMIT WORK.

      MOVE wa_zycbt005 TO itab_zycbt005.

      MODIFY itab_zycbt005.

    ELSE.

      PERFORM contabiliza_cp_arbitr.

    ENDIF.

  ENDLOOP.

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

  IF v_erro_estorno IS INITIAL.

* << Fim da inclusão

  /pws/zycbe001-slpagar = /pws/zycbe001-slvinc.

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

  ENDIF.

* << Fim da inclusão

  PERFORM clear_date_batch.

ENDFORM.

FORM estorna_cp.

  DATA: j_1bbranch LIKE t001w-j_1bbranch.

  READ TABLE itab_zycbt017 WITH KEY nrinvoic = wa_zycbt005-nrinvoic

                                    nrparcf   = wa_zycbt005-nrparcf

...

 

...

            v_year                 = v_year

       EXCEPTIONS

            variante_de_exercicio  = 1

            data_nao_encontrada    = 2

            empresa_nao_encontrada = 3

            period_in_not_valid    = 4

            period_not_assigned    = 5

            version_undefined      = 6

            OTHERS                 = 7.

  v_gjahr = v_year.

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

  IF NOT itab_zycbt030-budat_t IS INITIAL.

* << Fim da inclusão

  v_data = itab_zycbt030-budat_t.

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

  ELSE.

    v_data = itab_zycbt030-budat.

  ENDIF.

* << Fim da inclusão

  CLEAR: itab_bsid,

         v_wrbtr.

  REFRESH itab_bsid.

  SELECT SUM( wrbtr ) FROM bsid INTO v_wrbtr

...

 

...

            PERFORM fill_date_f30_comissao.

          ENDIF.

        ELSE.

          MOVE: itab_zycet013-nrseq TO itab_erro-vbeln,

                text-389            TO itab_erro-msg.

          APPEND itab_erro.

        ENDIF.

      ENDLOOP.

    ENDIF.

  ENDLOOP.

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

  IF NOT itab_contabil[] IS INITIAL.

    EXPORT itab_contabil TO MEMORY ID '040'.

    EXPORT text-394 TO MEMORY ID '050'.

    SUBMIT /pws/zycbr040 AND RETURN.

    REFRESH itab_contabil.

  ENDIF.

  IF NOT itab_erro[] IS INITIAL.

    EXPORT itab_erro TO MEMORY ID '001'.

    SUBMIT /pws/zycbr126 AND RETURN.

    REFRESH itab_erro.

  ENDIF.

* << Fim da exclusão

ENDFORM.

FORM liquida_comis_trans .

  DATA:

    v_chave(50)     TYPE c,

    v_erro_f28(1)   TYPE c,

    v_aux           TYPE c,

    v_status_f30(1) TYPE c VALUE 'E'.

  PERFORM clear_date_batch.

  CLEAR: itab_zycbt032a, itab_zycbt036.

  REFRESH: itab_zycbt032a, itab_zycbt036.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F08

 

...

      EXIT.

    ENDIF.

    READ TABLE itab_zycbt017 WITH KEY

                                  nrinvoic = itab_zycbt030-nrinvoic

                                  gsberf   = itab_zycbt030-gsberf.

    LOOP AT itab_zycbt030 WHERE nrinvoic = itab_vinc-nrinvoic

                            AND gsberf   = itab_vinc-gsberf.

      PERFORM clearing_cli2 TABLES itab_vinc

                           USING v_kunnr

                                 v_datum.

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

      IF sy-subrc NE 0.

* << Fim da exclusão

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

      IF v_erro_estorno = 'X'.

* << Fim da inclusão

        v_subrc = 4.

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

        v_erro_estorno = 'X'.

* << Fim da exclusão

        EXIT.

      ENDIF.

      IF wa_zycbt007-liq_trans IS INITIAL.

        itab_zycbt030-belnr6 = itab_zycbt030-belnr_d.

        itab_zycbt030-budat  = itab_vinc-dtvincul.

        itab_zycbt030-vlslliq =

...

 

...

                           itab_vinc-belnr_vinc

                           itab_vinc-dtvincul

                           text-341

                           wa_zycbt011-agums

                           itab_vinc-bukrs

                           itab_vinc-waers

                           /pws/zycbe005-j_1bbranch

                      CHANGING v_belnr.

    v_belnr_001 = v_belnr.

    v_dtdocto   = itab_vinc-dtvincul.

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

    IF sy-subrc NE 0.

* << Fim da exclusão

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

    IF v_erro_estorno = 'X'.

* << Fim da inclusão

      v_subrc = 4.

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

      v_erro_estorno = 'X'.

* << Fim da exclusão

      EXIT.

    ENDIF.

    itab_vinc-belnr = v_belnr.

    MODIFY itab_vinc TRANSPORTING belnr

                             WHERE nrinvoic = itab_vinc-nrinvoic

                               AND gsberf   = itab_vinc-gsberf

...

 

...

        COMMIT WORK.

      ELSE.

        LOOP AT itab_zycbt032 WHERE tcode  = 'F-30'

                                AND tabela = 'ZYCBT005'

                                AND cpochv = v_cpochv.

          itab_erro-vbeln = p_belnr_ref.

          itab_erro-msg   = itab_zycbt032-msg.

          APPEND itab_erro.

        ENDLOOP.

        sy-subrc = 4.

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

      v_erro_estorno = 'X'.

* << Fim da inclusão

      ENDIF.

    ELSE.

      LOOP AT itab_zycbt034.

        MESSAGE i016 WITH itab_zycbt034-descricao.

      ENDLOOP.

      sy-subrc = 4.

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

      v_erro_estorno = 'X'.

* << Fim da inclusão

    ENDIF.

  ELSE.

    LOOP AT itab_zycbt034.

      MESSAGE i016 WITH itab_zycbt034-descricao.

    ENDLOOP.

    sy-subrc = 4.

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

    v_erro_estorno = 'X'.

* << Fim da inclusão

  ENDIF.

  IF NOT itab_zycbe224 IS INITIAL.

    IF p_agkoa EQ 'D'.

      PERFORM enqueue_cliente

        USING itab_zycbe033-bukrs p_conta ' '.

    ELSE.

      PERFORM enqueue_razao

        USING itab_zycbe033-bukrs p_conta ' '.

    ENDIF.

  ENDIF.

...

 

...

                 belnr <> itab_vinc-belnr.

    LOOP AT itab_trans WHERE koart IS initial.

      READ TABLE itab_cli WITH KEY belnr = itab_trans-belnr.

      IF sy-subrc NE 0.

        itab_trans-koart = 'D'.

        MODIFY itab_trans.

      ENDIF.

    ENDLOOP.

    DELETE itab_trans WHERE koart EQ space.

    PERFORM anula_liquidacao TABLES itab_vinc.

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

    IF sy-subrc NE 0.

* << Fim da exclusão

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

    IF v_erro_estorno = 'X'.

* << Fim da inclusão

      v_subrc = 4.

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

      v_erro_estorno = 'X'.

* << Fim da exclusão

      EXIT.

    ENDIF.

    LOOP AT itab_zycbt030 WHERE nrinvoic = itab_vinc-nrinvoic AND

                                gsberf   = itab_vinc-gsberf.

      CLEAR v_belnr.

      IF wa_zycbt007-liq_trans IS INITIAL.

...

 

...

                             v_kursf

                             'D'

                             v_belnr2

                             v_budat2

                             text-296

                             ' '

                             itab_vinc-bukrs

                             itab_vinc-waers

                             /pws/zycbe005-j_1bbranch

                    CHANGING v_belnr.

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

      IF sy-subrc NE 0.

* << Fim da exclusão

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

      IF v_erro_estorno = 'X'.

* << Fim da inclusão

        v_subrc = 4.

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

        v_erro_estorno = 'X'.

* << Fim da exclusão

        EXIT.

      ENDIF.

      DELETE FROM /pws/zycbt084

            WHERE nrseqc   = itab_vinc-nrseqc AND

                  nrparc   = itab_vinc-nrparc AND

                  dtincl   = itab_vinc-dtincl AND

...

 

...

                                itab_zycbt209-koart

                                v_belnr2

                                v_budat2

                                text-249

                                itab_zycbt209-umskz

                                itab_vinc-bukrs

                                itab_vinc-waers

                                /pws/zycbe005-j_1bbranch

                       CHANGING v_belnr.

      ENDIF.

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

      IF sy-subrc NE 0.

* << Fim da exclusão

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

      IF v_erro_estorno = 'X'.

* << Fim da inclusão

        v_subrc = 4.

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

        v_erro_estorno = 'X'.

* << Fim da exclusão

        EXIT.

      ENDIF.

      itab_zycbt209-belnr2  = v_belnr.

      itab_zycbt209-dtbelnr = itab_vinc-dtvincul.

      itab_zycbt209-saldo   = itab_zycbt209-saldo + itab_trans-wrbtr.

      MODIFY itab_zycbt209.

...

 

...

                           v_kursf

                           v_agkoa

                           v_belnr

                           v_dtlanc

                           text-302

                           wa_zycbt011-agums

                           /pws/zycbe001-bukrs

                           /pws/zycbe001-waers

                           /pws/zycbe001-j_1bbranch

                  CHANGING v_belnr.

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

    IF sy-subrc NE 0.

* << Fim da exclusão

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

    IF v_erro_estorno = 'X'.

* << Fim da inclusão

      v_subrc = 4.

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

      v_erro_estorno = 'X'.

* << Fim da exclusão

      EXIT.

    ENDIF.

    itab_vinc-belnr   = v_belnr.

    itab_vinc-dtbelnr = itab_vinc-dtvincul.

    itab_vinc-slpagar = itab_vinc-slpagar -

                                itab_vinc-vldif.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F09

 

...

        COMMIT WORK.

      ELSE.

        LOOP AT itab_zycbt032 WHERE tcode  = 'F-30'

                                AND tabela = 'ZYCBT006'

                                AND cpochv = itab_vinc-nrinvoic.

          itab_erro-vbeln = itab_zycbt030-vbeln.

          itab_erro-msg   = itab_zycbt032-msg.

          APPEND itab_erro.

        ENDLOOP.

        sy-subrc = 4.

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

    v_erro_estorno = 'X'.

* << Fim da inclusão

      ENDIF.

    ELSE.

      LOOP AT itab_zycbt034.

        MESSAGE i016 WITH itab_zycbt034-descricao.

      ENDLOOP.

      sy-subrc = 4.

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

    v_erro_estorno = 'X'.

* << Fim da inclusão

    ENDIF.

  ELSE.

    LOOP AT itab_zycbt034.

      MESSAGE i016 WITH itab_zycbt034-descricao.

    ENDLOOP.

    sy-subrc = 4.

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

    v_erro_estorno = 'X'.

* << Fim da inclusão

  ENDIF.

  IF NOT itab_zycbe224 IS INITIAL.

    PERFORM enqueue_cliente

      USING itab_zycbe033-bukrs itab_zycbe033-d_newko ' '.

  ENDIF.

ENDFORM.

FORM move_zycbe005.

  itab_zycbt005-matnr_or   = /pws/zycbe005-matnr_or.

  itab_zycbt005-bukrs_or   = /pws/zycbe005-bukrs_or.

  itab_zycbt005-fkart_or   = /pws/zycbe005-fkart_or.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F10

 

...

ENDFORM.

FORM grava_contabilizacao.

  IF /pws/zycbe001-tpcontr     EQ 'DP' AND

     /pws/zycbt089-f_cont_vinc EQ 'F'.

    LOOP AT itab_zycbt005.

      CLEAR itab_zycbt005-slpagar.

      MODIFY itab_zycbt005.

    ENDLOOP.

    MOVE-CORRESPONDING itab_zycbt005 TO /pws/zycbt005.

  ENDIF.

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

  IF /pws/zycbe001-tpcontr(01) = 'D' AND

     v_erro_estorno = 'X'.

* << Fim da exclusão

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

   IF v_erro_estorno = 'X'.

* << Fim da inclusão

    LOOP AT itab_zycbt005_excluidas.

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

      READ TABLE itab_zycbt005_ant

                   WITH KEY nrinvoic = itab_zycbt005_excluidas-nrinvoic

                            nrparcf  = itab_zycbt005_excluidas-nrparcf

                            gsberf   = itab_zycbt005_excluidas-gsberf.

      IF NOT itab_zycbt005_ant-belnr  IS INITIAL AND

         NOT itab_zycbt005_ant-status EQ 'I'     AND

         NOT itab_zycbt005_ant-status EQ space.

* << Fim da inclusão

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

                             itab_zycbt005_excluidas-vlvinc.

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

        READ TABLE itab_zycbt017

             WITH KEY nrinvoic = itab_zycbt005_excluidas-nrinvoic

                      nrparcf  = itab_zycbt005_excluidas-nrparcf

                      gsberf   = itab_zycbt005_excluidas-gsberf.

        IF sy-subrc = 0.

          v_pos_itab = sy-tabix.

          itab_zycbt017-vlslf = ( itab_zycbt017-vlslf -

                                  itab_zycbt005_excluidas-vlme_p ).

          itab_zycbt017-fvinc = 'X'.

          MODIFY itab_zycbt017 INDEX v_pos_itab.

        ENDIF.

      ENDIF.

* << Fim da inclusão

    ENDLOOP.

  ENDIF.

  IF /pws/zycbe001-tpcontr(01) = 'D' AND

     /pws/zycbt089-f_cont_vinc = 'F'.

    /pws/zycbe001-slpagar = /pws/zycbe001-slvinc.

  ENDIF.

  /pws/zycbe001-belnr2   = v_belnr_001.

  /pws/zycbe001-dtvincul = v_dtdocto.

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

     wa_zycbt007-liq_cp EQ 'X'.

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

    IF itab_zycbt005[] IS INITIAL.

* << Fim da exclusão

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

    IF itab_zycbt005[] IS INITIAL

       and v_erro_estorno is initial.

* << Fim da inclusão

      /pws/zycbe001-slpagar = /pws/zycbe001-vlme.

    ELSE.

      CLEAR /pws/zycbe001-slpagar.

    ENDIF.

  ENDIF.

  IF /pws/zycbe001-tpcontr EQ 'DP' AND

     v_erro_estorno IS INITIAL.

    PERFORM atualiza_dados_estorno.

    MODIFY /pws/zycbt001 FROM /pws/zycbe001.

    .

...