CE PLUS - Nota 005134

Módulo: DOC. EXPORTAÇÃO

Funcionalidade: Relatórios

Data/Hora da Publicação: 01/11/2007 00:00:00

Data/Hora Última Alteração: 22/02/2011 11:42:16

Descrição da Nota: AJUSTE NA SELEÇÃO DE DADOS RELATÓRIO FOLLOW UP EXPORTAÇÃO

Sintoma

Ao efetuar algumas seleções:

- exceções são geradas;

- alguns itens são trazidos a mais;

- alguns itens não são trazidos.

 

 

Solução

Correção das seleções de dados.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

CORREÇÃO BUSCA DE ITENS DO EMBARQUE NO RELATÓRIO FOLLOW UP

INCLUSÃO DO PEDIDO DE COMPRA NO RELATORIO FOLLOW UP DE EXPORTAÇÃO

Informações Complementares

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

Nota Número 05134 Data: 01/11/2007 Hora: 11:49:01

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

 

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

Nota Número              : 05134

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00003

Agrupamento              : 00019

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

Referência às notas relacionadas:

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

 

04995  - 00001 - 7.0    - 00003  - INCLUSÃO DO PEDIDO DE COMPRA NO RELATORIO FOLLOW UP DE EXPORTAÇÃO

05062  - 00002 - 7.0    - 00003  - CORREÇÃO BUSCA DE ITENS DO EMBARQUE NO RELATÓRIO FOLLOW UP

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

AJUSTE NA SELEÇÃO DE DADOS RELATÓRIO FOLLOW UP EXPORTAÇÃO

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

Palavras Chave:

SELEÇÃO DADOS RELATÓRIO FOLLOW UP EXPORTAÇÃO

 

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

Objetos da nota:

REPS /PWS/ZYCER213

 

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

Modificações efetuadas em REPS /PWS/ZYCER213

 

...

      nrsd

      canal

      dtprev

      dtemb

      dtaverb

      dtdoc

      dtenvcamb

      dtcruze

    FROM /pws/zycet001

    INTO TABLE it_seq_embarque

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

    WHERE nrseq IN s_nrseq.

* << Fim da exclusão

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

    WHERE

      nrseq  IN s_nrseq  AND

      nremb  IN s_nremb  AND

      dtprev IN s_dtprev AND

      dtemb  IN s_dtemb  AND

      werks  IN s_werks.

* << Fim da inclusão

  CHECK sy-subrc = 0.

  PERFORM recupera_itens_embarque

    TABLES itab_embarque[]

    USING it_seq_embarque.

  IF NOT itab_embarque[] IS INITIAL.

    SELECT nrseq nrre dtlibanu

           FROM /pws/zycet003

           INTO TABLE itab_zycet003

           FOR ALL ENTRIES IN itab_embarque

            WHERE nrseq EQ itab_embarque-nrseq

...

 

...

             FROM /pws/zycet047

             INTO TABLE itab_zycet047

             FOR ALL ENTRIES IN itab_embarque

             WHERE nrseq EQ itab_embarque-nrseq

               AND matnr EQ itab_embarque-matnr.

      PERFORM seleciona_dados_embarque.

    ENDIF.

  ENDIF.

ENDFORM.

FORM seleciona_nota.

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

  DATA it_seq_embarque TYPE t_seq_embarques.

* << Fim da inclusão

  SELECT b~docnum b~itmnum b~reftyp b~refkey b~refitm a~nfnum a~docdat

         FROM j_1bnfdoc AS a INNER JOIN j_1bnflin AS b

                             ON a~docnum = b~docnum

         INTO TABLE itab_notas

         WHERE a~docdat IN s_docdat

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

           AND a~nfnum  IN s_nfnum.

* << Fim da exclusão

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

           AND a~nfnum  IN s_nfnum

           AND b~refkey NE space

           AND a~nfnum  NE space.

* << Fim da inclusão

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

  IF NOT itab_notas[] IS INITIAL.

* << Fim da exclusão

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

  CHECK NOT itab_notas[] IS INITIAL.

* << Fim da inclusão

    LOOP AT itab_notas.

      v_index = sy-tabix.

      MOVE itab_notas-refkey TO itab_notas-vbeln_vf.

      MODIFY itab_notas INDEX v_index.

    ENDLOOP.

    SELECT vbrp~vbeln vbrp~posnr vbrp~kursk vbrp~netwr

           vbrk~exnum vbrk~fkart vbrk~inco1 vbrk~bukrs

           vbrk~waerk

           FROM vbrk INNER JOIN vbrp

                     ON vbrk~vbeln = vbrp~vbeln

