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.
7.0
Produto:
Nota
Descrição
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