Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Vinculação
Data/Hora da Publicação: 28/08/2009 00:00:00
Data/Hora Última Alteração: 18/02/2011 17:56:55
Descrição da Nota: VINCULAÇÃO/LIQUIDAÇÃO - ESTORNO PERÍODO FECHADO - DP - RAZÃO ESPECIAL
Sintoma
Ao estornar um DP com liquidação automática através da vinculação, em período fechado, após fazer a
F-02, esta compensando as duas partidas do cliente(normal e razão especial) no clearing do contrato.
Desta forma, quando for vai fazer o clearing da fatura, não encontra partida em aberto. Esta com
erro também na data gravada nos campos /pws/zycbt001-dtvincul e /pws/zycbt030-budat, onde não grava
a data do lançamento e sim a data da vinculação, o que pode gerar erro numa vinculação futura.
Solução
Ao efetuar o clearing do contrato, se for DP, liquidação automática, desflegar o campo PA normais da
F-30, para que compense apenas o item de razão especial. Para gravar a data corretamente, ajustar a
consistência de verificação de período fechado, utilizando o + em vez de S, pois assim já traz uma
data em período aberto.
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 08909 Data: 28/08/2009 Hora: 15:45:43
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 08909
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00010
Agrupamento : 00111
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
03678 - 00001 - 7.0 - 00001 - LIQUIDAÇÃO - DA - CHECK DOS DOCUMENTOS - ESTORNO DAS FATURAS
06474 - 00002 - 7.0 - 00005 - LIQUIDAÇÃO - PONTO DE EXIT LIQ029
07760 - 00003 - 7.0 - 00007 - DA-LIQUIDAÇÃO E VINCULAÇÃO LIQ. AUTOMÁT - NORMAL/ARBITRAGEM/PERFO
07847 - 00004 - 7.0 - 00008 - LIQUIDAÇÃO - ITAB_PARTIDAS PONTOS DE EXIT - DECLARAÇÃO INCLUDE X0
07884 - 00005 - 7.0 - 00008 - LIQUIDAÇÃO - ESTORNO - CLEARING - ZFBDT E ZTERM VAZIOS NO DUPLO C
08536 - 00006 - 7.0 - 00009 - DA-VINCULAÇÃO/LIQUIDAÇÃO-OTIMIZAÇÃO-BUSCA TAXAS/TIPO DOCTO. POR C
----------------------------------------------------------------------------------------------------
VINCULAÇÃO/LIQUIDAÇÃO - ESTORNO PERÍODO FECHADO - DP - RAZÃO ESPECIAL
----------------------------------------------------------------------------------------------------
Palavras Chave:
VINCULAÇÃO/LIQUIDAÇÃO ESTORNO PERÍODO FECHADO DP /PWS/ZYCBT001-DTVINCUL
/PWS/ZYCBT030-BUDAT DP LIQUIDAÇÃO AUTOMÁTICA
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCB_TRANSACAO_F_30_P
REPS /PWS/MZYCB004F01
REPS /PWS/MZYCB004F02
REPS /PWS/MZYCB004X01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCB_TRANSACAO_F_30_P
MODIFICAR MÓDULO DE FUNÇÃO: /PWS/ZYCB_TRANSACAO_F_30_P
CARACTERÍSTICAS
IMPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA VL. PROPOSTO OPCIONAL TRANSF. TEXT
* >> Início da inclusão:
V_PANORMAIS TYPE C ' ' 'X' ' ' Desflega PA Normais = X
V_ZUONR1 TYPE BSEG-ZUONR ' ' 'X' ' ' Nº atribuição
* << Fim da inclusão
TEXTO FONTE
...
PERFORM bdc_screen USING 'SAPMF05A' '0710'.
CONCATENATE 'RF05A-XPOS1(' v_xpos_belnr ')' INTO v_xpos.
IF t_dados-d_newko1 IS INITIAL.
PERFORM bdc_field USING:
'RF05A-AGKON' t_dados-d_newko,
'RF05A-AGKOA' wa_tbsl-koart,
v_xpos 'X'.
IF NOT t_dados-umskz IS INITIAL.
PERFORM bdc_field USING:
'RF05A-AGUMS' t_dados-umskz.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
if v_panormais = 'X'.
perform bdc_field using 'RF05A-XNOPS' ' '.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
endif.
* << Fim da inclusão
v_agkoa = wa_tbsl-koart.
ELSE.
IF v_acc_pre_dp IS INITIAL.
PERFORM bdc_field USING:
'RF05A-AGKON' t_dados-d_newko1,
'RF05A-AGKOA' 'S',
v_xpos 'X'.
v_agkoa = 'S'.
ELSE.
PERFORM bdc_field USING:
'RF05A-AGKON' t_dados-d_newko1,
'RF05A-AGKOA' 'D',
'RF05A-AGUMS' t_dados-agums,
v_xpos 'X'.
* >> Início da exclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
v_agkoa = 'D'.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
if not t_dados-agums is initial and v_panormais = 'X'.
perform bdc_field using 'RF05A-XNOPS' ' '.
endif.
* << Fim da inclusão
ENDIF.
ENDIF.
PERFORM bdc_field USING: 'BDC_OKCODE' '=PA'.
ELSE.
SUBTRACT 1 FROM v_xpos_belnr.
SHIFT v_xpos_belnr LEFT DELETING LEADING '0'.
CONCATENATE 'RF05A-XPOS1(' v_selecao ')' INTO v_xpos.
PERFORM bdc_screen USING: 'SAPMF05A' '0710'.
IF v_debcred = 'C'.
v_xpos_belnr = v_xpos_belnr + 1.
...
...
v_xpos 'X'.
ELSE.
PERFORM bdc_field USING:
'RF05A-AGKON' t_dados-d_newko,
'RF05A-AGKOA' wa_tbsl-koart,
v_xpos 'X'.
ENDIF.
IF NOT t_dados-umskz IS INITIAL.
PERFORM bdc_field USING:
'RF05A-AGUMS' t_dados-umskz.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
if v_panormais = 'X'.
perform bdc_field using 'RF05A-XNOPS' ' '.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
endif.
* << Fim da inclusão
v_agkoa = wa_tbsl-koart.
ELSE.
IF v_acc_pre_dp IS INITIAL.
PERFORM bdc_field USING:
'RF05A-AGKON' t_dados-d_newko1,
'RF05A-AGKOA' 'S',
v_xpos 'X'.
v_agkoa = 'S'.
ELSE.
PERFORM bdc_field USING:
'RF05A-AGKON' t_dados-d_newko1,
'RF05A-AGKOA' 'D',
'RF05A-AGUMS' t_dados-agums,
v_xpos 'X'.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
if not t_dados-agums is initial and v_panormais = 'X'.
perform bdc_field using 'RF05A-XNOPS' ' '.
endif.
* << Fim da inclusão
v_agkoa = 'D'.
ENDIF.
ENDIF.
IF v_debcred <> 'C'.
WHILE v_xpos_belnr > 10.
v_xpos_belnr = v_xpos_belnr - 10.
PERFORM bdc_screen USING 'SAPMF05A' '0608'.
PERFORM bdc_field USING 'BDC_OKCODE' 'P+'.
SHIFT v_xpos_belnr LEFT DELETING LEADING '0'.
ENDWHILE.
...
...
PERFORM bdc_screen USING 'SAPDF05X' '2000'.
PERFORM bdc_field USING 'BDC_OKCODE' 'P+'.
ENDDO.
PERFORM bdc_screen USING 'SAPDF05X' '2000'.
PERFORM bdc_field USING 'BDC_CURSOR' v_xpos_budat.
PERFORM bdc_field USING v_xpos_budat 'X'.
PERFORM bdc_field USING 'BDC_OKCODE' '=GO'.
CLEAR v_cont.
PERFORM bdc_screen USING 'SAPDF05X' '0732'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-VONDT(01)'.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
if not t_dados-dtdocto is initial.
* << Fim da inclusão
WRITE t_dados-dtdocto TO v_dtdocto.
ADD 1 TO v_cont.
CONCATENATE 'RF05A-VONDT(' v_cont ')' INTO v_campo.
CONCATENATE 'RF05A-BISDT(' v_cont ')' INTO v_campo2.
PERFORM bdc_field USING v_campo v_dtdocto.
PERFORM bdc_field USING v_campo2 v_dtdocto.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
endif.
* << Fim da inclusão
LOOP AT t_doctos WHERE tcode = t_dados-tcode
...
...
PERFORM bdc_field USING 'BDC_OKCODE' '=Z+'.
IF total NE 'X'.
PERFORM bdc_screen USING 'SAPDF05X' '3100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'DF05B-PSBET(02)'.
PERFORM bdc_field USING 'BDC_OKCODE' '=Z+'.
ENDIF.
ELSE.
PERFORM bdc_screen USING 'SAPDF05X' '3100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'DF05B-PSBET(02)'.
PERFORM bdc_field USING 'BDC_OKCODE' '=Z+'.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
endif.
if v_filt_atrib = 'X' .
perform bdc_screen using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_CURSOR' 'RF05A-ABPOS'.
perform bdc_field using 'BDC_OKCODE' '=OMX'.
perform bdc_screen using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_CURSOR' 'RF05A-ABPOS'.
perform bdc_field using 'BDC_OKCODE' '=Z-'.
perform bdc_screen using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_SUBSCR' 'SAPDF05X'.
perform bdc_field using 'RF05A-ABPOS' '1'.
perform bdc_field using 'BDC_OKCODE' '=OSU'.
clear v_xpos1.
select single selps from t021r
into v_xpos1
where event = 'SU-AG'
and feldn = 'ZUONR'.
shift v_xpos1 left deleting leading '0'.
while v_xpos1 > 10.
v_xpos1 = v_xpos1 - 10.
perform bdc_screen using 'SAPDF05X' '2000'.
perform bdc_field using 'BDC_OKCODE' 'P+'.
shift v_xpos1 left deleting leading '0'.
endwhile.
concatenate 'RF05A-XPOS1(' v_xpos1 ')' into v_xpos_zuonr.
perform bdc_screen using 'SAPDF05X' '2000'.
perform bdc_field using 'BDC_CURSOR' v_xpos_zuonr.
perform bdc_field using v_xpos_zuonr 'X'.
perform bdc_field using 'BDC_OKCODE' '=GO'.
perform bdc_screen using 'SAPDF05X' '0731'.
perform bdc_field using 'RF05A-SEL01(01)' v_zuonr1.
perform bdc_field using 'BDC_OKCODE' '=GO'.
* << Fim da inclusão
ENDIF.
ELSE.
PERFORM bdc_screen USING 'SAPDF05X' '3100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-ABPOS'.
PERFORM bdc_field USING 'BDC_OKCODE' '=OMX'.
PERFORM bdc_screen USING 'SAPDF05X' '3100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-ABPOS'.
PERFORM bdc_field USING 'BDC_OKCODE' '=Z+'.
ENDIF.
PERFORM bdc_screen USING 'SAPDF05X' '3100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-ABPOS'.
PERFORM bdc_field USING: 'BDC_OKCODE' '=DBR'.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
perform bdc_screen using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_CURSOR' 'RF05A-ABPOS'.
perform bdc_field using 'BDC_OKCODE' '=OMX'.
* << Fim da inclusão
PERFORM bdc_screen USING 'SAPDF05X' '3100'.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
perform bdc_field using 'BDC_CURSOR' 'RF05A-ABPOS'.
perform bdc_field using 'BDC_OKCODE' '=Z+'.
perform bdc_screen using 'SAPDF05X' '3100'.
* << Fim da inclusão
IF filtra EQ 'X' AND
so_segundo EQ 'X'.
PERFORM bdc_field USING: 'BDC_CURSOR' 'DF05B-PSDIF(02)',
'BDC_OKCODE' '=PI'.
ELSE.
PERFORM bdc_field USING: 'BDC_CURSOR' 'DF05B-PSDIF(01)',
'BDC_OKCODE' '=PI'.
ENDIF.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
perform bdc_screen using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_CURSOR' 'RF05A-ABPOS'.
perform bdc_field using 'BDC_OKCODE' '=Z+'.
* << Fim da inclusão
PERFORM bdc_screen USING 'SAPDF05X' '3100'.
IF t_dados-flag_nc EQ 'X'.
PERFORM bdc_field USING: 'BDC_OKCODE' '=BU'.
ELSE.
PERFORM bdc_field USING: 'BDC_OKCODE' '=BS'.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_P
perform bdc_field using: 'BDC_OKCODE' '=BU'.
* << Fim da inclusão
ENDIF.
PERFORM verifica_empresas USING t_dados-bukrs
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB004F01
...
endif.
v_monat = p_monat.
v_gjahr = p_gjahr.
v_conta = p_konto.
while v_ok <> 'S'.
add 1 to v_cont.
call function 'FI_PERIOD_CHECK'
exporting
i_bukrs = p_bukrs
i_gjahr = v_gjahr
* >> Início da exclusão: FORM DATA_ESTORNO
i_koart = 'S'
i_konto = v_conta
* << Fim da exclusão
* >> Início da inclusão: FORM DATA_ESTORNO
i_koart = '+'
* << Fim da inclusão
i_monat = v_monat
exceptions
error_period = 1
error_period_acc = 2
others = 3.
if sy-subrc <> 0.
if v_monat eq 12.
v_monat = 1.
else.
add 1 to v_monat.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB004F02
...
elseif p_agkoa eq 'D'.
perform unlock_cliente using itab_zycbe033-d_newko
itab_zycbe033-bukrs.
endif.
perform busca_exit.
read table itab_zyglt100 with key zexit = 'LIQ029'.
if sy-subrc eq 0 and not itab_zyglt100-zexit_ativa is initial.
perform (itab_zyglt100-formulario)
in program (itab_zyglt100-programa).
else.
* >> Início da inclusão: FORM CLEARING
clear v_panormais.
if /pws/zycbe001-tpcontr(1) = 'D' and
/pws/zycbt089-f_cont_vinc = 'F' and
p_texto = text-189.
v_panormais = 'X'.
endif.
* << Fim da inclusão
if /pws/zycbt084-cont_desmemb is initial.
if v_periodo_aberto is initial and
not ( itab_zycbt006-v_armda = 'X' and
itab_zycbt006-v_performance = ' ' ).
call function '/PWS/ZYCB_TRANSACAO_F_30_P'
exporting
v_modo = v_modo_bi
* >> Início da inclusão: FORM CLEARING
v_panormais = v_panormais
* << Fim da inclusão
tables
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt032 = itab_zycbt032
t_doctos = itab_zycbt036
exceptions
campo_em_branco = 1
periodo_fechado = 2
others = 3.
else.
...
...
endif.
else.
v_total = 'X'.
endif.
call function '/PWS/ZYCB_TRANSACAO_F_30_P'
exporting
filtra = 'X'
total = v_total
v_modo = v_modo_bi
v_vinc_tot = 'X'
* >> Início da inclusão: FORM CLEARING
v_panormais = v_panormais
* << Fim da inclusão
tables
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt032 = itab_zycbt032
t_doctos = itab_zycbt036
exceptions
campo_em_branco = 1
periodo_fechado = 2
others = 3.
endif.
...
...
elseif p_agkoa eq 'D'.
perform unlock_cliente using itab_zycbe033-d_newko
itab_zycbe033-bukrs.
perform unlock_cliente using itab_zycbe033-d_newko
itab_zycbt006-bukrs.
elseif p_agkoa eq 'K'.
perform unlock_fornecedor using itab_zycbe033-d_newko
itab_zycbe033-bukrs.
perform unlock_fornecedor using itab_zycbe033-d_newko
itab_zycbt006-bukrs.
* >> Início da inclusão: FORM CLEARING_PERF
endif.
clear v_panormais.
if /pws/zycbe001-tpcontr(1) = 'D' and
/pws/zycbt089-f_cont_vinc = 'F' and
p_texto = text-189.
v_panormais = 'X'.
* << Fim da inclusão
endif.
if /pws/zycbt084-cont_desmemb is initial.
call function '/PWS/ZYCB_TRANSACAO_F_30_P'
exporting
v_modo = v_modo_bi
* >> Início da inclusão: FORM CLEARING_PERF
v_panormais = v_panormais
* << Fim da inclusão
tables
t_dados = itab_zycbe033
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB004X01
...
vljur_acc LIKE /pws/zycbt006-vljur_acc,
vljur_ace LIKE /pws/zycbt006-vljur_ace,
END OF itab_zycbt005_t.
DATA: BEGIN OF itab_erro OCCURS 0,
vbeln LIKE /pws/zycbt030-vbeln,
msg LIKE /pws/zycbt032-msg,
END OF itab_erro.
DATA: BEGIN OF itab_partidas OCCURS 0.
INCLUDE STRUCTURE /pws/zycbe033.
DATA: END OF itab_partidas.
* >> Início da inclusão:
data: v_panormais type c.
* << Fim da inclusão
DATA: END OF COMMON PART.