...

 

...

                vbfa_tab      = itab_vbfa_aux

           EXCEPTIONS

                no_vbfa       = 1

                no_vbuk_found = 2

                OTHERS        = 3.

      IF sy-subrc <> 0.

      ENDIF.

      READ TABLE itab_vbfa_aux WITH KEY vbtyp_n = 'J'.

      MOVE: itab_vbfa_aux-vbeln TO itab_notas-vbeln_vl,

            itab_vbfa_aux-posnn TO itab_notas-posnl.

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

      CLEAR itab_vbfa_aux.

      READ TABLE itab_vbfa_aux WITH KEY vbtyp_n = 'C'.

      MOVE: itab_vbfa_aux-vbeln TO itab_notas-vbeln_va,

            itab_vbfa_aux-posnn TO itab_notas-aupos.

* << Fim da exclusão

      MODIFY itab_notas INDEX v_index.

      CLEAR itab_vbfa_aux.

      REFRESH itab_vbfa_aux.

    ENDLOOP.

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

    SELECT vbap~mandt vbap~vbeln vbap~posnr

           vbak~vkgrp vbak~erdat vbak~auart

           vbap~werks vbap~ntgew vbap~brgew vbap~shkzg vbap~gewei

           vbap~vrkme vbap~netwr vbap~waerk vbap~kwmeng

           FROM vbak INNER JOIN vbap

                     ON vbak~vbeln = vbap~vbeln

           INTO TABLE itab_ordem

* << Fim da exclusão

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

  SELECT

      a~nrseq

      a~nremb

      a~navio

      a~viatrans

      a~portdest

      a~nrsd

      a~canal

      a~dtprev

      a~dtemb

      a~dtaverb

      a~dtdoc

      a~dtenvcamb

      a~dtcruze

    FROM /pws/zycet001 AS a

    INNER JOIN /pws/zycet002 AS b

      ON a~nrseq = b~nrseq

    INTO TABLE it_seq_embarque

* << Fim da inclusão

           FOR ALL ENTRIES IN itab_notas

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

           WHERE vbap~vbeln EQ itab_notas-vbeln_va

             AND vbap~posnr EQ itab_notas-aupos.

* << Fim da exclusão

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

    WHERE

      a~nrseq    IN s_nrseq  AND

      a~nremb    IN s_nremb  AND

      a~dtprev   IN s_dtprev AND

      a~dtemb    IN s_dtemb  AND

      a~werks    IN s_werks  AND

      b~nfnum    EQ itab_notas-nfnum.

* << Fim da inclusão

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

    LOOP AT itab_ordem.

      CLEAR itab_notas.

      v_index = sy-tabix.

      READ TABLE itab_notas WITH KEY vbeln_va = itab_ordem-vbeln

                                     aupos    = itab_ordem-posnr.

      MOVE: itab_notas-vbeln_vl TO itab_ordem-vbeln_vl,

            itab_notas-vbeln_vf TO itab_ordem-vbeln_vf,

            itab_notas-vbeln_vl TO itab_ordem-objky,

            itab_notas-posnl    TO itab_ordem-posnl,

            itab_notas-refitm   TO itab_ordem-posnf.

      MODIFY itab_ordem INDEX v_index.

    ENDLOOP.

* << Fim da exclusão

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

  CHECK sy-subrc = 0.

* << Fim da inclusão

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

    IF NOT itab_ordem[] IS INITIAL.

* << Fim da exclusão

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

  PERFORM recupera_itens_embarque

    TABLES itab_embarque[]

* << Fim da inclusão

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

      SELECT vbeln bstkd bstdk

             FROM vbkd

             INTO TABLE itab_vbkd

             FOR ALL ENTRIES IN itab_ordem

             WHERE vbeln EQ itab_ordem-vbeln.

* << Fim da exclusão

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

    USING it_seq_embarque.

