CE PLUS - Nota 003538

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Liquidação de Fatura

Data/Hora da Publicação: 25/04/2007 00:00:00

Data/Hora Última Alteração: 22/02/2011 11:57:25

Descrição da Nota: VINCULAÇÃO - LIQUIDAÇÃO CAMBIO PRONTO

Sintoma

O sistema nao estorna a liquidação de cambio pronto corretamente e não faz a liquidação automatica

de cambio pronto.

 

 

Solução

Foi adicionado o tratamento ao programa de vinculação/liquidação.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

VINCULAÇÃO LIQ. AUT. / LIQUIDAÇÃO - CÂMBIO PRONTO - ARBITRAGEM

Informações Complementares

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

Nota Número 03538 Data: 25/04/2007 Hora: 10:45:30

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

 

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

Nota Número              : 03538

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00001

Agrupamento              : 00163

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

Referência às notas relacionadas:

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

 

03478  - 00001 - 7.0    - 00001  - VINCULAÇÃO LIQ. AUT. / LIQUIDAÇÃO - CÂMBIO PRONTO - ARBITRAGEM

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

VINCULAÇÃO - LIQUIDAÇÃO CAMBIO PRONTO

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

Palavras Chave:

VINCULAÇÃO - LIQUIDAÇÃO CAMBIO PRONTO

 

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

Objetos da nota:

REPS /PWS/MZYCB004F02

REPS /PWS/MZYCB009F07

REPS /PWS/MZYCB009F09

REPS /PWS/MZYCB009TOP

 

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

Modificações efetuadas em REPS /PWS/MZYCB004F02

 

...

    itab_partidas-dtdocto = itab_zycbt226i-dtlancto2.

    CONCATENATE 'Des. OP' itab_zycbt226i-nrseq

                INTO itab_partidas-d_zuonr

                SEPARATED BY space.

    itab_partidas-v_sinal = '-'.

    APPEND itab_partidas.

  ENDLOOP.

  IF sy-subrc = 0.

    CLEAR itab_zycbe033-d_zuonr.

  ENDIF.

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

  IF NOT itab_zycbt006-belnr_d IS INITIAL AND

         itab_zycbt001-TPCONTR EQ 'C'.

    CLEAR itab_zycbe033-d_zuonr.

  ENDIF.

* << Fim da inclusão

  SELECT * FROM /pws/zycbt084 INTO TABLE itab_zycbt084

           WHERE nrseqc = itab_zycbt006-nrseqc.

  LOOP AT itab_zycbt084 WHERE nrseqc   = itab_zycbt006-nrseqc

                          AND nrinvoic = itab_zycbt006-nrinvoic

                          AND gsberf   = itab_zycbt006-gsberf

                          AND nrparcf  = itab_zycbt006-nrparcf

                          AND tdesmemb = 'O'.

    READ TABLE itab_zycbt226i WITH KEY

                                      nrseq = itab_zycbt084-nrseq_ordem.

    IF sy-subrc = 0 AND itab_zycbt226i-belnr_op2 = itab_zycbt084-belnr.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F07

 

...

      MOVE itab_zycbt005 TO wa_zycbt005.

      LOOP AT itab_zycbt030 WHERE nrinvoic = wa_zycbt005-nrinvoic AND

                                  nrparcf  = wa_zycbt005-nrparcf  AND

                                  gsberf   = wa_zycbt005-gsberf.

        itab_zycbt030-v_kwert = ( itab_zycbt030-kwert /

                                  itab_zycbt030-s_kwert ) *

                                wa_zycbt005-vlme_p.

        MODIFY itab_zycbt030.

        PERFORM lanca_cp.

      ENDLOOP.

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

      PERFORM clearing_030.

* << Fim da exclusão

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

      PERFORM desmembra_ace_cp.

      perform clearing_030_cp.

* << Fim da inclusão

      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.

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

  PERFORM clear_date_batch.

...

 

...

        ENDLOOP.

      ENDIF.

    ELSE.

      LOOP AT itab_zycbt034.

        MESSAGE i016 WITH itab_zycbt034-descricao.

      ENDLOOP.

    ENDIF.

  ENDIF.

ENDFORM.

FORM lanca_cp.

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

  DATA: v_vinc_tot(1) TYPE c,

        v_subrc LIKE sy-subrc,

        v_wrbtr LIKE bsid-wrbtr,

        v_kunnr TYPE kunnr,

        v_dtliquid LIKE /pws/zycbt006-dtpagto,

        v_dtemb    LIKE /pws/zycet001-dtemb.

  DATA: BEGIN OF itab_bsid OCCURS 0.

          INCLUDE STRUCTURE bsid.

  DATA: END OF itab_bsid.

  check itab_zycbt034[] is initial.

* << Fim da inclusão

  READ TABLE itab_zycbt017 WITH KEY nrinvoic = wa_zycbt005-nrinvoic

                                    nrparcf  = wa_zycbt005-nrparcf

                                    gsberf   = wa_zycbt005-gsberf.

  PERFORM encontra_documento.

  PERFORM clear_date_batch.

  CONCATENATE wa_zycbt005-nrseqc   wa_zycbt005-tpdesp

              wa_zycbt005-nrparc   wa_zycbt005-dtincl

              wa_zycbt005-nrinvoic wa_zycbt005-gsberf

              wa_zycbt005-dtvincul wa_zycbt005-dtvencto

              wa_zycbt005-nrparcf

...

 

...

                                  text-003.

  itab_zycbe033-budat  = wa_zycbt005-dtvincul.

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

     wa_zycbt007-liq_cp    EQ 'X'.

    MOVE /pws/zycbe006-dtpagto TO itab_zycbe033-budat.

  ENDIF.

  IF wa_zycbt007-fdtdoc = 'D'.

    itab_zycbe033-bldat = sy-datum.

  ELSE.

    itab_zycbe033-bldat = itab_zycbe033-budat.

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

  ENDIF.

  IF NOT wa_zycbt011-agums IS INITIAL.

    itab_zycbe033-agums = wa_zycbt011-agums.

  ENDIF.

  IF itab_zycbt006-ftxt IS INITIAL.

    itab_zycbe033-augtx   = wa_zycbt011-txtdesc.

    itab_zycbe033-d_sgtxt = wa_zycbt011-txtdesc.

  ELSE.

    itab_zycbe033-augtx   = itab_zycbt005-txtinf.

    itab_zycbe033-d_sgtxt = itab_zycbt005-txtinf.

* << Fim da inclusão

  ENDIF.

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

  itab_zycbe033-c_sgtxt = itab_zycbt006-nrinvoic.

  itab_zycbe033-c_zuonr = itab_zycbt030-vbeln.

* << Fim da inclusão

  REFRESH itab_zyglt321.

  SELECT * FROM /pws/zyglt321

           INTO TABLE itab_zyglt321

           WHERE ktosl   = 'CPT'

             AND codeven = v_codeven.

...

 

...

  ENDLOOP.

  itab_zycbe033-bktxt  = wa_zycbt007-bktxt.

  PERFORM verify_null_field USING wa_zycbt005-bukrs

                                  'BUKRS'

                                  text-004.

  itab_zycbe033-bukrs  = wa_zycbt005-bukrs.

  PERFORM verify_null_field USING wa_zycbt005-waers_c

                                  'WAERS'

                                  text-005.

  itab_zycbe033-waers  = wa_zycbt005-waers_c.

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

  CLEAR v_year.

  CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

       EXPORTING

            v_bukrs                = itab_zycbt005-bukrs

            v_date                 = itab_zycbt030-budat

       IMPORTING

            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.

  v_data = itab_zycbt030-budat_t.

  CLEAR: itab_bsid,

         v_wrbtr.

  REFRESH itab_bsid.

  SELECT SUM( wrbtr ) FROM bsid INTO v_wrbtr

         WHERE belnr  = itab_zycbt030-belnr

         AND   gjahr  = v_year

         AND   kunnr  = itab_zycbt005-kunnr

         AND   bukrs  = itab_zycbt005-bukrs.

  CLEAR v_year.

  CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

       EXPORTING

            v_bukrs                = itab_zycbt005-bukrs

            v_date                 = v_data

       IMPORTING

            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.

  SELECT SINGLE budat

    FROM bkpf

    INTO itab_zycbe033-dtdocto

   WHERE bukrs = itab_zycbt005-bukrs

     AND belnr = itab_zycbt030-belnr

     AND gjahr = v_year.

