CE PLUS - Nota 007151

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Relatórios

Data/Hora da Publicação: 15/08/2008 00:00:00

Data/Hora Última Alteração: 11/03/2010 10:05:42

Descrição da Nota: SELEÇÃO DO RELATORIO DE CAMBIOS FECHADOS COMO O CAMPO "POSIÇÃO EM"

Sintoma

 

Seleção errada do relatorio de Cambios Fechados com o campo "Posição em" .

 

Solução

 

Incluir rotina para verificar a data "Posição em"  na seleção.

Versões Tratadas

7.0

Informações Complementares

 

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

Nota Número 07151 Data: 15/08/2008 Hora: 16:32:18

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

 

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

Nota Número              : 07151

Categoria                : Melhoria

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00006

Agrupamento              : 00060

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

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

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

Palavras Chave:

SELEÇÃO ERRADA DO RELATORIO DE CAMBIOS FECHADOS COM O CAMPO

"POSIÇÃO EM"

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

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.

...

 

...

            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.

  CLEAR: itab_zycbt001,

         itab_zycbt005,

         itab_zycbt006 .

  LOOP AT itab_zycbt001.

    CLEAR : v_tabix,

            v_nrseq,

            v_vr.

    IF p_contp EQ 'X'.

      IF p_dtliq NE '00000000'.

        LOOP AT  itab_zycbt005

                      WHERE nrseqc   = itab_zycbt001-nrseqc

                        AND dtvincul LE p_dtliq.

          IF sy-subrc = 0.

            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.

          MESSAGE i222.

          STOP.

        ENDIF.

      ELSE.

      ENDIF.

    ELSEIF p_contl EQ 'X'.

      IF p_dtliq NE '00000000'.

        LOOP AT  itab_zycbt006

                      WHERE  nrseqc  = itab_zycbt001-nrseqc.

          v_tabix = sy-tabix.

          v_nrseq = itab_zycbt006-nrseqc.

          READ TABLE itab_zycbt005

                        WITH KEY nrinvoic =  itab_zycbt006-nrinvoic.

          IF itab_zycbt006-dtpagto GT p_dtliq.

            DELETE itab_zycbt006 INDEX v_tabix.

            DELETE itab_zycbt005

                      WHERE nrinvoic = itab_zycbt006-nrinvoic.

          ENDIF.

          IF itab_zycbt006[] IS INITIAL.

            DELETE itab_zycbt001 WHERE nrseqc = v_nrseq.

            IF itab_zycbt001[] IS INITIAL.

              MESSAGE i222.

              STOP.

            ENDIF.

          ENDIF.

        ENDLOOP.

      ELSE.

        DELETE itab_zycbt001 WHERE slpagar > 0 .

        IF itab_zycbt001[] IS INITIAL.

          MESSAGE i222.

          STOP.

        ENDIF.

      ENDIF.

    ELSEIF p_todos EQ 'X'.

    ENDIF.

  ENDLOOP.

ENDFORM.

* << Fim da inclusão