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.
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
...