CE PLUS - Nota 007319

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Relatórios

Data/Hora da Publicação: 16/09/2008 00:00:00

Data/Hora Última Alteração: 18/02/2011 15:52:58

Descrição da Nota: PROGRAMA DE CAMBIOS FECHADOS - CAMPO 'POSIÇÃO EM'

Sintoma

no progra de cambios fechados , o campo 'posição em ' não funciona como parametro de limite de data

nas opçoes de contrato liquidado, pendente ou todos

 

 

Solução

fazer o tratamento correto do campo  'posiçao em ' para o programa trazer certo as informaçoes na

data selecionada por esse campo.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

SELEÇÃO DO RELATORIO DE CAMBIOS FECHADOS COMO O CAMPO "POSIÇÃO EM"

Informações Complementares

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

Nota Número 07319 Data: 16/09/2008 Hora: 11:51:02

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

 

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

Nota Número              : 07319

Categoria                : Melhoria

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00007

Agrupamento              : 00065

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

Referência às notas relacionadas:

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

 

07151  - 00001 - 7.0    - 00006  - SELEÇÃO DO RELATORIO DE CAMBIOS FECHADOS COMO O CAMPO "POSIÇÃO EM

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

PROGRAMA DE CAMBIOS FECHADOS - CAMPO 'POSIÇÃO EM'

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

Palavras Chave:

PROGRAMA DE CAMBIOS FECHADOS - CAMPO 'POSIÇÃO EM' NÃO FUNCIONA COMO

PARAMETRO DE DATA NAS OPÇOES DE CONTRATO LIQUIDADO, PENDENTE OU TODOS

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

Objetos da nota:

REPS /PWS/ZYCBR047

 

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

Modificações efetuadas em REPS /PWS/ZYCBR047

 

...

  CLEAR g_variant.

  g_variant-report = sy-repid.

  g_variant-username = sy-uname.

AT SELECTION-SCREEN.

  CLEAR p_varian.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varian.

  PERFORM f4_for_variant.

START-OF-SELECTION.

  PERFORM seleciona_dados.

  PERFORM cria_range.

* >> Início da inclusão:

  PERFORM filtra_dados.

* << Fim da inclusão

  IF NOT p_alv IS INITIAL.

    PERFORM imprime_relatorio.

    IF NOT itab_erro[] IS INITIAL.

      PERFORM imprime_relat_erro.

    ENDIF.

  ELSE.

    MOVE sy-repid TO v_repid.

    PERFORM e04_comment_build USING gt_list_top_of_page[].

    PERFORM f_monta_final.

    PERFORM f_fieldcat_fill.

...

 

...

    SORT itab_zycbt003 BY nrseqc ASCENDING dtpror DESCENDING.

    DELETE ADJACENT DUPLICATES FROM itab_zycbt003 COMPARING nrseqc.

    LOOP AT itab_zycbt001.

      CLEAR itab_zycbt003.

      READ TABLE itab_zycbt003 WITH KEY nrseqc = itab_zycbt001-nrseqc.

      IF sy-subrc EQ '0'.

        itab_zycbt001-dtliquid = itab_zycbt003-dtpror.

        MODIFY itab_zycbt001.

      ENDIF.

    ENDLOOP.

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

    IF p_contp EQ 'X'.

      IF p_dtliq NE '00000000'.

        DELETE itab_zycbt001 WHERE slpagar = 0 OR

                                   dtliquid GT p_dtliq.

      ELSE.

        DELETE itab_zycbt001 WHERE slpagar = 0.

      ENDIF.

    ELSEIF p_contl EQ 'X'.

      IF p_dtliq NE '00000000'.

        DELETE itab_zycbt001 WHERE slpagar > 0 OR

                                   dtliquid GT p_dtliq.

      ELSE.

        DELETE itab_zycbt001 WHERE slpagar > 0.

      ENDIF.

    ELSEIF p_todos EQ 'X'.

      IF p_dtliq NE '00000000'.

        DELETE itab_zycbt001 WHERE dtliquid GT p_dtliq.

      ENDIF.

    ENDIF.

    SELECT tpcontr txtdesc

      FROM /pws/zycbt016

      INTO TABLE itab_zycbt016.                         "#EC CI_NOWHERE

* << Fim da exclusão

  ELSE.

    MESSAGE i222.

    STOP.

  ENDIF.

  IF NOT itab_zycbt001[] IS INITIAL.

    SELECT nrseqc tpdesp nrparc dtincl nrinvoic nrparcf gsberf dtvincul

           dtvencto waers vlvinc slpagar vljur

           waers_c

           INTO TABLE itab_zycbt005 FROM /pws/zycbt005

           FOR ALL ENTRIES IN itab_zycbt001

...

 

...

  MOVE /pws/zycbt009-kurst TO v_type.

  IF NOT itab_zycbt005[] IS INITIAL.

    SELECT * FROM /pws/zycbt064 INTO TABLE itab_zycbt064

             FOR ALL ENTRIES IN itab_zycbt005

             WHERE nrinvoic  = itab_zycbt005-nrinvoic

               AND nrparcf   = itab_zycbt005-nrparcf

               AND nrparc    = itab_zycbt005-nrparc

               AND dtvencto  = itab_zycbt005-dtvencto

               AND gsberf    = itab_zycbt005-gsberf

               AND tpdesp    = 'J'

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

               AND mdcorresp = 'ED'.