* << Fim da inclusão

  PERFORM verify_null_field USING wa_zycbt011-blart

                                  'BLART'

                                  text-006.

  itab_zycbe033-blart  = wa_zycbt011-blart.

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

  IF wa_zycbt007-liq_trans IS INITIAL.

    itab_zycbe033-agkon = itab_zycbt017-kunag.

  ELSE.

    CLEAR itab_zycbt012_trans.

    READ TABLE itab_zycbt012_trans WITH KEY codeven  = '023'

                                            codmod   = 'E'

                                            chlanc   = 'D'

                                            tpcodaux = 'G'.

    IF sy-subrc EQ 0.

      itab_zycbe033-agkon = itab_zycbt012_trans-codaux.

    ENDIF.

  ENDIF.

* << Fim da exclusão

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

  itab_zycbe033-d_newko = itab_zycbt005-kunnr.

* << Fim da inclusão

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

  CLEAR itab_zycbt012.

  READ TABLE itab_zycbt012 WITH KEY codeven  = v_codeven

                                  codmod   = 'E'

                                  chlanc   = 'D'

                                  tpcodaux = 'G'

                                  codaux   = ''

                                  codaux2  = 'C'.

  itab_zycbe033-d_newko = itab_zycbt012-saknr1.

* << Fim da exclusão

  IF wa_zycbt007-dtliqcp NE 'DTCONTR' AND

     wa_zycbt007-dtliqcp NE 'TXCONTR'.

    itab_zycbe033-kursf = wa_zycbt005-txcamb.

  ELSE.

    itab_zycbe033-kursf = /pws/zycbe001-txcneg.

  ENDIF.

  PERFORM verify_null_field USING itab_zycbe033-kursf

                                  'TXCAMB'

                                  text-080.

  itab_zycbe033-wrbtr   = itab_zycbt030-v_kwert.

  itab_zycbe033-c_gsber = wa_zycbt005-gsberf.

  itab_zycbe033-d_gsber = wa_zycbt005-gsberf.

  itab_zycbe033-agkoa   = 'D'.

  IF itab_zycbt030-flag <> 'X'.

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

    itab_zycbe033-newbs = '40'.

* << Fim da exclusão

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

    itab_zycbe033-newbs = '01'.

* << Fim da inclusão

  ELSE.

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

    itab_zycbe033-newbs = '50'.

* << Fim da exclusão

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

    itab_zycbe033-newbs = '12'.

  ENDIF.

  itab_zycbt036-tcode   = itab_zycbe033-tcode.

  itab_zycbt036-tabela  = itab_zycbe033-tabela.

  itab_zycbt036-cpochv  = itab_zycbe033-cpochv.

  itab_zycbt036-residuo = itab_zycbe033-wrbtr.

  CONCATENATE 'Des.' itab_zycbt005-nrinvoic itab_zycbt005-nrparcf

              INTO itab_zycbt036-zuonr

              SEPARATED BY space.

  APPEND itab_zycbt036.

  itab_doctos-tcode   = itab_zycbe033-tcode.

  itab_doctos-tabela  = itab_zycbe033-tabela.

  itab_doctos-cpochv  = itab_zycbe033-cpochv.

  itab_doctos-belnr   = itab_zycbe033-belnr.

  itab_doctos-dtdocto = itab_zycbe033-dtdocto.

  APPEND itab_doctos.

  IF v_wrbtr = itab_zycbe033-wrbtr OR

    itab_zycbt030-vlsltrans = itab_zycbe033-wrbtr.

    v_vinc_tot = 'X'.

* << Fim da inclusão

  ENDIF.

  itab_zycbe033-belnr     = itab_zycbt030-v_belnr.

  IF NOT /pws/zycbe005-j_1bbranch IS INITIAL.

    PERFORM verifica_pais_filial USING /pws/zycbe005-bukrs

                                       /pws/zycbe005-j_1bbranch.

    itab_zycbe033-brnch = /pws/zycbe005-j_1bbranch.

  ELSE.

    PERFORM local_negocio.

    PERFORM verifica_pais_filial USING /pws/zycbe005-bukrs

                                       wa_t001w-j_1bbranch.

    itab_zycbe033-brnch = wa_t001w-j_1bbranch.

  ENDIF.

  APPEND itab_zycbe033.

  IF itab_zycbt034 IS INITIAL.

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

    CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_30_A'

* << Fim da exclusão

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

    CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_30_P'

* << Fim da inclusão

         EXPORTING

              v_modo          = v_modo_bi

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

              v_vinc_tot      = v_vinc_tot

* << Fim da inclusão

         TABLES

              t_dados         = itab_zycbe033

              t_campo         = itab_zycbt034

              t_zycbt032      = itab_zycbt032

              t_zycbt036      = itab_zycbt036

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

              t_doctos        = itab_doctos

* << Fim da inclusão

         EXCEPTIONS

              campo_em_branco = 1

              OTHERS          = 2.

    IF sy-subrc = 0.

      READ TABLE itab_zycbt032 WITH KEY tcode  = 'F-30'

                                        tabela = '/PWS/ZYCBT006'

                                        cpochv = v_cpochv

                                        tpmsg  = 'S'.

      IF sy-subrc = 0.

        itab_belnr-nrinvoic = wa_zycbt005-nrinvoic.

...

 

...

          itab_zycbt030-budat_t = wa_zycbt005-dtvincul.

          itab_zycbt030-vlslliq = itab_zycbt030-vlslliq -

                                  itab_zycbt030-v_kwert.

        ENDIF.

        MODIFY itab_zycbt030 TRANSPORTING belnr6 budat belnr_t

                                          budat_t vlslliq

               WHERE nrinvoic = itab_zycbt030-nrinvoic

                 AND nrparcf  = itab_zycbt030-nrparcf

                 AND gsberf   = itab_zycbt030-gsberf

                 AND vbeln    = itab_zycbt030-vbeln.

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

        itab_zycbt030-belnr_d = itab_zycbt032-belnr.

* << Fim da inclusão

        itab_contabil-nrinvoic = itab_zycbt030-nrinvoic.

        itab_contabil-nrparcf   = itab_zycbt030-nrparcf.

        itab_contabil-vbeln    = itab_zycbt030-vbeln.

        itab_contabil-gsberf   = itab_zycbt030-gsberf.

        itab_contabil-docto    = itab_zycbt032-belnr.

        itab_contabil-dtdocto  = wa_zycbt005-dtvincul.

        itab_contabil-bukrs    = wa_zycbt005-bukrs.

        itab_contabil-msg      = text-237.

        APPEND itab_contabil.

      ELSE.

...

 

...

  itab_zycbe033-c_prctr = itab_zycbt005-prctr.

  itab_zycbe033-c_fipos = itab_zycbt005-fipos.

  PERFORM verifica_pais_filial USING itab_zycbt006-bukrs

                                     itab_zycbt005-j_1bbranch.

  itab_zycbe033-brnch   = itab_zycbt005-j_1bbranch.

  IF itab_selreg-codp <> 'G'.

    itab_zycbe033-d_kostl = itab_zycbt005-kostl.

    itab_zycbe033-c_kostl = itab_zycbt005-kostl.

  ENDIF.

ENDFORM.

* >> Início da inclusão:

FORM desmembra_ace_cp.

  TABLES: /pws/zycbt074.

  DATA: v_subrc LIKE sy-subrc.

  DATA: v_nrdias TYPE i,

        v_prazo,

        v_banco_d LIKE /pws/zycbt001-bconegoc,

        v_wrbtr   TYPE wrbtr,

        v_wrbtr1  TYPE wrbtr,

        v_shkzg   TYPE shkzg,

        v_data    TYPE datum,

        v_dtliquid LIKE /pws/zycbt006-dtpagto,

        v_dtcontr LIKE  /pws/zycbt001-dtcontr,

        v_codaux  LIKE  /pws/zyglt316-codaux1,

        v_dp      TYPE c VALUE IS INITIAL,

        v_tpcontr LIKE /pws/zycbt016-txtdesc.

  CLEAR   itab_doctos.

  REFRESH itab_doctos.

  check itab_zycbt034[] is initial.

  PERFORM clear_date_batch.

  CLEAR: v_data.

  Select single * From /pws/zycbt001

    into /pws/zycbt001

   where bukrs  = itab_zycbt005-bukrs

     and nrseqc = itab_zycbt005-NRSEQC.

  CONCATENATE '003' itab_zycbt005-tpcontr INTO v_codeven.

  CLEAR itab_zyglt321.

  REFRESH itab_zyglt321.

  SELECT * FROM /pws/zyglt321

           INTO TABLE itab_zyglt321

           WHERE ktosl   = 'CPT'

             AND codeven = v_codeven.

  itab_zycbe033-tcode  = 'F-30'.

  itab_zycbe033-tabela = 'ZYCBT006'.

  CONCATENATE itab_zycbt005-nrseqc

              /pws/zycbe006-dtpagto

              itab_zycbt005-nrinvoic

              itab_zycbt005-dtvincul

              itab_zycbt005-nrparcf

         INTO v_cpochv.

  itab_zycbe033-cpochv = v_cpochv.

  PERFORM verify_null_field USING /pws/zycbe006-dtpagto

                                  'DTPAGTO'

                                  text-003.

  itab_zycbe033-budat = /pws/zycbe006-dtpagto.

  itab_zycbe033-bldat = /pws/zycbe006-dtpagto.

  itab_zycbe033-d_valut = itab_zycbe033-budat.

  READ TABLE itab_zycbt030 WITH KEY nrinvoic = itab_zycbt005-nrinvoic

                                    nrparcf  = itab_zycbt005-nrparcf.

  itab_zycbe033-c_zuonr = itab_zycbt030-vbeln.

  READ TABLE itab_zycbt017 WITH KEY nrinvoic = itab_zycbt005-nrinvoic

                                    gsberf   = itab_zycbt005-gsberf.

  LOOP AT itab_zyglt321.

    CASE itab_zyglt321-cpor3.

      WHEN 'SGTXT'.

        IF itab_zyglt321-cpocb = 'V_TXTINF'.

          itab_zycbe033-d_sgtxt = v_txtinf.

          itab_zycbe033-c_sgtxt = v_txtinf.

          itab_zycbe033-augtx   = v_txtinf.

        ELSEIF itab_zyglt321-cpocb IS INITIAL AND

               itab_zycbt006-ftxt  IS INITIAL AND

           NOT itab_zyglt321-descr IS INITIAL.

          itab_zycbe033-d_sgtxt = itab_zyglt321-descr.

          itab_zycbe033-c_sgtxt = itab_zyglt321-descr.

          itab_zycbe033-augtx   = itab_zyglt321-descr.

        ENDIF.

      WHEN 'XBLNR'.

        IF itab_zyglt321-cpocb = 'NRSEQ' OR

           itab_zyglt321-cpocb = 'NRSEQC'.

          itab_zycbe033-xblnr = /pws/zycbe001-nrseqc.

        ELSEIF itab_zyglt321-cpocb = 'NRCONTR'.

          itab_zycbe033-xblnr = /pws/zycbe001-nrcontr.

        ELSEIF itab_zyglt321-cpocb IS INITIAL AND

           NOT itab_zyglt321-descr IS INITIAL.

          itab_zycbe033-xblnr = itab_zyglt321-descr.

        ENDIF.

      WHEN 'ZFBDT'.

        IF itab_zyglt321-cpocb = 'DTBL'.

          itab_zycbe033-zfbdt = itab_zycbt017-dtbl.

        ELSEIF itab_zyglt321-cpocb = 'DTINCL'.

          SELECT SINGLE dtincl FROM /pws/zycet001

                 INTO itab_zycbe033-zfbdt

                 WHERE nrseq = itab_zycbt005-nrinvoic.

        ELSEIF itab_zyglt321-cpocb = 'DTEMB'.

          SELECT SINGLE dtemb FROM /pws/zycet001

                 INTO itab_zycbe033-zfbdt

                 WHERE nrseq = itab_zycbt005-nrinvoic.

        ELSEIF itab_zyglt321-cpocb = 'DTVENCTO'.

          SELECT SINGLE dtvencto FROM /pws/zycet001

                 INTO itab_zycbe033-zfbdt

                 WHERE nrseq = itab_zycbt030-nrinvoic.

        ELSEIF itab_zyglt321-cpocb = 'DTVINCUL'.

          itab_zycbe033-zfbdt = /pws/zycbe005-dtvincul.

        ENDIF.

      WHEN 'VALUT'.

        IF itab_zyglt321-cpocb = 'DTVENCTO'.

          itab_zycbe033-d_valut = itab_zycbt017-dtvencto.

        ENDIF.

      WHEN 'ZUONR'.

        IF itab_zyglt321-cpocb = 'NRCONTR'.

          itab_zycbe033-d_zuonr = /pws/zycbe001-nrcontr.

        ELSEIF itab_zyglt321-cpocb = 'NRSEQ'.

          itab_zycbe033-d_zuonr = /pws/zycbe001-nrseqc.

        ELSEIF itab_zyglt321-cpocb IS INITIAL AND

               NOT itab_zyglt321-descr IS INITIAL.

          itab_zycbe033-d_zuonr = itab_zyglt321-descr.

        ENDIF.

      WHEN 'ZTERM'.

        IF itab_zyglt321-cpocb = 'ZTERM'.

          itab_zycbe033-zterm = itab_zycbt017-zterm.

        ENDIF.

    ENDCASE.

  ENDLOOP.

  itab_zycbe033-bktxt  = wa_zycbt007-bktxt.

  PERFORM verify_null_field

    USING itab_zycbt005-bukrs 'BUKRS' text-004.

  itab_zycbe033-bukrs = itab_zycbt005-bukrs.

  PERFORM verify_null_field USING itab_zycbt005-waers

                                  'WAERS'

                                  text-005.

  itab_zycbe033-waers  = itab_zycbt005-waers.

  itab_zycbe033-d_gsber = itab_zycbt005-gsber.

  itab_zycbe033-c_gsber = itab_zycbe033-d_gsber.

  CLEAR itab_zycbt012.

  CONCATENATE '003' itab_zycbt005-tpcontr INTO v_codeven.

  CASE itab_zycbt005-tpcontr+0(1).

    WHEN 'A' OR 'E' OR 'C'.

      PERFORM verify_null_field USING itab_zycbt005-bconegoc

                                      'BCONEGOC'

                                      text-001.

      v_banco_d = itab_zycbt005-bconegoc.

    WHEN 'P' OR 'S'.

      PERFORM verify_null_field USING itab_zycbt005-bcofinan

                                      'BCOFINAN'

                                      text-002.

      v_banco_d = itab_zycbt005-bcofinan.

  ENDCASE.

  itab_zycbe033-blart  = wa_zycbt011-blart.

  IF NOT /pws/zycbt017-dtbl IS INITIAL.

    PERFORM define_cambio USING /pws/zycbt017-dtbl

                                itab_zycbt005-waers

                                wa_zycbt007-waersb

                                itab_zycbe033-kursf.

  ENDIF.

  v_nrdias = /pws/zycbe006-dtpagto - itab_zycbt005-dtvincul.

  IF v_nrdias > 360.

    v_prazo = 'L'.

  ELSE.

    v_prazo = 'S'.

  ENDIF.

  IF /pws/zycbe001-desc_receb IS INITIAL.

    CONCATENATE itab_zycbt005-tpcontr v_prazo

      INTO v_codaux SEPARATED BY space.

    CLEAR v_tpcontr.

  ELSE.

    v_codaux = 'DR'.

    CLEAR v_tpcontr.

  ENDIF.

  CALL FUNCTION '/PWS/ZYGL_READ_ACCOUNT_NUMBER'

       EXPORTING

            bukrs           = itab_zycbt005-bukrs

            ktosl           = 'CPT'

            codaux1         = v_codaux

            codaux2         = ' '

       TABLES

            account         = itab_zyglt316

       EXCEPTIONS

            key_not_found   = 1

            rules_not_found = 2

            OTHERS          = 3.

  IF sy-subrc EQ 0.

    READ TABLE itab_zyglt316 INDEX 1.

    IF /pws/zycbe001-desc_receb IS INITIAL.

      itab_zycbe033-d_newko = itab_zyglt316-konth.

    ELSE.

      itab_zycbe033-d_newko = itab_zyglt316-konts.

    ENDIF.

    PERFORM verify_null_field USING itab_zycbe033-d_newko

                                  'SAKNR'

                                  text-010.

  ENDIF.

  itab_zycbe033-newbs = '50'.

  CLEAR v_wrbtr.

  IF /pws/zycbe001-belnr2 IS INITIAL.

    CASE /pws/zycbe001-fdtlanc.

      WHEN 'O'.

        v_data = /pws/zycbe001-dtcontr.

      WHEN 'D'.

        v_data = /pws/zycbe001-dtdesem.

      WHEN OTHERS.

        v_data = /pws/zycbe001-dtcred.

    ENDCASE.

    CLEAR v_year.

    CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

         EXPORTING

              v_bukrs                = /pws/zycbt001-bukrs

              v_date                 = v_data

         IMPORTING

              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.

    SELECT wrbtr shkzg

           FROM bseg

           INTO (v_wrbtr1, v_shkzg)

           WHERE belnr = /pws/zycbe001-belnr       AND

                 bukrs = /pws/zycbt001-bukrs    AND

                 gjahr = v_year                 AND

                 hkont = itab_zycbe033-d_newko  AND

                 augbl = '          '.

      IF v_shkzg EQ 'H'.

        v_wrbtr = v_wrbtr + v_wrbtr1.

      ELSE.

        v_wrbtr = v_wrbtr - v_wrbtr1.

      ENDIF.

    ENDSELECT.

  ENDIF.

  IF itab_zycbe033-d_sgtxt IS INITIAL.

    IF itab_zycbt006-ftxt IS INITIAL.

      itab_zycbe033-augtx   = wa_zycbt011-txtdesc.

      itab_zycbe033-d_sgtxt = wa_zycbt011-txtdesc.

      itab_zycbe033-c_sgtxt = wa_zycbt011-txtdesc.

    ELSE.

      itab_zycbe033-augtx   = itab_zycbt005-txtinf.

      itab_zycbe033-d_sgtxt = itab_zycbt005-txtinf.

      itab_zycbe033-c_sgtxt = itab_zycbt005-txtinf.

    ENDIF.

  ENDIF.

  IF itab_zycbt005-tpcontr(1) CA 'CE' AND

     /pws/zycbe001-desc_receb IS INITIAL.

    IF /pws/zycbe001-belnr2 IS INITIAL.

      CASE /pws/zycbe001-fdtlanc.

        WHEN 'O'.

          v_data = /pws/zycbe001-dtcontr.

        WHEN 'D'.

          v_data = /pws/zycbe001-dtdesem.

        WHEN OTHERS.

          v_data = /pws/zycbe001-dtcred.

      ENDCASE.

      itab_zycbe033-belnr   = /pws/zycbe001-belnr.

      itab_zycbe033-dtdocto = v_data.

    ELSE.

      itab_zycbe033-belnr   = /pws/zycbe001-belnr2.

      SELECT SINGLE * FROM /pws/zycbt074

        WHERE nrseqc = /pws/zycbe001-nrseqc.

      IF NOT /pws/zycbt074-dtcont IS INITIAL.

        itab_zycbe033-dtdocto = /pws/zycbt074-dtcont.

      ELSE.

        itab_zycbe033-dtdocto = itab_zycbt005-dtvincul.

      ENDIF.

    ENDIF.

  ELSE.

    itab_zycbe033-belnr   = itab_zycbt005-belnr.

    itab_zycbe033-dtdocto = itab_zycbt005-dtbelnr.

  ENDIF.

  itab_zycbt036-tcode   = 'F-30'.

  itab_zycbt036-tabela  = 'ZYCBT006'.

  itab_zycbt036-cpochv  = itab_zycbe033-cpochv.

  itab_zycbt036-residuo = itab_zycbt005-vlme_p.

  CONCATENATE 'Des.' itab_zycbt005-nrinvoic itab_zycbt005-nrparcf

              INTO itab_zycbt036-zuonr

              SEPARATED BY space.

  IF /pws/zycbe001-desc_receb IS INITIAL.

    itab_zycbt036-belnr  = itab_zycbe033-belnr.

    CLEAR v_year.

    CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

         EXPORTING

              v_bukrs                = /pws/zycbe001-bukrs

              v_date                 = itab_zycbe033-dtdocto

         IMPORTING

              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.

    SELECT SINGLE * FROM bkpf

         WHERE bukrs = /pws/zycbt001-bukrs

           AND belnr = itab_zycbt036-belnr

           AND gjahr = v_year.

    itab_zycbt036-dtdocto = bkpf-budat.

  ELSE.

    itab_zycbt036-belnr  = /pws/zycbe001-belnr2.

    CLEAR v_year.

    CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

         EXPORTING

              v_bukrs                = /pws/zycbt001-bukrs

              v_date                 = itab_zycbt005-dtbelnr

         IMPORTING

              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.

    SELECT SINGLE * FROM bkpf

         WHERE bukrs = /pws/zycbt001-bukrs

           AND belnr = itab_zycbt036-belnr

           AND gjahr = v_year.

    itab_zycbt036-dtdocto = bkpf-budat.

  ENDIF.

  APPEND itab_zycbt036.

  LOOP AT itab_zycbt069 WHERE nrseqc   = itab_zycbt006-nrseqc

                          AND nrinvoic = itab_zycbt006-nrinvoic

                          AND dtvincul = itab_zycbt006-dtvincul

                          AND gsberf   = itab_zycbt006-gsberf

                          AND nrparcf  = itab_zycbt006-nrparcf.

    itab_doctos-tcode   = 'F-30'.

    itab_doctos-tabela  = 'ZYCBT006'.

    itab_doctos-cpochv  = itab_zycbe033-cpochv.

    IF itab_zycbt069-belnr IS INITIAL.

      itab_doctos-belnr = itab_zycbt069-belnr_vinc.

    ELSE.

      itab_doctos-belnr = itab_zycbt069-belnr.

    ENDIF.

    itab_doctos-dtdocto = itab_zycbt005-dtbelnr.

    CHECK NOT itab_doctos-belnr IS INITIAL.

    COLLECT itab_doctos.

  ENDLOOP.

  IF itab_zycbt005-tpcontr(1) CA 'CE'    AND

     itab_zycbt005-vlme_p     EQ v_wrbtr AND

     itab_zycbt005-slpagar    IS INITIAL AND

     /pws/zycbe001-desc_receb IS INITIAL.

    itab_zycbe033-flag_nc = 'X'.

  ENDIF.

  IF NOT /pws/zycbe005-j_1bbranch IS INITIAL.

    PERFORM verifica_pais_filial USING wa_zycbt005-bukrs

                                       /pws/zycbe005-j_1bbranch.

    itab_zycbe033-brnch = /pws/zycbe005-j_1bbranch.

  ELSE.

    PERFORM local_negocio.

    PERFORM verifica_pais_filial USING wa_zycbt005-bukrs

                                       wa_t001w-j_1bbranch.

    itab_zycbe033-brnch = wa_t001w-j_1bbranch.

  ENDIF.

  itab_zycbe033-werks   = /pws/zycbe005-werks.

  itab_zycbe033-d_fipos = /pws/zycbe005-fipos.

  itab_zycbe033-c_fipos = /pws/zycbe005-fipos.

  APPEND itab_zycbe033.

  LOOP AT itab_zycbt034.

    MESSAGE i016 WITH itab_zycbt034-descricao.

  ENDLOOP.

  IF itab_zycbt034 IS INITIAL.

    CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_30_P'

         EXPORTING

              v_modo          = v_modo_bi

              v_dp            = v_dp

         TABLES

              t_dados         = itab_zycbe033

              t_campo         = itab_zycbt034

              t_zycbt032      = itab_zycbt032

              t_zycbt036      = itab_zycbt036

              t_doctos        = itab_doctos

         EXCEPTIONS

              campo_em_branco = 1

              periodo_fechado = 2

              OTHERS          = 3.

    IF sy-subrc = 0.

      READ TABLE itab_zycbt032 WITH KEY tcode  = 'F-30'

                                        tabela = 'ZYCBT006'

                                        cpochv = itab_zycbe033-cpochv

                                        tpmsg  = 'S'.

      IF sy-subrc EQ 0.

        wa_zycbt005-belnr = itab_zycbt032-belnr.

        LOOP AT itab_zycbt069 WHERE nrseqc   = wa_zycbt005-nrseqc

                                AND nrinvoic = wa_zycbt005-nrinvoic

                                AND dtvincul = wa_zycbt005-dtvincul

                                AND gsberf   = wa_zycbt005-gsberf

                                AND nrparcf  = wa_zycbt005-nrparcf.

          itab_zycbt069-belnr = itab_zycbt032-belnr.

          MODIFY itab_zycbt069.

        ENDLOOP.

        IF wa_zycbt005-tpcontr(1) CA 'CE'.

          /pws/zycbe001-belnr2   = wa_zycbt005-belnr.

          /pws/zycbe001-dtvincul = wa_zycbt005-dtvincul.

        ENDIF.

        itab_contabil-nrinvoic = wa_zycbt005-nrinvoic.

        CLEAR itab_contabil-vbeln.

        itab_contabil-nrparcf  = wa_zycbt005-nrparcf.

        itab_contabil-gsberf   = itab_zycbe033-c_gsber.

        itab_contabil-docto    = itab_zycbt032-belnr.

        itab_contabil-msg      = text-325.

        itab_contabil-dtdocto  = /pws/zycbe006-dtpagto.

        itab_contabil-bukrs    = itab_zycbe033-bukrs.

        APPEND itab_contabil.

        v_subrc = 0.

        CLEAR /pws/zycbt084.

        /pws/zycbt084-nrseqc   = wa_zycbt005-nrseqc.

        /pws/zycbt084-tpdesp   = wa_zycbt005-tpdesp.

        /pws/zycbt084-nrparc   = wa_zycbt005-nrparc.

        /pws/zycbt084-dtincl   = wa_zycbt005-dtincl.

        /pws/zycbt084-nrinvoic = wa_zycbt005-nrinvoic.

        /pws/zycbt084-nrparcf  = wa_zycbt005-nrparcf.

        /pws/zycbt084-gsberf   = wa_zycbt005-gsberf.

        /pws/zycbt084-dtvincul = wa_zycbt005-dtvincul.

        /pws/zycbt084-dtvencto = wa_zycbt005-dtvencto.

        /pws/zycbt084-dtpagto  = /pws/zycbe006-dtpagto.

        /pws/zycbt084-vbeln    = itab_zycbt030-vbeln.

        /pws/zycbt084-belnr    = itab_zycbt032-belnr.

        /pws/zycbt084-liq_and  = space.

        /pws/zycbt084-tdesmemb = 'E'.

        MODIFY /pws/zycbt084 FROM /pws/zycbt084.

      ELSE.

        LOOP AT itab_zycbt032 WHERE tcode  = 'F-30'

                                AND tabela = 'ZYCBT006'

                                AND cpochv = itab_zycbe033-cpochv.

          itab_erro-vbeln = wa_zycbt005-belnr.

          itab_erro-msg   = itab_zycbt032-msg.

          APPEND itab_erro.

        ENDLOOP.

        v_subrc = 4.

      ENDIF.

    ELSE.

      LOOP AT itab_zycbt034.

        MESSAGE i016 WITH itab_zycbt034-descricao.

      ENDLOOP.

      v_subrc = 4.

    ENDIF.

  ELSE.

    v_subrc = 4.

  ENDIF.

  sy-subrc = v_subrc.

