CE PLUS - Nota 010833

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Relatórios

Data/Hora da Publicação: 15/12/2010 00:00:00

Data/Hora Última Alteração: 18/02/2011 16:01:42

Descrição da Nota: RELATÓRIO DE CONTRATOS - ERRO SALDO A PAGAR

Sintoma

Ao executar o relatório de contratos, o mesmo não esta considerando uma liquidação no Saldo a Pagar.

A mesma é menor que a Data Posição em, do critério de seleção, portanto deveria considerar.

 

 

Solução

Incluir o campo DTPAGEXT na tabela interna de liquidações, para que considere todas e imprima o

saldo a pagar corretamente.

Reestruturar o perform processa_dados retirando duplicidade de execução.

 

Versões Tratadas

8.0


Pré-Requisitos

Produto:

Nota

Descrição

INCLUSÃO DE AUTHORITY CHECK EM PROGRAMAS E RELATÓRIOS.

RELATÓRIO DE CONTRATOS SALDO A PAGAR E SALDO A VINCULAR

RELATÓRIO DE CONTRATOS - VALOR A VINCULAR

RELATÓRIO DE CONTRATOS

RELATÓRIO DE CONTRATOS - NOVAS COLUNAS VALOR/PERCENTUAL COMISSÃO

RELATÓRIO DE CONTRATOS - AJUSTES PERFORMANCE

RELATÓRIO - CONTRATOS - VALORES A VINCULAR E PAGAR INCORRETOS

RELATÓRIO DE CONTRATOS - SALDO A VINCULAR PREENCHIDO PARA DP POR C/C ME

RELATÓRIO DE CONTRATOS - ATUALIZAÇÃO DE CAMPO SALDO Á PAGAR

EXPORTAÇÃO RELATÓRIO DE CONTRATOS

PERFORMANCE NO RELATÓRIO DE CONTRATOS

VERIFICAÇÃO AMPLIADA, CODE INSPECTOR - CB

RELATATÓRIO CONTRATO EXPORT.SALDO A VINCULAR,SALDO A PAGAR,DATA PAGTO

REL. CONTRATOS - CONTRATOS ENCERRADOS

RELATÓRIO DE CONTRATOS - NÃO ESTÁ SENDO RESPEITADO O CAMPO POSIÇÃO EM

Informações Complementares

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

Nota Número 10833 Data: 15/12/2010 Hora: 10:21:29

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

 

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

Nota Número              : 10833

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 8.0

Pacote                   : 00006

Agrupamento              : 00052

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

Referência às notas relacionadas:

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

 

02366  - 00001 - 6.0    - 00025  - RELATÓRIO DE CONTRATOS - NÃO ESTÁ SENDO RESPEITADO O CAMPO POSIÇÃ

03116  - 00002 - 6.0    - 00026  - RELATÓRIO DE CONTRATOS - ATUALIZAÇÃO DE CAMPO SALDO Á PAGAR

04385  - 00003 - 7.0    - 00002  - PERFORMANCE NO RELATÓRIO DE CONTRATOS

04495  - 00004 - 7.0    - 00002  - RELATÓRIO DE CONTRATOS - AJUSTES PERFORMANCE

04558  - 00005 - 7.0    - 00002  - EXPORTAÇÃO RELATÓRIO DE CONTRATOS

04818  - 00006 - 7.0    - 00003  - RELATÓRIO DE CONTRATOS - VALOR A VINCULAR

04857  - 00007 - 7.0    - 00003  - RELATÓRIO DE CONTRATOS

05626  - 00008 - 7.0    - 00004  - VERIFICAÇÃO AMPLIADA, CODE INSPECTOR - CB

05877  - 00009 - 7.0    - 00004  - RELATÓRIO DE CONTRATOS - NOVAS COLUNAS VALOR/PERCENTUAL COMISSÃO

06498  - 00010 - 7.0    - 00005  - REL. CONTRATOS - CONTRATOS ENCERRADOS

06858  - 00011 - 7.0    - 00006  - INCLUSÃO DE AUTHORITY CHECK EM PROGRAMAS E RELATÓRIOS.

07934  - 00012 - 7.0    - 00008  - RELATÓRIO DE CONTRATOS - SALDO A VINCULAR PREENCHIDO PARA DP POR

09191  - 00013 - 8.0    - 00001  - RELATÓRIO - CONTRATOS - VALORES A VINCULAR E PAGAR INCORRETOS

10237  - 00014 - 8.0    - 00003  - RELATATÓRIO CONTRATO EXPORT.SALDO A VINCULAR,SALDO A PAGAR,DATA P

10475  - 00015 - 8.0    - 00004  - RELATÓRIO DE CONTRATOS SALDO A PAGAR E SALDO A VINCULAR

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

RELATÓRIO DE CONTRATOS - ERRO SALDO A PAGAR

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

Palavras Chave:

RELATÓRIO DE CONTRATOS - ERRO SALDO A PAGAR

 

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

Objetos da nota:

REPS /PWS/ZYCBR010

 

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

Modificações efetuadas em REPS /PWS/ZYCBR010

 

...

        waers    LIKE /pws/zycbt005-waers,

        parid    LIKE /pws/zycbt005-parid,

        nrparc   LIKE /pws/zycbt005-nrparc,

        dtincl   LIKE /pws/zycbt005-dtincl,

        dtvencto LIKE /pws/zycbt005-dtvencto,

        vlme_p   LIKE /pws/zycbt005-vlme_p,

      END OF itab_zycbt005,

      BEGIN OF itab_zycbt006 OCCURS 100,

        nrseqc  LIKE /pws/zycbt006-nrseqc,

        dtpagto LIKE /pws/zycbt006-dtpagto,