* << Fim da exclusão

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

               AND mdcorresp = 'ED'.                    "#EC CI_NOFIRST

* << Fim da inclusão

    IF NOT itab_zycbt064[] IS INITIAL.

      SELECT * FROM /pws/zycbt031 INTO TABLE itab_zycbt031

               FOR ALL ENTRIES IN itab_zycbt064

               WHERE nrseq = itab_zycbt064-nrboleto.    "#EC CI_NOFIRST

    ENDIF.

  ENDIF.

ENDFORM.

FORM imprime_relatorio.

  CLEAR: v_impr,

         itab_erro.

...

 

...

             WHERE nrseq = itab_zycbt017-nrinvoic.

      ENDSELECT.

      IF itab_zycbt005-slpagar EQ 0.

        CLEAR: v_dtpagext.

        SORT itab_zycbt006 BY dtpagto ASCENDING.

        READ TABLE itab_zycbt006

          WITH KEY nrinvoic = itab_zycbt005-nrinvoic

                   nrparcf  = itab_zycbt005-nrparcf

                   gsberf   = itab_zycbt005-gsberf

                   dtvincul = itab_zycbt005-dtvincul.

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

        if sy-subrc = 0.

* << Fim da inclusão

        v_dtpagext = itab_zycbt006-dtpagext.

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

        endif.

* << Fim da inclusão

      ELSE.

        CLEAR: v_dtpagext.

      ENDIF.

      IF itab_zycbt017-credext NE '00000000' AND

         itab_zycbt001-dtcred  NE '00000000'.

        v_nrdias = itab_zycbt017-credext - itab_zycbt001-dtcred.

...

 

...

            i_dtbase_nao_encontrada      = 4

            taxa_nao_encontrada          = 5

            fator_nao_encontrado         = 6

            i_montante_nao_encontrado    = 7

            tabela_categ_nao_configurada = 8

            OTHERS                       = 9.

  IF sy-subrc NE 0.

    p_defator = p_parafator = 1.

  ENDIF.

ENDFORM.

* >> Início da inclusão:

FORM filtra_dados.

  DATA: v_tabix   TYPE sy-tabix,

        v_nrseq   LIKE /pws/zycbt001-nrseqc,

        v_vr      LIKE /pws/zycbt001-vlme,

        v_invoic  LIKE /PWS/zycbt006-nrinvoic.

  CLEAR: itab_zycbt001,

         itab_zycbt005,

         itab_zycbt006,

         sy-subrc,

         v_tabix,

         v_nrseq,

         v_invoic,

         v_vr.

 sort  itab_zycbt001 by NRSEQC .

 sort  itab_zycbt005 by NRSEQC .

 sort  itab_zycbt006 by NRSEQC .

  LOOP AT itab_zycbt001.

    clear v_vr.

    v_tabix = sy-tabix.

    IF p_contp EQ 'X'.

      IF p_dtliq NE '00000000'.

        LOOP AT  itab_zycbt005

                      WHERE nrseqc   = itab_zycbt001-nrseqc.

          IF itab_zycbt005-dtvincul LE p_dtliq.

            v_vr = itab_zycbt005-vlvinc + v_vr.

          ENDIF.

        ENDLOOP.

        itab_zycbt001-slvinc = itab_zycbt001-vlme -  v_vr.

        IF NOT itab_zycbt001-slvinc IS INITIAL.

          MODIFY itab_zycbt001 .

          DELETE itab_zycbt005 WHERE nrseqc   = itab_zycbt001-nrseqc.

          DELETE itab_zycbt006 WHERE nrseqc   = itab_zycbt001-nrseqc.

        ELSE.

          delete itab_zycbt001 index v_tabix.

          if itab_zycbt001[] is initial.

           MESSAGE i222.

           STOP.

          endif.

        ENDIF.

      ENDIF.

   ELSEIF  p_contl EQ 'X'.

      IF p_dtliq NE '00000000'.

        clear : v_tabix.

        LOOP AT  itab_zycbt006

                      WHERE  nrseqc  = itab_zycbt001-nrseqc.

          IF itab_zycbt006-dtpagto GT p_dtliq.

              v_tabix = sy-tabix.

              v_nrseq = itab_zycbt006-nrseqc.

              v_invoic = itab_zycbt006-nrinvoic.

            DELETE itab_zycbt006 INDEX v_tabix.

            READ TABLE itab_zycbt005

                     WITH KEY nrinvoic =  v_invoic.

           if sy-subrc = 0.

            DELETE itab_zycbt005 index sy-tabix.

           endif.

         endif.

       endloop.

          IF itab_zycbt006[] IS INITIAL.

            DELETE itab_zycbt001 WHERE nrseqc = v_nrseq.

            IF itab_zycbt001[] IS INITIAL.

              MESSAGE i222.

              STOP.

            ENDIF.

          ENDIF.

      ENDIF.

   ENDIF.

  ENDLOOP.

    IF p_todos EQ 'X'.

      IF p_dtliq NE '00000000'.

        DELETE itab_zycbt001 WHERE dtcontr  GT p_dtliq.

        DELETE itab_zycbt005 WHERE DTVINCUL GT p_dtliq.

        delete itab_zycbt006 where dtpagto  GT p_dtliq.

      else.

        DELETE itab_zycbt001 WHERE dtliquid GT sy-datum.

        DELETE itab_zycbt001 WHERE dtcontr  GT sy-datum .

      endif.

    ENDIF.

ENDFORM.

* << Fim da inclusão