* << Fim da inclusão

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

      SELECT vbpa~vbeln vbpa~kunnr vbpa~parvw vbpa~adrnr

             adrc~country

             kna1~name1

             FROM vbpa INNER JOIN adrc

                       ON vbpa~adrnr = adrc~addrnumber

                       INNER JOIN kna1

                       ON vbpa~kunnr = kna1~kunnr

             INTO TABLE itab_import

             FOR ALL ENTRIES IN itab_ordem

             WHERE vbpa~vbeln   EQ itab_ordem-vbeln

               AND ( vbpa~parvw   EQ 'AG' OR

                     vbpa~parvw   EQ 'SP' ).

      PERFORM seleciona_dados_ordem.

     SELECT a~mandt    a~nrseq    a~nremb     a~nrsd  a~canal   a~navio

            a~dtprev   a~dtaverb  a~dtenvcamb a~dtdoc a~dtcruze a~dtemb

                                        a~viatrans a~portdest a~despach

               b~vbeln_va b~vbeln_vl b~vbeln_vf b~aupos b~posnl b~posnr

               b~waers    b~inco1    b~docnum   b~nfnum b~werks b~vkgrp

               b~matnr    b~ntgew    b~brgew    b~shkzg b~auart b~gewei

                b~fkimg    b~vrkme    b~fkart    b~bukrs b~vlme b~steuc

                                                                b~land1

                  FROM /pws/zycet001 AS a INNER JOIN /pws/zycet002 AS b

                                                   ON a~nrseq = b~nrseq

                                               INTO TABLE itab_embarque

                                          FOR ALL ENTRIES IN itab_notas

                                WHERE b~vbeln_va EQ itab_notas-vbeln_va

                                  AND b~vbeln_vl EQ itab_notas-vbeln_vl

                                  AND b~vbeln_vf EQ itab_notas-vbeln_vf

                                     AND b~aupos    EQ itab_notas-aupos

                                     AND b~posnl    EQ itab_notas-posnl

                                    AND b~posnr    EQ itab_notas-refitm.

      IF NOT itab_embarque[] IS INITIAL.

* << Fim da exclusão

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

  CHECK NOT itab_embarque[] IS INITIAL.

* << Fim da inclusão

        SELECT nrseq nrre dtlibanu

               FROM /pws/zycet003

               INTO TABLE itab_zycet003

               FOR ALL ENTRIES IN itab_embarque

               WHERE nrseq EQ itab_embarque-nrseq.

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

  IF NOT s_nrre IS INITIAL.

    IF NOT itab_zycet003[] IS INITIAL.

      LOOP AT itab_embarque.

        v_index = sy-tabix.

        READ TABLE itab_zycet003 WITH KEY

          nrseq = itab_embarque-nrseq.

        IF sy-subrc NE 0.

          DELETE itab_embarque INDEX v_index.

        ENDIF.

      ENDLOOP.

    ELSE.

      REFRESH itab_embarque.

    ENDIF.

  ENDIF.

  CHECK NOT itab_embarque[] IS INITIAL.

* << Fim da inclusão

        SELECT nrseq matnr nrbl dtbl house dtlibconemb tipcar

               FROM /pws/zycet047

               INTO TABLE itab_zycet047

               FOR ALL ENTRIES IN itab_embarque

               WHERE nrseq EQ itab_embarque-nrseq

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

                 AND matnr EQ itab_embarque-matnr.

* << Fim da exclusão

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

           AND matnr EQ itab_embarque-matnr

           AND dtbl  IN s_dtbl.

* << Fim da inclusão

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

        PERFORM seleciona_dados_embarque.

* << Fim da exclusão

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

  PERFORM limpa_campos.

  IF NOT s_dtbl IS INITIAL.

    IF NOT itab_zycet047[] IS INITIAL.

      LOOP AT itab_embarque.

        v_index = sy-tabix.

        READ TABLE itab_zycet047 WITH KEY nrseq = itab_embarque-nrseq

                                          matnr = itab_embarque-matnr.

        IF sy-subrc NE 0.

          DELETE itab_embarque INDEX v_index.

        ENDIF.

      ENDLOOP.

    ELSE.

      REFRESH itab_embarque.

* << Fim da inclusão

      ENDIF.

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

  ENDIF.

  CHECK NOT itab_embarque[] IS INITIAL.

* << Fim da inclusão

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

    ENDIF.

* << Fim da exclusão

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

  PERFORM seleciona_ordem_emb.

* << Fim da inclusão

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

  ENDIF.

* << Fim da exclusão

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

  PERFORM seleciona_pedido_compra.

* << Fim da inclusão

ENDFORM.

FORM seleciona_dados_ordem.

  SELECT *

         FROM /pws/zycet265

         INTO TABLE itab_zycet265

         FOR ALL ENTRIES IN itab_ordem

         WHERE vbeln_va EQ itab_ordem-vbeln

           AND vbeln_vl EQ itab_ordem-vbeln_vl.

  SELECT vbpa~vbeln vbpa~kunnr vbpa~parvw kna1~name1

         FROM vbpa INNER JOIN kna1

...

 

...

           WHERE vbrp~vbeln EQ itab_embarque-vbeln_vf

             AND vbrp~posnr EQ itab_embarque-posnr.

  ENDIF.

ENDFORM.