* >> Início da inclusão:

        dtpagext TYPE /pws/zycbt006-dtpagext,

* << Fim da inclusão

        nrcontr LIKE /pws/zycbt006-nrcontr,

        vlme    LIKE /pws/zycbt006-vlme,

        status  LIKE /pws/zycbt006-status,

        nrinvoic LIKE /pws/zycbt006-nrinvoic,

        nrparcf  LIKE /pws/zycbt006-nrparcf,

        gsberf   LIKE /pws/zycbt006-gsberf,

        tpdesp   LIKE /pws/zycbt006-tpdesp,

        nrparc   LIKE /pws/zycbt006-nrparc,

        dtincl   LIKE /pws/zycbt006-dtincl,

        dtvincul LIKE /pws/zycbt006-dtvincul,

...

 

...

    PERFORM cabec.

  ENDIF.

END-OF-PAGE.

  IF v_impr NE 'X'.

    ULINE AT /sy-linsz.

  ELSE.

    ULINE AT /(v_tamr).

  ENDIF.

START-OF-SELECTION.

  PERFORM get_parametros.

* >> Início da exclusão:

  PERFORM processar_dados.

* << Fim da exclusão

* >> Início da inclusão:

  PERFORM processar_dados2.

* << Fim da inclusão

  v_repid = sy-repid.

  PERFORM e04_comment_build  USING gt_list_top_of_page[].

  PERFORM f_monta_final.

  PERFORM f_fieldcat_fill.

  IF itab_relat[] IS INITIAL.

    MESSAGE i222.

  ELSE.

    PERFORM imprime_relatorio_alv.

  ENDIF.

END-OF-SELECTION.

...

 

...

            v_top_of_page  = 'TOP_OF_PAGE'

            v_variant      = g_variant

            v_marc         = ' '

            v_selinfo      = 'X'

            v_zebra        = p_zebra

            v_otimizado    = p_otim

       TABLES

            i_fieldcat     = i_fieldcat

            t_data         = i_final.

ENDFORM.

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