ENDFORM.

form clearing_030_cp.

  DATA: v_nrdias    TYPE i,

        v_prazo,

        v_banco_d   LIKE /pws/zycbt001-bconegoc,

        v_belnr_cap LIKE /pws/zycbt006-belnr,

        v_codaux    LIKE /pws/zyglt316-codaux1,

        v_tpcontr   LIKE /pws/zycbt001-tpcontr,

        v_contas_iguais(1) TYPE c,

        v_contador  TYPE n.

  DATA: begin of itab_zycbt074 occurs 0.

          include structure /pws/zycbt074.

  DATA: end of itab_zycbt074.

  DATA: begin of itab_zycbt084 occurs 0.

          include structure /pws/zycbt084.

  DATA: end of itab_zycbt084.

  check itab_zycbt034[] is initial.

  PERFORM clear_date_batch.

  SELECT SINGLE * FROM /pws/zycbt001

  where bukrs  = wa_zycbt005-bukrs

    and nrseqc = wa_zycbt005-nrseqc.

  CONCATENATE '003' wa_zycbt005-tpcontr INTO v_codeven.

  CLEAR: v_data,

         v_codeven.

  CONCATENATE '003' wa_zycbt005-tpcontr INTO v_codeven.

  CLEAR itab_zyglt321.

  REFRESH itab_zyglt321.

  SELECT * FROM /pws/zyglt321

           INTO TABLE itab_zyglt321

           WHERE ktosl   = 'CPT'

             AND codeven = v_codeven.

  itab_zycbe033-tcode  = 'F-30'.

  itab_zycbe033-tabela = 'ZYCBT006'.

  CONCATENATE itab_zycbt005-nrseqc   itab_zycbt005-tpdesp

              itab_zycbt005-nrparc   itab_zycbt005-dtincl

              itab_zycbt005-nrinvoic itab_zycbt005-gsberf

              itab_zycbt005-dtvincul itab_zycbt005-dtvencto

              /pws/zycbe006-dtpagto  itab_zycbt005-nrparcf

         INTO v_cpochv.

  itab_zycbe033-cpochv = v_cpochv.

  PERFORM verify_null_field USING /pws/zycbe006-dtpagto

                                  'DTPAGTO'

                                  text-003.

  itab_zycbe033-budat = /pws/zycbe006-dtpagto.

  itab_zycbe033-bldat = /pws/zycbe006-dtpagext.

  itab_zycbe033-d_zuonr = wa_zycbt011-txtdesc.

  READ TABLE itab_zycbt017 WITH KEY nrinvoic = wa_zycbt005-nrinvoic

                                    nrparcf  = wa_zycbt005-nrparcf

                                    gsberf   = wa_zycbt005-gsberf.

  LOOP AT itab_zyglt321.

    CASE itab_zyglt321-cpor3.

      WHEN 'SGTXT'.

        IF itab_zyglt321-cpocb = 'V_TXTINF'.

          itab_zycbe033-d_sgtxt = v_txtinf.

          itab_zycbe033-augtx   = v_txtinf.

        ELSEIF itab_zyglt321-cpocb IS INITIAL AND

           itab_zycbt006-ftxt IS INITIAL AND

           NOT itab_zyglt321-descr IS INITIAL.

          itab_zycbe033-d_sgtxt = itab_zyglt321-descr.

          itab_zycbe033-augtx   = itab_zyglt321-descr.

        ENDIF.

      WHEN 'XBLNR'.

        IF itab_zyglt321-cpocb = 'NRSEQ' OR

           itab_zyglt321-cpocb = 'NRSEQC'.

          itab_zycbe033-xblnr = /pws/zycbe001-nrseqc.

        ELSEIF itab_zyglt321-cpocb = 'NRCONTR'.

          itab_zycbe033-xblnr = /pws/zycbe001-nrcontr.

        ELSEIF itab_zyglt321-cpocb IS INITIAL AND

               NOT itab_zyglt321-descr IS INITIAL.

          itab_zycbe033-xblnr = itab_zyglt321-descr.

        ENDIF.

      WHEN 'ZFBDT'.

        IF itab_zyglt321-cpocb = 'DTBL'.

          itab_zycbe033-zfbdt = itab_zycbt017-dtbl.

        ELSEIF itab_zyglt321-cpocb = 'DTINCL'.

          SELECT SINGLE dtincl FROM /pws/zycet001

                 INTO itab_zycbe033-zfbdt

                 WHERE nrseq = itab_zycbt005-nrinvoic.

        ELSEIF itab_zyglt321-cpocb = 'DTEMB'.

          SELECT SINGLE dtemb FROM /pws/zycet001

                 INTO itab_zycbe033-zfbdt

                 WHERE nrseq = itab_zycbt005-nrinvoic.

        ELSEIF itab_zyglt321-cpocb = 'DTVENCTO'.

          SELECT SINGLE dtvencto FROM /pws/zycet001

                 INTO itab_zycbe033-zfbdt

                 WHERE nrseq = itab_zycbt030-nrinvoic.

        ELSEIF itab_zyglt321-cpocb = 'DTVINCUL'.

          itab_zycbe033-zfbdt = wa_zycbt005-dtvincul.

        ENDIF.

      WHEN 'VALUT'.

        IF itab_zyglt321-cpocb = 'DTVENCTO'.

          itab_zycbe033-d_valut = itab_zycbt017-dtvencto.

        ENDIF.

      WHEN 'ZUONR'.

        IF itab_zyglt321-cpocb = 'NRCONTR'.

          itab_zycbe033-d_zuonr = /pws/zycbe001-nrcontr.

        ELSEIF itab_zyglt321-cpocb = 'NRSEQ'.

          itab_zycbe033-d_zuonr = /pws/zycbe001-nrseqc.

        ELSEIF itab_zyglt321-cpocb IS INITIAL AND

               NOT itab_zyglt321-descr IS INITIAL.

          itab_zycbe033-d_zuonr = itab_zyglt321-descr.

        ENDIF.

      WHEN 'ZTERM'.

        IF itab_zyglt321-cpocb = 'ZTERM'.

          itab_zycbe033-zterm = itab_zycbt017-zterm.

        ENDIF.

    ENDCASE.

  ENDLOOP.

  PERFORM get_parameters_003.

  itab_zycbe033-d_gsber = wa_zycbt005-gsberf.

  SELECT SINGLE dtemb kurrf_bl viatrans dtaverb dtcruze nrseq

  FROM /pws/zycet001

  INTO (v_dtemb, v_kurrf_bl, v_viatrans, v_dtaverb2, v_dtcruze,

        v_nrseq)

  WHERE nrseq EQ wa_zycbt005-nrinvoic.

  IF wa_zycbt007-dtliqcp EQ 'DTCONTR' AND

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

    itab_zycbe033-kursf = /pws/zycbe001-txcneg.

  ELSEIF wa_zycbt007-dtliqcp EQ 'TXCONTR' AND

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

    itab_zycbe033-kursf = /pws/zycbe001-txcneg.

  ELSE.

    IF NOT itab_zycbt017-dtbl IS INITIAL.

      PERFORM define_cambio USING itab_zycbt017-dtbl

                                  wa_zycbt005-waers

                                  wa_zycbt007-waersb

                                  itab_zycbe033-kursf.

    ENDIF.

  ENDIF.

  IF wa_zycbt007-dtliquid EQ 'VIATRANS' AND

     itab_zycbe033-kursf IS INITIAL.

    MESSAGE i061 WITH text-215 wa_zycbt005-nrinvoic text-216 text-217.

    PERFORM verify_null_field USING itab_zycbe033-kursf

                                    'KURSF'

                                    text-051.

  ENDIF.

  itab_zycbe033-agkoa = 'D'.

  itab_zycbe033-agkon = wa_zycbt005-kunnr.

  IF itab_zycbe033-d_sgtxt IS INITIAL.

    IF wa_zycbt005-ftxt IS INITIAL.

      itab_zycbe033-augtx   = wa_zycbt011-txtdesc.

      itab_zycbe033-d_sgtxt = wa_zycbt011-txtdesc.

    ELSE.

      itab_zycbe033-augtx   = wa_zycbt005-txtinf.

      itab_zycbe033-d_sgtxt = wa_zycbt005-txtinf.

    ENDIF.

  ENDIF.

  CLEAR itab_zycbt012.

  CASE wa_zycbt005-tpcontr+0(1).

    WHEN 'A' OR 'E' OR 'C'.

      PERFORM verify_null_field USING wa_zycbt005-bconegoc

                                      'BCONEGOC'

                                      text-001.

      v_banco_d = wa_zycbt005-bconegoc.

    WHEN 'P' OR 'S'.

      PERFORM verify_null_field USING wa_zycbt005-bcofinan

                                      'BCOFINAN'

                                      text-002.

      v_banco_d = wa_zycbt005-bcofinan.

  ENDCASE.

  v_nrdias = /pws/zycbe006-dtpagto - wa_zycbt005-dtvincul.

  IF v_nrdias > 360.

    v_prazo = 'L'.

  ELSE.

    v_prazo = 'S'.

  ENDIF.

  IF /pws/zycbe001-desc_receb IS INITIAL.

    IF /pws/zycbt001-tpcontr(01) NE 'E'.

      CONCATENATE 'E' v_prazo

          INTO v_codaux SEPARATED BY space .

      v_tpcontr = /pws/zycbt001-tpcontr.

    ELSE.

      CONCATENATE /pws/zycbt001-tpcontr v_prazo

          INTO v_codaux SEPARATED BY space .

      CLEAR v_tpcontr.

    ENDIF.

  ELSE.

    v_codaux = 'DR'.

    CLEAR v_tpcontr.

  ENDIF.

  CALL FUNCTION '/PWS/ZYGL_READ_ACCOUNT_NUMBER'

       EXPORTING

            bukrs           = /pws/zycbt001-bukrs

            ktosl           = 'CPT'

            codaux1         = v_codaux

            codaux2         = v_tpcontr

       TABLES

            account         = itab_zyglt316

       EXCEPTIONS

            key_not_found   = 1

            rules_not_found = 2

            OTHERS          = 3.

  IF sy-subrc EQ 0.

    READ TABLE itab_zyglt316 INDEX 1.

    IF /pws/zycbe001-desc_receb IS INITIAL.

      itab_zycbe033-d_newko = itab_zyglt316-konth.

    ELSE.

      itab_zycbe033-d_newko = itab_zyglt316-konts.

    ENDIF.

    PERFORM verify_null_field USING itab_zycbe033-d_newko

                                  'SAKNR'

                                  text-010.

  ENDIF.

  itab_zycbe033-koart = 'S'.

  if /pws/zycbe001-belnr2 is initial.

    itab_zycbe033-belnr   = wa_zycbt005-belnr.

  else.

    itab_zycbe033-belnr   = /pws/zycbe001-belnr2.

  endif.

  IF NOT wa_zycbt005-tpcontr(1) CA 'CEPS' AND

         wa_zycbt005-slpagar    IS INITIAL.

    itab_zycbe033-dtdocto = wa_zycbt005-dtbelnr.

  ELSE.

    itab_zycbe033-dtdocto = /pws/zycbe006-dtpagto.

  ENDIF.

  IF  wa_zycbt005-slpagar IS INITIAL.

    itab_zycbe033-flag_nc = 'X'.

  ENDIF.

  IF wa_zycbt005-tpcontr(1) CA 'PS'.

    READ TABLE itab_zycbt069 WITH KEY nrseqc   = itab_zycbt006-nrseqc

                                      nrinvoic = itab_zycbt006-nrinvoic

                                      dtvincul = itab_zycbt006-dtvincul

                                      gsberf   = itab_zycbt006-gsberf

                                      nrparcf  = itab_zycbt006-nrparcf.

    IF sy-subrc EQ 0.

      v_belnr_cap   = itab_zycbt069-belnr.

    ENDIF.

  ELSE.

    IF wa_zycbt005-tpcontr(1) CA 'CE'.

      IF /pws/zycbe001-belnr2 IS INITIAL.

        CASE /pws/zycbe001-fdtlanc.

          WHEN 'O'.

            v_data = /pws/zycbe001-dtcontr.

          WHEN 'D'.

            v_data = /pws/zycbe001-dtdesem.

          WHEN OTHERS.

            v_data = /pws/zycbe001-dtcred.

        ENDCASE.

        v_belnr_cap   = /pws/zycbe001-belnr.

      ELSE.

        v_belnr_cap   = /pws/zycbe001-belnr2.

        IF NOT /pws/zycbt074-dtcont IS INITIAL.

          itab_zycbe033-dtdocto = /pws/zycbt074-dtcont.

        ENDIF.

      ENDIF.

    ELSE.

      v_belnr_cap   = wa_zycbt005-belnr.

    ENDIF.

  ENDIF.

  LOOP AT itab_zycbt030 WHERE nrinvoic = wa_zycbt005-nrinvoic AND

                              gsberf   = wa_zycbt005-gsberf   AND

                              nrparcf  = wa_zycbt005-nrparcf.

    CHECK NOT itab_zycbt030-belnr6 IS INITIAL.

    itab_partidas-tcode   = 'F-30'.

    itab_partidas-tabela  = 'ZYCBT006'.

    itab_partidas-cpochv  = itab_zycbe033-cpochv.

    itab_partidas-belnr   = itab_zycbt030-belnr6.

    itab_partidas-agkon   = itab_zycbe033-agkon.

    itab_partidas-agkoa   = itab_zycbe033-agkoa.

    itab_partidas-agums   = space.

    itab_partidas-bukrs   = wa_zycbt005-bukrs.

    itab_partidas-shkzg   = 'H'.

    itab_partidas-v_sinal = '+'.

      IF NOT /pws/zycbt074-dtcont IS INITIAL.

        itab_partidas-dtdocto = /pws/zycbt074-dtcont.

      ELSE.

        itab_partidas-dtdocto = /pws/zycbe006-dtpagto.

      ENDIF.

      CONCATENATE 'Des.'

                  wa_zycbt005-nrinvoic

                  wa_zycbt005-nrparcf

                  INTO itab_partidas-d_zuonr

                  SEPARATED BY space.

      itab_partidas-v_sinal = '-'.

    APPEND itab_partidas.

  ENDLOOP.

  LOOP AT itab_zycbt209 WHERE nrinvoic = wa_zycbt005-nrinvoic AND

                              gsberf   = wa_zycbt005-gsberf   AND

                              nrparcf  = wa_zycbt005-nrparcf  AND

                              baixa    = 'X'.

    itab_partidas-tcode   = 'F-30'.

    itab_partidas-tabela  = 'ZYCBT006'.

    itab_partidas-cpochv  = itab_zycbe033-cpochv.

    itab_partidas-belnr   = itab_zycbt209-belnr_d.

    itab_partidas-dtdocto = itab_zycbt209-budat_d.

    itab_partidas-agkon   = itab_zycbt209-hkont.

    itab_partidas-agkoa   = itab_zycbt209-koart.

    itab_partidas-agums   = itab_zycbt209-umskz.

    itab_partidas-bukrs   = itab_zycbt209-bukrs.

    itab_partidas-shkzg   = 'H'.

    v_contador            = v_contador + 1.

    IF itab_zycbt209-vlbaixa EQ itab_zycbt209-saldo.

      CLEAR v_year.

      CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

           EXPORTING

                v_bukrs                = itab_zycbt209-bukrs

                v_date                 = itab_zycbt209-budat_d

           IMPORTING

                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.

      SELECT SINGLE zuonr

             FROM bseg

             INTO itab_partidas-d_zuonr

             WHERE bukrs = itab_zycbt209-bukrs      AND

                   belnr = itab_zycbt209-belnr_d    AND

                   gjahr = v_year AND

                   augbl = space                    AND

                   koart = itab_zycbt209-koart      AND

                   buzei <= 2.

      itab_partidas-v_sinal = '+'.

    ELSE.

      CONCATENATE 'Des.'

                  wa_zycbt005-nrinvoic

                  wa_zycbt005-nrparcf

                  INTO itab_partidas-d_zuonr

                  SEPARATED BY space.

      itab_partidas-v_sinal = '-'.

    ENDIF.

    APPEND itab_partidas.

  ENDLOOP.

  LOOP AT itab_zycbt219 WHERE nrinvoic = wa_zycbt005-nrinvoic AND

                              gsberf   = wa_zycbt005-gsberf   AND

                              nrparcf  = wa_zycbt005-nrparcf  AND

                              baixa    = 'X'.

    itab_partidas-tcode   = 'F-30'.

    itab_partidas-tabela  = 'ZYCBT006'.

    itab_partidas-cpochv  = itab_zycbe033-cpochv.

    itab_partidas-belnr   = itab_zycbt219-belnr_d.

    itab_partidas-dtdocto = itab_zycbt219-budat_d.

    itab_partidas-agkon   = itab_zycbt219-kunnr.

    itab_partidas-agkoa   = itab_zycbt219-koart.

    itab_partidas-agums   = itab_zycbt219-umskz.

    itab_partidas-bukrs   = itab_zycbt219-bukrs.

    itab_partidas-shkzg   = 'H'.

    IF itab_zycbt219-vlbaixa EQ itab_zycbt219-saldo.

      CLEAR v_year.

      CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

           EXPORTING

                v_bukrs                = itab_zycbt219-bukrs

                v_date                 = itab_zycbt219-budat_d

           IMPORTING

                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.

      SELECT SINGLE zuonr

             FROM bseg

             INTO itab_partidas-d_zuonr

             WHERE bukrs = itab_zycbt219-bukrs      AND

                   belnr = itab_zycbt219-belnr_d    AND

                   gjahr = v_year AND

                   augbl = space                    AND

                   koart = itab_zycbt219-koart      AND

                   buzei <= 2.

      itab_partidas-v_sinal = '+'.

    ELSE.

      CONCATENATE 'Des.'

                  wa_zycbt005-nrinvoic

                  wa_zycbt005-nrparcf

                  INTO itab_partidas-d_zuonr

                  SEPARATED BY space.

      itab_partidas-v_sinal = '-'.

    ENDIF.

    APPEND itab_partidas.

  ENDLOOP.

  IF /pws/zycbe001-desc_receb IS INITIAL.

    itab_partidas-tcode   = 'F-30'.

    itab_partidas-tabela  = 'ZYCBT006'.

    itab_partidas-cpochv  = itab_zycbe033-cpochv.

    itab_partidas-belnr   = wa_zycbt005-belnr.

    itab_partidas-agkon   = itab_zycbe033-d_newko.

    itab_partidas-agkoa   = itab_zycbe033-koart.

    itab_partidas-agums   = space.

    itab_partidas-bukrs   = itab_zycbe033-bukrs.

    itab_partidas-shkzg   = 'S'.

    v_gjahr = itab_zycbe033-dtdocto(4).

    LOOP AT itab_zycbt209 WHERE nrinvoic = wa_zycbt005-nrinvoic

                          AND   gsberf   = wa_zycbt005-gsberf

                          AND   nrparcf  = wa_zycbt005-nrparcf

                          AND   baixa    = 'X'.

      IF itab_zycbt209-hkont EQ itab_zycbe033-d_newko.

        v_contas_iguais = 'X'.

        EXIT.

      ELSE.

        CLEAR v_contas_iguais.

        EXIT.

      ENDIF.

    ENDLOOP.

    CLEAR v_year.

    CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

         EXPORTING

              v_bukrs                = wa_zycbt005-bukrs

              v_date                 = itab_zycbe033-dtdocto

         IMPORTING

              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.

    SELECT SINGLE budat FROM bkpf

         INTO itab_partidas-dtdocto

         WHERE bukrs = wa_zycbt005-bukrs

           AND belnr = wa_zycbt005-belnr

           AND gjahr = v_year.

      CONCATENATE 'Des.'

                  wa_zycbt005-nrinvoic

                  wa_zycbt005-nrparcf

                  INTO itab_partidas-d_zuonr

                  SEPARATED BY space.

      itab_partidas-v_sinal = '-'.

    APPEND itab_partidas.

  ENDIF.

  CONCATENATE 'Des.' wa_zycbt005-nrinvoic wa_zycbt005-nrparcf

              INTO itab_zycbe033-c_zuonr

              SEPARATED BY space.

  IF NOT wa_zycbt005-j_1bbranch IS INITIAL.

    PERFORM verifica_pais_filial USING wa_zycbt005-bukrs

                                       wa_zycbt005-j_1bbranch.

    itab_zycbe033-brnch = wa_zycbt005-j_1bbranch.

  ELSE.

    PERFORM local_negocio.

    PERFORM verifica_pais_filial USING wa_zycbt005-bukrs

                                       wa_t001w-j_1bbranch.

    itab_zycbe033-brnch = wa_t001w-j_1bbranch.

  ENDIF.

  CLEAR itab_zycbe033-d_zuonr.

  SELECT * FROM /pws/zycbt084 INTO TABLE itab_zycbt084

           WHERE nrseqc = wa_zycbt005-nrseqc.

  LOOP AT itab_zycbt084 WHERE nrseqc   = wa_zycbt005-nrseqc

                          AND nrinvoic = wa_zycbt005-nrinvoic

                          AND gsberf   = wa_zycbt005-gsberf

                          AND nrparcf  = wa_zycbt005-nrparcf

                          AND tdesmemb = 'O'.

    itab_partidas-tcode   = 'F-30'.

    itab_partidas-tabela  = 'ZYCBT006'.

    itab_partidas-cpochv  = itab_zycbe033-cpochv.

    itab_partidas-belnr   = itab_zycbt084-belnr.

    itab_partidas-agkon   = itab_zycbe033-d_newko.

    itab_partidas-agkoa   = itab_zycbe033-koart.

    itab_partidas-agums   = space.

    itab_partidas-bukrs   = itab_zycbe033-bukrs.

    itab_partidas-shkzg   = 'S'.

    itab_partidas-dtdocto = itab_zycbt084-dtincl.

    CONCATENATE 'Des. OP' wa_zycbt005-nrseqc

                INTO itab_partidas-d_zuonr

                SEPARATED BY space.

    itab_partidas-v_sinal = '-'.

    APPEND itab_partidas.

  ENDLOOP.

  itab_zycbe033-werks = wa_zycbt005-werks.

  APPEND itab_zycbe033.

  IF sy-subrc EQ 0.

    SORT itab_partidas BY agkoa agkon agums belnr.

  ENDIF.

  LOOP AT itab_zycbt034.

    MESSAGE i016 WITH itab_zycbt034-descricao.

  ENDLOOP.

  IF itab_zycbt034 IS INITIAL.

      CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_30_W'

           EXPORTING

                v_modo          = v_modo_bi

                v_vinc_tot      = 'X'

                v_desc_rec      = /pws/zycbe001-desc_receb

                v_contasi       = v_contas_iguais

                v_liqop         = 'X'

           TABLES

                t_dados         = itab_zycbe033

                t_campo         = itab_zycbt034

                t_zycbt032      = itab_zycbt032

                t_partidas      = itab_partidas

           EXCEPTIONS

                campo_em_branco = 1

                periodo_fechado = 2

                OTHERS          = 3.

    IF sy-subrc = 0.

      READ TABLE itab_zycbt032 WITH KEY tcode  = 'F-30'

                                        tabela = 'ZYCBT006'

                                        cpochv = itab_zycbe033-cpochv

                                        tpmsg  = 'S'.

      IF sy-subrc EQ 0.

        v_cp_ok = 'X'.

        wa_zycbt005-status = 'C'.

        wa_zycbt005-dtbelnr = itab_zycbe033-budat.

        wa_zycbt005-belnr   = itab_zycbt032-belnr.

        wa_zycbt005-slpagar = 0.

        itab_contabil-nrinvoic = wa_zycbt005-nrinvoic.

        itab_contabil-nrparcf  = wa_zycbt005-nrparcf.

        CLEAR itab_contabil-vbeln.

        itab_contabil-gsberf   = wa_zycbt005-gsberf.

        itab_contabil-docto    = itab_zycbt032-belnr.

        itab_contabil-msg      = text-295.

        CLEAR /pws/zycbt084.

        READ TABLE itab_zycbt074 WITH KEY nrseqc = wa_zycbt005-nrseqc.

        IF sy-subrc EQ 0.

          IF itab_zycbt074-dtcont IS INITIAL OR

             itab_zycbt074-dtcont EQ '00000000'.

            itab_contabil-dtdocto  = /pws/zycbe006-dtpagto.

          ELSE.

            itab_contabil-dtdocto  = itab_zycbt074-dtcont.

          ENDIF.

        ENDIF.

        itab_contabil-bukrs    = wa_zycbt005-bukrs.

        APPEND itab_contabil.

        v_subrc = 0.

      ELSE.

        LOOP AT itab_zycbt032 WHERE tcode  = 'F-30'

                                AND tabela = 'ZYCBT006'

                                AND cpochv = v_cpochv.

          CLEAR itab_erro-vbeln.

          itab_erro-msg   = itab_zycbt032-msg.

          APPEND itab_erro.

        ENDLOOP.

        v_subrc = 4.

      ENDIF.

    ELSE.

      LOOP AT itab_zycbt034.

        MESSAGE i016 WITH itab_zycbt034-descricao.

      ENDLOOP.

      v_subrc = 4.

    ENDIF.

  ELSE.

    v_subrc = 4.

  ENDIF.

  sy-subrc = v_subrc.