FORM seleciona_re.

  DATA  it_seq_embarque TYPE t_seq_embarques.

  SELECT

      b~nrseq

      b~nremb

      b~navio

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

      b~viatrans

      b~portdest

      b~nrseq

* << Fim da exclusão

      b~viatrans

      b~portdest

      b~nrsd

      b~canal

      b~dtprev

      b~dtemb

      b~dtaverb

      b~dtdoc

      b~dtenvcamb

      b~dtcruze

    FROM /pws/zycet003 AS a

    INNER JOIN /pws/zycet001 AS b

      ON a~nrseq = b~nrseq

    INTO TABLE it_seq_embarque

    WHERE

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

      a~nrre IN s_nrre.

* << Fim da exclusão

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

      a~nrre    IN s_nrre   AND

      a~nrseq   IN s_nrseq  AND

      b~nremb   IN s_nremb  AND

      b~dtprev  IN s_dtprev AND

      b~dtemb   IN s_dtemb  AND

      b~werks   IN s_werks.

* << Fim da inclusão

  CHECK sy-subrc = 0.

  PERFORM recupera_itens_embarque

    TABLES itab_embarque[]

    USING it_seq_embarque.

  IF NOT itab_embarque[] IS INITIAL.

    SELECT nrseq matnr nrbl dtbl house dtlibconemb tipcar

           FROM /pws/zycet047

           INTO TABLE itab_zycet047

           FOR ALL ENTRIES IN itab_embarque

           WHERE nrseq EQ itab_embarque-nrseq

...

 

...

              inclui_par_dt         = space

              inclui_es_saida       = space

         TABLES

              tab_saida             = it_itens_embarque

         EXCEPTIONS

              itens_nao_encontrados = 1.

    CHECK sy-subrc = 0.

  ENDLOOP.

  CLEAR itab_embarque[].

  LOOP AT it_itens_embarque INTO wa_item_embarque.

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

    IF NOT s_ebeln[] IS INITIAL.

      CHECK wa_item_embarque-ebeln IN s_ebeln[].

    ENDIF.

    IF NOT s_vbeln[] IS INITIAL.

      CHECK wa_item_embarque-vbeln_va IN s_vbeln[].

    ENDIF.

* << Fim da inclusão

    MOVE-CORRESPONDING wa_item_embarque TO p_embarque.

    READ TABLE p_seq_embarques INTO wa_seq_embarque

      WITH KEY nrseq = wa_item_embarque-nrseq.

    MOVE:

      wa_seq_embarque-viatrans  TO p_embarque-viatrans,

      wa_seq_embarque-nremb     TO p_embarque-nremb,

      wa_seq_embarque-navio     TO p_embarque-navio,

      wa_seq_embarque-portdest  TO p_embarque-portdest,

      wa_seq_embarque-nrsd      TO p_embarque-nrsd,

      wa_seq_embarque-canal     TO p_embarque-canal,

...

 

...

      wa_seq_embarque-dtcruze   TO p_embarque-dtcruze.

    APPEND p_embarque.

  ENDLOOP.

ENDFORM.

FORM seleciona_dde.

  DATA  it_seq_embarque TYPE t_seq_embarques.

  SELECT

      b~nrseq

      b~nremb

      b~navio

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

      b~viatrans

      b~portdest

      b~nrseq

* << Fim da exclusão

      b~viatrans

      b~portdest

      b~nrsd

      b~canal

      b~dtprev

      b~dtemb

      b~dtaverb

      b~dtdoc

      b~dtenvcamb

      b~dtcruze

    FROM /pws/zycet120 AS a

    INNER JOIN /pws/zycet001 AS b

      ON a~nrseq = b~nrseq

    INTO TABLE it_seq_embarque

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

    WHERE a~nrseqsd IN s_dtdde.

* << Fim da exclusão

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

    WHERE

      a~nrsd    IN s_dtdde  AND

      a~nrseq   IN s_nrseq  AND

      b~nremb   IN s_nremb  AND

      b~dtprev  IN s_dtprev AND

      b~dtemb   IN s_dtemb  AND

      b~werks   IN s_werks.

* << Fim da inclusão

  CHECK sy-subrc = 0.

  PERFORM recupera_itens_embarque

    TABLES itab_embarque[]

    USING it_seq_embarque.

  IF NOT itab_embarque[] IS INITIAL.

    SELECT nrseq matnr nrbl dtbl house dtlibconemb tipcar

           FROM /pws/zycet047

           INTO TABLE itab_zycet047

           FOR ALL ENTRIES IN itab_embarque

           WHERE nrseq EQ itab_embarque-nrseq

...