FORM processar_dados.

  DATA: BEGIN OF itab_zycbt003 OCCURS 5.

          INCLUDE STRUCTURE /pws/zycbt003.

  DATA: END OF itab_zycbt003.

  DATA:

    v_type       TYPE tcurr-kurst.

  DATA:

    v_saldo_vincular  TYPE  /pws/zycbt001-slvinc,

    v_saldo_pagar     TYPE  /pws/zycbt001-slpagar.

  REFRESH: itab_zycbt001,

           itab_zycbt002,

           itab_relat,

           itab_relat2.

  PERFORM verifica_parametros.

  SELECT nrseqc  nrcontr bukrs   tpcontr  bconegoc bcofinan fdtlanc

         dtcontr dtcred  dtdesem dtentr   dtliquid waers    vlme

         vlcanc  slvinc  slpagar

         tp_pagt_antc

    FROM /pws/zycbt001

    INTO TABLE itab_zycbt001

    WHERE nrseqc   IN nrseqc

      AND nrcontr  IN nrcontr

      AND tpcontr  IN tpcontr

      AND bukrs    IN bukrs

      AND dtcontr  IN dtcontr

      AND bcofinan IN bcofinan

      AND bconegoc IN bconegoc

      AND dtcred   IN dtcred

      AND dtdesem  IN dtdesem

      AND f_encerrado NE 'X'

      AND f_encerrado NE 'E'

      AND dtentr   IN dtentr.

  SORT itab_zycbt001 BY nrseqc.

  IF NOT itab_zycbt001[] IS INITIAL.

    SELECT nrseqc perc_comis perc_comis_flat fpagto_comis

      FROM /pws/zycbt074

      INTO TABLE itab_zycbt074

      FOR ALL ENTRIES IN itab_zycbt001

      WHERE nrseqc = itab_zycbt001-nrseqc.

    SELECT *

           FROM /pws/zycbt003

           INTO TABLE itab_zycbt003

           FOR ALL ENTRIES IN itab_zycbt001

           WHERE nrseqc = itab_zycbt001-nrseqc AND

                 tppror = 'E'.

    SORT itab_zycbt003 BY nrseqc tppror dtpror.

    IF s_posic IS INITIAL.

      s_posic = sy-datum.

    ENDIF.

    IF s_flag IS INITIAL.

      s_flag = 'O'.

    ENDIF.

    CASE s_flag.

      WHEN 'D'.

        DELETE itab_zycbt001 WHERE dtdesem > s_posic

                                OR dtdesem IS initial.

      WHEN 'O'.

        DELETE itab_zycbt001 WHERE dtcontr > s_posic

                                OR dtcontr IS initial.

      WHEN 'C'.

        DELETE itab_zycbt001 WHERE dtcred > s_posic

                                OR dtcred IS initial.

    ENDCASE.

    READ TABLE itab_zycbt001 INDEX sy-tabix.

    SELECT nrseqc dtvincul nrcontr vlvinc status

           nrinvoic nrparcf gsberf

           tpdesp waers_c waers parid nrparc dtincl dtvencto

           vlme_p

           FROM /pws/zycbt005

           INTO TABLE itab_zycbt005

           FOR ALL ENTRIES IN itab_zycbt001

          WHERE dtvincul LE s_posic

            AND nrseqc = itab_zycbt001-nrseqc

             AND ( status = 'C' OR status = '1' OR status = 'I' ).

    SORT itab_zycbt005 BY nrseqc tpdesp nrparc dtincl nrinvoic nrparcf

                          gsberf dtvincul dtvencto.

    SELECT nrseqc dtpagto nrcontr vlme status

           nrinvoic nrparcf gsberf

           tpdesp nrparc dtincl dtvincul dtvencto

           FROM /pws/zycbt006

           INTO TABLE itab_zycbt006

           FOR ALL ENTRIES IN itab_zycbt001

          WHERE dtpagto LE s_posic

            AND nrseqc = itab_zycbt001-nrseqc

             AND ( status = 'C' OR status = '1' ).

    SORT itab_zycbt006 BY nrseqc tpdesp nrparc dtincl nrinvoic nrparcf

                          gsberf dtvincul dtvencto dtpagto.

    SELECT tpcontr txtdesc

      FROM /pws/zycbt016

      INTO TABLE itab_zycbt016

      FOR ALL ENTRIES IN itab_zycbt001

      WHERE tpcontr = itab_zycbt001-tpcontr.

    SORT itab_zycbt016 BY tpcontr.

    SELECT nrseqc nrparc tpparc

           dtinicio dtfinal txjfixa

           txjvar vlme slvinc

          dtpror

          flat dtpagto

      FROM /pws/zycbt002

      INTO TABLE itab_zycbt002

      FOR ALL ENTRIES IN itab_zycbt001

      WHERE nrseqc EQ itab_zycbt001-nrseqc.

    SORT itab_zycbt002 BY nrseqc nrparc tpparc.

    SELECT nrseqc tpdesp nrparc

           dtincl waers vlme dtpagto

      FROM /pws/zycbt004

      INTO TABLE itab_zycbt004

      FOR ALL ENTRIES IN itab_zycbt001

      WHERE nrseqc EQ itab_zycbt001-nrseqc

        AND tpdesp LIKE 'J%'.

    SORT itab_zycbt004 BY nrseqc tpdesp nrparc dtincl.

    SELECT nrseqc nrinvoic nrparcf gsberf vldev

    FROM /pws/zycbt050

    INTO TABLE itab_zycbt050

    FOR ALL ENTRIES IN itab_zycbt001

    WHERE nrseqc = itab_zycbt001-nrseqc

      AND dtdevol LE s_posic.

    SORT itab_zycbt050 BY nrseqc nrinvoic nrparcf gsberf.

    SELECT nrseqc nrinvoic nrparcf gsberf vlme

      FROM /pws/zycbt051

      INTO TABLE itab_zycbt051

      FOR ALL ENTRIES IN itab_zycbt001

      WHERE nrseqc  =  itab_zycbt001-nrseqc

        AND dtreceb LE s_posic

        AND tpdev   =  'RP'.

    SORT itab_zycbt051 BY nrseqc nrinvoic nrparcf gsberf.

    SELECT a~nrseq_c

           a~vlalt

      INTO TABLE itab_zycbt061

      FROM /pws/zycbt061 AS a INNER JOIN /pws/zycbt060 AS b

        ON a~nrseq = b~nrseq

       FOR ALL ENTRIES IN itab_zycbt001

     WHERE a~nrseq_c EQ itab_zycbt001-nrseqc

       AND b~dtinclu LE s_posic

       AND a~belnr2  IS not NULL.

    SELECT lifnr name1

           FROM lfa1

           INTO TABLE itab_bancos

           FOR ALL ENTRIES IN itab_zycbt001

           WHERE lifnr = itab_zycbt001-bconegoc

              OR lifnr = itab_zycbt001-bcofinan.

    LOOP AT itab_zycbt001.

      AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'

                      ID     'BUKRS'

                      FIELD  itab_zycbt001-bukrs

                      ID     'ACTVT'

                      FIELD  '03'.

      CHECK sy-subrc EQ 0.

      CLEAR: itab_relat, v_vldev, v_slpagar, v_vlvinc, v_vlreceb,

             v_slvinc.

      LOOP AT itab_zycbt003 WHERE nrseqc = itab_zycbt001-nrseqc.

        IF itab_zycbt001-dtentr LE itab_zycbt003-dtpror.

          itab_zycbt001-dtentr = itab_zycbt003-dtpror.

        ENDIF.

      ENDLOOP.

      READ TABLE itab_zycbt016 WITH KEY tpcontr = itab_zycbt001-tpcontr.

      IF sy-subrc = 0.

        MOVE:

         itab_zycbt016-txtdesc TO itab_relat-txtdesc.

      ENDIF.

      v_saldo_vincular  = itab_zycbt001-vlme.

      v_saldo_pagar     = itab_zycbt001-vlme.

      LOOP AT itab_zycbt005 WHERE nrseqc = itab_zycbt001-nrseqc.

        v_saldo_vincular = v_saldo_vincular - itab_zycbt005-vlme_p.

      ENDLOOP.

      LOOP AT itab_zycbt006 WHERE nrseqc = itab_zycbt001-nrseqc.

        v_saldo_pagar    = v_saldo_pagar    - itab_zycbt006-vlme.

      ENDLOOP.

      LOOP AT itab_zycbt061

         INTO wa_zycbt061

        WHERE nrseq_c = itab_zycbt001-nrseqc.

        v_saldo_vincular = v_saldo_vincular - wa_zycbt061-vlalt.

        v_saldo_pagar    = v_saldo_pagar - wa_zycbt061-vlalt.

      ENDLOOP.

      MOVE:

        itab_zycbt001-nrseqc   TO itab_relat-nrseqc,

        itab_zycbt001-nrcontr  TO itab_relat-nrcontr,

        itab_zycbt001-bukrs    TO itab_relat-bukrs,

        itab_zycbt001-tpcontr  TO itab_relat-tpcontr,

        itab_zycbt001-bconegoc TO itab_relat-bconegoc,

        itab_zycbt001-bcofinan TO itab_relat-bcofinan,

        itab_zycbt001-dtcontr  TO itab_relat-dtcontr,

        itab_zycbt001-dtentr   TO itab_relat-dtentr,

        itab_zycbt001-waers    TO itab_relat-waers,

        itab_zycbt001-vlme     TO itab_relat-vlme,

        itab_zycbt001-vlcanc   TO itab_relat-vlcanc,

        v_saldo_vincular       TO itab_relat-slvinc,

        v_saldo_pagar          TO itab_relat-slpagar,

        itab_zycbt001-slpagbr  TO itab_relat-slpagbr.

      LOOP AT itab_zycbt002

        WHERE nrseqc EQ itab_zycbt001-nrseqc.

        IF itab_zycbt002-tpparc = 'C'.

          MOVE itab_zycbt002-vlme TO itab_relat-vl_comis.

          READ TABLE itab_zycbt074 WITH KEY

            nrseqc = itab_zycbt001-nrseqc.

          IF sy-subrc EQ 0.

            IF itab_zycbt002-flat EQ 'X'.

              MOVE itab_zycbt074-perc_comis_flat

                TO itab_relat-perc_comis.

            ELSE.

              IF itab_zycbt074-fpagto_comis EQ 'P'.

                MOVE itab_zycbt074-perc_comis TO itab_relat-perc_comis.

              ENDIF.

            ENDIF.

          ENDIF.

        ELSE.

          CLEAR: itab_relat-vl_comis,

                 itab_relat-perc_comis.

        ENDIF.

        CLEAR v_usd.

        IF itab_zycbt001-tpcontr(1) EQ 'P' OR

           itab_zycbt001-tpcontr(1) EQ 'S'.

          CLEAR: itab_relat-dtpagto, itab_relat-vlpagar.

          IF itab_zycbt002-tpparc = 'J'.

            itab_relat-vlpagar = itab_zycbt002-vlme.

            CLEAR itab_zycbt004.

            LOOP AT itab_zycbt004 WHERE nrseqc = itab_zycbt002-nrseqc

                                    AND nrparc = itab_zycbt002-nrparc

                                    AND dtpagto NE '00000000'

                                    AND dtpagto NE '        '

                                    AND dtpagto NE space.

              IF itab_zycbt004-dtpagto <= s_posic.

                itab_relat-dtpagto = itab_zycbt004-dtpagto.

              ELSE.

                itab_relat-dtpagto = '00000000'.

              ENDIF.

            ENDLOOP.

          ELSEIF itab_zycbt002-tpparc = 'C'.

            IF itab_zycbt002-dtpagto <= s_posic.

              MOVE itab_zycbt002-dtpagto TO itab_relat-dtpagto.

            ELSE.

              MOVE '00000000' TO itab_relat-dtpagto.

            ENDIF.

          ENDIF.

          CLEAR: v_usd, v_taxacambial.

          IF itab_zycbt001-waers EQ /pws/zycbt007-waersa.

            v_usd = itab_relat-vlpagar.

          ELSE.

            PERFORM converter_moeda USING itab_relat-vlpagar

                                          itab_zycbt001-waers

                                          /pws/zycbt007-waersa

                                          'M'

                                          sy-datum

                                          CHANGING v_usd

                                          v_taxacambial.

          ENDIF.

          MOVE itab_zycbt002-slvinc TO itab_relat-slvinc_jur.

        ENDIF.

        IF s_pagar <> '' AND p_compra = 'X'.

          v_type = 'G'.

        ENDIF.

        IF s_pagar <> '' AND  p_venda = 'X'.

          v_type = 'B'.

        ENDIF.

        IF s_pagar <> '' AND p_media = 'X'.

          v_type = 'M'.

        ENDIF.

        PERFORM verifica_periodo.

        MOVE:

          itab_zycbt002-tpparc   TO itab_relat-tpparc,

          itab_zycbt002-dtinicio TO itab_relat-dtinicio.

        IF itab_zycbt002-dtpror <> '00.00.0000' AND

           itab_zycbt002-dtpror <> '00/00/0000' AND

           itab_zycbt002-dtpror <> '00000000'.

          MOVE: itab_zycbt002-dtpror   TO itab_relat-dtvencto.

        ELSE.

          MOVE: itab_zycbt002-dtfinal  TO itab_relat-dtvencto.

        ENDIF.

        MOVE:

          itab_zycbt002-txjfixa  TO itab_relat-txjfixa,

          itab_zycbt002-txjvar   TO itab_relat-txjvar,

          v_usd                  TO itab_relat-vlusd,

          v_prazo TO itab_relat-prazo.

        APPEND itab_relat.

      ENDLOOP.

      IF sy-subrc NE 0.

        LOOP AT itab_zycbt005 WHERE nrseqc = itab_relat-nrseqc.

          v_vlvinc = v_vlvinc + itab_zycbt005-vlvinc.

        ENDLOOP.

        IF s_txcamb <> ''.

          itab_relat-slpagbr = itab_relat-slpagar * s_txcamb.

        ELSE.

          PERFORM calcula_valor_nacional.

        ENDIF.

        APPEND itab_relat.

      ELSE.

        LOOP AT itab_zycbt050 WHERE nrseqc = itab_relat-nrseqc.

          v_vldev = v_vldev + itab_zycbt050-vldev.

        ENDLOOP.

        LOOP AT itab_zycbt005 WHERE nrseqc = itab_zycbt001-nrseqc.

          LOOP AT itab_zycbt006

                          WHERE nrseqc = itab_zycbt005-nrseqc

                            AND tpdesp = itab_zycbt005-tpdesp

                            AND nrparc = itab_zycbt005-nrparc

                            AND dtincl = itab_zycbt005-dtincl

                            AND nrinvoic = itab_zycbt005-nrinvoic

                            AND nrparcf = itab_zycbt005-nrparcf

                            AND gsberf = itab_zycbt005-gsberf

                            AND dtvincul = itab_zycbt005-dtvincul

                            AND dtvencto = itab_zycbt005-dtvencto.

            IF itab_zycbt005-waers NE itab_zycbt005-waers_c.

              IF itab_zycbt001-tpcontr = 'DP'.

                v_slpagar = v_slpagar + itab_zycbt005-vlvinc.

              ELSE.

                v_slpagar = v_slpagar +

                 ( itab_zycbt006-vlme * itab_zycbt005-parid ).

              ENDIF.

            ELSE.

              v_slpagar = v_slpagar + itab_zycbt006-vlme.

            ENDIF.

          ENDLOOP.

          v_vlvinc = v_vlvinc + itab_zycbt005-vlvinc.

        ENDLOOP.

        LOOP AT itab_zycbt051 WHERE nrseqc = itab_relat-nrseqc.

          v_vlreceb = v_vlreceb + itab_zycbt051-vlme.

        ENDLOOP.

        IF itab_zycbt005 IS INITIAL OR

           itab_zycbt006 IS INITIAL OR

           itab_zycbt051 IS INITIAL.

        ELSE.

          itab_relat-slpagar = itab_zycbt001-vlme - v_slpagar -

                               v_vldev + v_vlreceb.

        ENDIF.

        IF itab_zycbt001-waers NE /pws/zycbt007-waersb.

          PERFORM converter_moeda USING itab_relat-slpagar

                                        itab_zycbt001-waers

                                        /pws/zycbt007-waersb

                                        v_type

                                        s_posic

                                        CHANGING itab_relat-slpagbr

                                        v_taxacambial.

        ENDIF.

        IF s_txcamb <> ''.

          itab_relat-slpagbr = itab_relat-slpagar * s_txcamb.

        ENDIF.

        MODIFY itab_relat TRANSPORTING slpagar slpagbr

                          WHERE nrseqc = itab_zycbt001-nrseqc.

      ENDIF.

      IF NOT ( itab_zycbt001-tpcontr(1)   = 'D' AND

               itab_zycbt001-tp_pagt_antc = 'C' ).

        itab_relat-vlvinc = v_vlvinc.

        IF itab_zycbt005 IS INITIAL OR

           itab_zycbt006 IS INITIAL OR

           itab_zycbt051 IS INITIAL.

        ELSE.

          v_slvinc          = itab_zycbt001-vlme - v_vlvinc + v_vldev.

          itab_relat-slvinc = v_slvinc - v_vldev.

        ENDIF.

      ENDIF.

      IF NOT s_a_entr IS INITIAL.

        IF itab_relat-slvinc IS INITIAL.

          DELETE itab_relat WHERE nrseqc = itab_zycbt001-nrseqc.

          CONTINUE.

        ENDIF.

      ENDIF.

      READ TABLE itab_bancos WITH KEY lifnr = itab_relat-bconegoc.

      IF sy-subrc = 0.

        itab_relat-txtnegoc = itab_bancos-name1.

      ENDIF.

      READ TABLE itab_bancos WITH KEY lifnr = itab_relat-bcofinan.

      IF sy-subrc = 0.

        itab_relat-txtfinan = itab_bancos-name1.

      ENDIF.

      MODIFY itab_relat TRANSPORTING vlvinc slvinc slpagar slpagbr

                                     txtnegoc txtfinan

                        WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt001 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt002 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt003 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt004 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt005 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt006 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt050 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt051 WHERE nrseqc = itab_zycbt001-nrseqc.

    ENDLOOP.

  ENDIF.