endform.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F09

 

...

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

        wa_zycbt007-liq_cp IS INITIAL.

      EXIT.

    ENDIF.

    DESCRIBE TABLE itab_zycbt005 LINES v_line.

    IF  ( v_doc_f30 EQ 'X'             AND

          v_f30_vinc GE v_line )       OR

        ( NOT v_ind_delecao IS INITIAL AND

          v_doc_f30 EQ 'X' )           OR

        ( v_doc_f30 EQ 'E'             AND

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

          /pws/zycbe001-tpcontr(01) = 'P' ).

* << Fim da exclusão

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

          /pws/zycbe001-tpcontr(01) = 'P' )

        OR ( v_cp_ok EQ 'X'

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

.

* << Fim da inclusão

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

      /pws/zycbe001-belnr2   = v_belnr_001.

      /pws/zycbe001-dtvincul = v_dtdocto.

      IF v_doc_f30 NE 'E'          .

        MODIFY /pws/zycbt001 FROM /pws/zycbe001.

      ENDIF.

      DELETE itab_zycbt005 WHERE nrinvoic EQ ' '.

      DELETE itab_zycbt006 WHERE status   EQ 'E'.

      DELETE itab_zycbt005 WHERE vlvinc EQ ' '.

      LOOP AT itab_zycbt005.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009TOP

 

...

      v_sldesc   LIKE /pws/zycbt005-vlme_p,

      v_repid       LIKE sy-repid VALUE '/PWS/SAPMZYCB009',

      v_codmod      TYPE c VALUE 'E',

      v_exit321     LIKE /pws/zyglt100-zexit VALUE 'VIN001'.

DATA: v_dtpagext TYPE c,

      v_dtpagtoc TYPE c.

DATA  v_vinculacao(1) TYPE c.

DATA: v_excep        TYPE c,

      v_belnr6       LIKE /pws/zycbt030-belnr,

      v_kursf6       LIKE bkpf-kursf,

* >> Início da exclusão:

      v_erro_estorno TYPE c.

* << Fim da exclusão

* >> Início da inclusão:

      v_erro_estorno TYPE c,

      v_cp_ok        TYPE c.

* << Fim da inclusão

DATA: wa_cols TYPE cxtab_column.

DATA:

  wa_zycbe050             LIKE /pws/zycbe050,

  wa_zycbe050_classifcont LIKE /pws/zycbe050,

  wa_zycbe050_objres      LIKE /pws/zycbe050,

  wa_zycbt051_sbu         LIKE /pws/zycbt051,

  wa_zycbe051_aux         LIKE /pws/zycbe051,

  wa_zycbe005_aux         LIKE /pws/zycbe005,

  wa_log            TYPE char4000,

  wa_zycbt005_log   LIKE /pws/zycbt005,

...