ENDFORM.

* << Fim da exclusão

FORM converter_moeda USING    p_devlme p_dewaers p_parawaers p_ctmoeda

                      p_dtbase CHANGING p_paravlme p_taxa.  "#EC *

  DATA:

    v_type       TYPE tcurr-kurst.

  CHECK NOT p_devlme IS INITIAL.

  SELECT SINGLE * FROM /pws/zycbt009

         WHERE codpadr EQ p_ctmoeda.

  v_type = /pws/zycbt009-kurst.

  CALL FUNCTION '/PWS/ZYCB_MONTANTE_CONVERTE'

       EXPORTING

...

 

...

  IF itab_zycbt001-waers NE /pws/zycbt007-waersb.

    PERFORM converter_moeda USING itab_relat-slpagar

                                  itab_zycbt001-waers

                                  /pws/zycbt007-waersb

                                  v_type

                                  s_posic

                                  CHANGING itab_relat-slpagbr

                                  v_taxacambial.

  ENDIF.

ENDFORM.

* >> Início da inclusão:

FORM processar_dados2.

  DATA: BEGIN OF itab_zycbt003 OCCURS 5.

          INCLUDE STRUCTURE /pws/zycbt003.

  DATA: END OF itab_zycbt003.

  DATA:

    v_type       TYPE tcurr-kurst.

  DATA:

    v_saldo_vincular  TYPE  /pws/zycbt001-slvinc,

    v_saldo_pagar     TYPE  /pws/zycbt001-slpagar.

  REFRESH: itab_zycbt001,

           itab_zycbt002,

           itab_relat,

           itab_relat2.

  PERFORM verifica_parametros.

  SELECT nrseqc  nrcontr bukrs   tpcontr  bconegoc bcofinan fdtlanc

         dtcontr dtcred  dtdesem dtentr   dtliquid waers    vlme

         vlcanc  slvinc  slpagar

         tp_pagt_antc

    FROM /pws/zycbt001

    INTO TABLE itab_zycbt001

    WHERE nrseqc   IN nrseqc

      AND nrcontr  IN nrcontr

      AND tpcontr  IN tpcontr

      AND bukrs    IN bukrs

      AND dtcontr  IN dtcontr

      AND bcofinan IN bcofinan

      AND bconegoc IN bconegoc

      AND dtcred   IN dtcred

      AND dtdesem  IN dtdesem

      AND f_encerrado NE 'X'

      AND f_encerrado NE 'E'

      AND dtentr   IN dtentr.

  SORT itab_zycbt001 BY nrseqc.

  IF NOT itab_zycbt001[] IS INITIAL.

    SELECT nrseqc perc_comis perc_comis_flat fpagto_comis

      FROM /pws/zycbt074

      INTO TABLE itab_zycbt074

      FOR ALL ENTRIES IN itab_zycbt001

      WHERE nrseqc = itab_zycbt001-nrseqc.

    SELECT *

           FROM /pws/zycbt003

           INTO TABLE itab_zycbt003

           FOR ALL ENTRIES IN itab_zycbt001

           WHERE nrseqc = itab_zycbt001-nrseqc AND

                 tppror = 'E'.

    SORT itab_zycbt003 BY nrseqc tppror dtpror.

    IF s_posic IS INITIAL.

      s_posic = sy-datum.

    ENDIF.

    IF s_flag IS INITIAL.

      s_flag = 'O'.

    ENDIF.

    CASE s_flag.

      WHEN 'D'.

        DELETE itab_zycbt001 WHERE dtdesem > s_posic

                                OR dtdesem IS initial.

      WHEN 'O'.

        DELETE itab_zycbt001 WHERE dtcontr > s_posic

                                OR dtcontr IS initial.

      WHEN 'C'.

        DELETE itab_zycbt001 WHERE dtcred > s_posic

                                OR dtcred IS initial.

    ENDCASE.

    READ TABLE itab_zycbt001 INDEX sy-tabix.

    SELECT nrseqc dtvincul nrcontr vlvinc status

           nrinvoic nrparcf gsberf

           tpdesp waers_c waers parid nrparc dtincl dtvencto

           vlme_p

           FROM /pws/zycbt005

           INTO TABLE itab_zycbt005

           FOR ALL ENTRIES IN itab_zycbt001

          WHERE dtvincul LE s_posic

            AND nrseqc = itab_zycbt001-nrseqc

             AND ( status = 'C' OR status = '1' OR status = 'I' ).

    SORT itab_zycbt005 BY nrseqc tpdesp nrparc dtincl nrinvoic nrparcf

                          gsberf dtvincul dtvencto.

    SELECT nrseqc dtpagto

           dtpagext

           nrcontr vlme status

           nrinvoic nrparcf gsberf

           tpdesp nrparc dtincl dtvincul dtvencto

           FROM /pws/zycbt006

           INTO TABLE itab_zycbt006

           FOR ALL ENTRIES IN itab_zycbt001

          WHERE dtpagto LE s_posic

            AND nrseqc = itab_zycbt001-nrseqc

             AND ( status = 'C' OR status = '1' ).

    SORT itab_zycbt006 BY nrseqc tpdesp nrparc dtincl nrinvoic nrparcf

                          gsberf dtvincul dtvencto dtpagto

                          dtpagext.

    SELECT tpcontr txtdesc

      FROM /pws/zycbt016

      INTO TABLE itab_zycbt016

      FOR ALL ENTRIES IN itab_zycbt001

      WHERE tpcontr = itab_zycbt001-tpcontr.

    SORT itab_zycbt016 BY tpcontr.

    SELECT nrseqc nrparc tpparc

           dtinicio dtfinal txjfixa

           txjvar vlme slvinc

          dtpror

          flat dtpagto

      FROM /pws/zycbt002

      INTO TABLE itab_zycbt002

      FOR ALL ENTRIES IN itab_zycbt001

      WHERE nrseqc EQ itab_zycbt001-nrseqc.

    SORT itab_zycbt002 BY nrseqc nrparc tpparc.

    SELECT nrseqc tpdesp nrparc

           dtincl waers vlme dtpagto

      FROM /pws/zycbt004

      INTO TABLE itab_zycbt004

      FOR ALL ENTRIES IN itab_zycbt001

      WHERE nrseqc EQ itab_zycbt001-nrseqc

        AND tpdesp LIKE 'J%'.

    SORT itab_zycbt004 BY nrseqc tpdesp nrparc dtincl.

    SELECT nrseqc nrinvoic nrparcf gsberf vldev

    FROM /pws/zycbt050

    INTO TABLE itab_zycbt050

    FOR ALL ENTRIES IN itab_zycbt001

    WHERE nrseqc = itab_zycbt001-nrseqc

      AND dtdevol LE s_posic.

    SORT itab_zycbt050 BY nrseqc nrinvoic nrparcf gsberf.

    SELECT nrseqc nrinvoic nrparcf gsberf vlme

      FROM /pws/zycbt051

      INTO TABLE itab_zycbt051

      FOR ALL ENTRIES IN itab_zycbt001

      WHERE nrseqc  =  itab_zycbt001-nrseqc

        AND dtreceb LE s_posic

        AND tpdev   =  'RP'.

    SORT itab_zycbt051 BY nrseqc nrinvoic nrparcf gsberf.

    SELECT a~nrseq_c

           a~vlalt

      INTO TABLE itab_zycbt061

      FROM /pws/zycbt061 AS a INNER JOIN /pws/zycbt060 AS b

        ON a~nrseq = b~nrseq

       FOR ALL ENTRIES IN itab_zycbt001

     WHERE a~nrseq_c EQ itab_zycbt001-nrseqc

       AND b~dtinclu LE s_posic

       AND a~belnr2  IS not NULL.

    SELECT lifnr name1

           FROM lfa1

           INTO TABLE itab_bancos

           FOR ALL ENTRIES IN itab_zycbt001

           WHERE lifnr = itab_zycbt001-bconegoc

              OR lifnr = itab_zycbt001-bcofinan.

    LOOP AT itab_zycbt001.

      AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'

                      ID     'BUKRS'

                      FIELD  itab_zycbt001-bukrs

                      ID     'ACTVT'

                      FIELD  '03'.

      CHECK sy-subrc EQ 0.

      CLEAR: itab_relat, v_vldev, v_slpagar, v_vlvinc, v_vlreceb,

             v_slvinc.

      MOVE:

        itab_zycbt001-nrseqc   TO itab_relat-nrseqc,

        itab_zycbt001-nrcontr  TO itab_relat-nrcontr,

        itab_zycbt001-bukrs    TO itab_relat-bukrs,

        itab_zycbt001-tpcontr  TO itab_relat-tpcontr,

        itab_zycbt001-bconegoc TO itab_relat-bconegoc,

        itab_zycbt001-bcofinan TO itab_relat-bcofinan,

        itab_zycbt001-dtcontr  TO itab_relat-dtcontr,

        itab_zycbt001-dtentr   TO itab_relat-dtentr,

        itab_zycbt001-waers    TO itab_relat-waers,

        itab_zycbt001-vlme     TO itab_relat-vlme,

        itab_zycbt001-vlcanc   TO itab_relat-vlcanc.

      LOOP AT itab_zycbt003 WHERE nrseqc = itab_zycbt001-nrseqc.

        IF itab_zycbt001-dtentr LE itab_zycbt003-dtpror.

          itab_zycbt001-dtentr = itab_zycbt003-dtpror.

        ENDIF.

      ENDLOOP.

      READ TABLE itab_zycbt016 WITH KEY tpcontr = itab_zycbt001-tpcontr.

      IF sy-subrc = 0.

        MOVE:

         itab_zycbt016-txtdesc TO itab_relat-txtdesc.

      ENDIF.

      LOOP AT itab_zycbt050 WHERE nrseqc = itab_relat-nrseqc.

        v_vldev = v_vldev + itab_zycbt050-vldev.

      ENDLOOP.

      LOOP AT itab_zycbt051 WHERE nrseqc = itab_relat-nrseqc.

        v_vlreceb = v_vlreceb + itab_zycbt051-vlme.

      ENDLOOP.

      LOOP AT itab_zycbt005 WHERE nrseqc = itab_zycbt001-nrseqc.

        LOOP AT itab_zycbt006

                        WHERE nrseqc = itab_zycbt005-nrseqc

                          AND tpdesp = itab_zycbt005-tpdesp

                          AND nrparc = itab_zycbt005-nrparc

                          AND dtincl = itab_zycbt005-dtincl

                          AND nrinvoic = itab_zycbt005-nrinvoic

                          AND nrparcf = itab_zycbt005-nrparcf

                          AND gsberf = itab_zycbt005-gsberf

                          AND dtvincul = itab_zycbt005-dtvincul

                          AND dtvencto = itab_zycbt005-dtvencto.

          IF itab_zycbt005-waers NE itab_zycbt005-waers_c.

            IF itab_zycbt001-tpcontr = 'DP'.

              v_slpagar = v_slpagar + itab_zycbt005-vlvinc.

            ELSE.

              v_slpagar = v_slpagar +

               ( itab_zycbt006-vlme * itab_zycbt005-parid ).

            ENDIF.

          ELSE.

            v_slpagar = v_slpagar + itab_zycbt006-vlme.

          ENDIF.

        ENDLOOP.

        v_vlvinc = v_vlvinc + itab_zycbt005-vlvinc.

      ENDLOOP.

      itab_relat-slpagar = itab_zycbt001-vlme - v_slpagar -

                           v_vldev + v_vlreceb.

      LOOP AT itab_zycbt061

         INTO wa_zycbt061

        WHERE nrseq_c = itab_zycbt001-nrseqc.

        itab_relat-slvinc  = itab_relat-slvinc - wa_zycbt061-vlalt.

        itab_relat-slpagar = itab_relat-slpagar - wa_zycbt061-vlalt.

      ENDLOOP.

      IF itab_zycbt001-waers NE /pws/zycbt007-waersb.

        PERFORM converter_moeda USING itab_relat-slpagar

                                      itab_zycbt001-waers

                                      /pws/zycbt007-waersb

                                      v_type

                                      s_posic

                                      CHANGING itab_relat-slpagbr

                                      v_taxacambial.

      ENDIF.

      IF s_txcamb <> ''.

        itab_relat-slpagbr = itab_relat-slpagar * s_txcamb.

      ENDIF.

      IF NOT ( itab_zycbt001-tpcontr(1)   = 'D' AND

               itab_zycbt001-tp_pagt_antc = 'C' ).

        itab_relat-vlvinc = v_vlvinc.

        v_slvinc = itab_relat-slvinc = itab_zycbt001-vlme - v_vlvinc.

      ENDIF.

      IF NOT s_a_entr IS INITIAL.

        IF itab_relat-slvinc IS INITIAL.

          DELETE itab_relat WHERE nrseqc = itab_zycbt001-nrseqc.

          CONTINUE.

        ENDIF.

      ENDIF.

      READ TABLE itab_bancos WITH KEY lifnr = itab_relat-bconegoc.

      IF sy-subrc = 0.

        itab_relat-txtnegoc = itab_bancos-name1.

      ENDIF.

      READ TABLE itab_bancos WITH KEY lifnr = itab_relat-bcofinan.

      IF sy-subrc = 0.

        itab_relat-txtfinan = itab_bancos-name1.

      ENDIF.

      LOOP AT itab_zycbt002

        WHERE nrseqc EQ itab_zycbt001-nrseqc.

        IF itab_zycbt002-tpparc = 'C'.

          MOVE itab_zycbt002-vlme TO itab_relat-vl_comis.

          READ TABLE itab_zycbt074 WITH KEY

            nrseqc = itab_zycbt001-nrseqc.

          IF sy-subrc EQ 0.

            IF itab_zycbt002-flat EQ 'X'.

              MOVE itab_zycbt074-perc_comis_flat

                TO itab_relat-perc_comis.

            ELSE.

              IF itab_zycbt074-fpagto_comis EQ 'P'.

                MOVE itab_zycbt074-perc_comis TO itab_relat-perc_comis.

              ENDIF.

            ENDIF.

          ENDIF.

        ELSE.

          CLEAR: itab_relat-vl_comis,

                 itab_relat-perc_comis.

        ENDIF.

        CLEAR v_usd.

        IF itab_zycbt001-tpcontr(1) EQ 'P' OR

           itab_zycbt001-tpcontr(1) EQ 'S'.

          CLEAR: itab_relat-dtpagto, itab_relat-vlpagar.

          IF itab_zycbt002-tpparc = 'J'.

            itab_relat-vlpagar = itab_zycbt002-vlme.

            CLEAR itab_zycbt004.

            LOOP AT itab_zycbt004 WHERE nrseqc = itab_zycbt002-nrseqc

                                    AND nrparc = itab_zycbt002-nrparc

                                    AND dtpagto NE '00000000'

                                    AND dtpagto NE '        '

                                    AND dtpagto NE space.

              IF itab_zycbt004-dtpagto <= s_posic.

                itab_relat-dtpagto = itab_zycbt004-dtpagto.

              ELSE.

                itab_relat-dtpagto = '00000000'.

              ENDIF.

            ENDLOOP.

          ELSEIF itab_zycbt002-tpparc = 'C'.

            IF itab_zycbt002-dtpagto <= s_posic.

              MOVE itab_zycbt002-dtpagto TO itab_relat-dtpagto.

            ELSE.

              MOVE '00000000' TO itab_relat-dtpagto.

            ENDIF.

          ENDIF.

          CLEAR: v_usd, v_taxacambial.

          IF itab_zycbt001-waers EQ /pws/zycbt007-waersa.

            v_usd = itab_relat-vlpagar.

          ELSE.

            PERFORM converter_moeda USING itab_relat-vlpagar

                                          itab_zycbt001-waers

                                          /pws/zycbt007-waersa

                                          'M'

                                          sy-datum

                                          CHANGING v_usd

                                          v_taxacambial.

          ENDIF.

          MOVE itab_zycbt002-slvinc TO itab_relat-slvinc_jur.

        ENDIF.

        IF s_pagar <> '' AND p_compra = 'X'.

          v_type = 'G'.

        ENDIF.

        IF s_pagar <> '' AND  p_venda = 'X'.

          v_type = 'B'.

        ENDIF.

        IF s_pagar <> '' AND p_media = 'X'.

          v_type = 'M'.

        ENDIF.

        PERFORM verifica_periodo.

        MOVE:

          itab_zycbt002-tpparc   TO itab_relat-tpparc,

          itab_zycbt002-dtinicio TO itab_relat-dtinicio.

        IF itab_zycbt002-dtpror <> '00.00.0000' AND

           itab_zycbt002-dtpror <> '00/00/0000' AND

           itab_zycbt002-dtpror <> '00000000'.

          MOVE: itab_zycbt002-dtpror   TO itab_relat-dtvencto.

        ELSE.

          MOVE: itab_zycbt002-dtfinal  TO itab_relat-dtvencto.

        ENDIF.

        MOVE:

          itab_zycbt002-txjfixa  TO itab_relat-txjfixa,

          itab_zycbt002-txjvar   TO itab_relat-txjvar,

          v_usd                  TO itab_relat-vlusd,

          v_prazo TO itab_relat-prazo.

        APPEND itab_relat.

      ENDLOOP.

      IF sy-subrc NE 0.

        IF s_txcamb <> ''.

          itab_relat-slpagbr = itab_relat-slpagar * s_txcamb.

        ELSE.

          PERFORM calcula_valor_nacional.

        ENDIF.

        APPEND itab_relat.

      ENDIF.

      DELETE itab_zycbt001 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt002 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt003 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt004 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt005 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt006 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt050 WHERE nrseqc = itab_zycbt001-nrseqc.

      DELETE itab_zycbt051 WHERE nrseqc = itab_zycbt001-nrseqc.

    ENDLOOP.

  ENDIF.

ENDFORM.

* << Fim da inclusão