Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Valores Mantidos no Exterior
Data/Hora da Publicação: 28/07/2011 00:00:00
Data/Hora Última Alteração: 28/07/2011 15:54:24
Descrição da Nota: VME ASSOCIAÇÃO DE ORDEM DE PAGAMENTO BLOQUEIO DE CONTA
Sintoma
Ao estornar uma Associação de ordem de pagamento de VME quando a conta do cliente está bloqueada,
o sistema está executando a FBRA do documento e somente depois verifica que a conta está bloqueada
e exibe mensagem. Dessa forma o documento já foi estornado porém o valor da Ordem não volta no
Saldo e não é possível associar novamente.
No processo de estorno de VME - Fatura de Exportação o problema está ocorrendo quando está sendo
executado a F110 (rotina de pagamento do SAP) e ao mesmo tempo é processado o estorno da fatura.
O sistema estorna a Ordem de Pagamento, faz o Clearing da conta do cliente e somente depois exibe
mensagem de que a conta está bloqueada. Quando a conta já está bloqueada e é processado o estorno
do VME o sistema já dá mensagem de conta bloqueada.
Solução
O Sistema agora identifica que a conta está bloqueada antes de iniciar a contabilização no Processo
de Estorno da Associação de Ordem de Pagamento de VME e no Processo de Estorno do VME.
8.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 11361 Data: 28/07/2011 Hora: 14:59:43
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 11361
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 8.0
Pacote : 00008
Agrupamento : 00079
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
04316 - 00001 - 7.0 - 00002 - ASSOCIAÇÃO DE ORDENS DE PAGAMENTO - DUMP
09574 - 00002 - 8.0 - 00001 - ASSOCIAÇÃO DE VALORES MANTIDOS NO EXTERIOR - HOMOLOGAÇÃO PACOTE
11123 - 00003 - 8.0 - 00007 - ASSOCIAÇÃO DE ORDENS DE PAGAMENTO, CRIAÇÃO DE EXIT
----------------------------------------------------------------------------------------------------
VME ASSOCIAÇÃO DE ORDEM DE PAGAMENTO BLOQUEIO DE CONTA
----------------------------------------------------------------------------------------------------
Palavras Chave:
ASSOCIAÇÃO, ORDEM DE PAGAMENTO, VME, BLOQUEIO DE CONTA
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCB_ENQUEUE_CONTAS
REPS /PWS/LZYCBGF5TOP
REPS /PWS/MZYCB035F01
REPS /PWS/MZYCB035F02
REPS /PWS/MZYCB035T02
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCB_ENQUEUE_CONTAS
FUNCTION /PWS/ZYCB_ENQUEUE_CONTAS.
CONSTANTS:
c_dequeue(8) TYPE c VALUE 'DEQUEUE_',
c_enqueue(8) TYPE c VALUE 'ENQUEUE_',
c_razao(7) TYPE c VALUE 'EFSKB1A' ,
c_cliente(7) TYPE c VALUE 'EFKNB1A' .
* >> Início da exclusão: FUNCTION /PWS/ZYCB_ENQUEUE_CONTAS
DATA: v_funcao(15) TYPE c.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCB_ENQUEUE_CONTAS
DATA: v_funcao(15) TYPE c,
v_bloqueio(1) TYPE c.
CLEAR: lt042x-bukrs,
lt042x-koart,
lt042x-konto.
* << Fim da inclusão
FIELD-SYMBOLS <fs_zycbe224> TYPE /pws/zycbe224.
IF itab_zycbt224[] IS INITIAL.
RAISE zycbe224_null.
ENDIF.
IF i_bloqueia IS INITIAL.
v_funcao = c_dequeue.
ELSE.
v_funcao = c_enqueue.
ENDIF.
SORT itab_zycbt224.
...
...
mode_knb1 = <fs_zycbe224>-modo
kunnr = <fs_zycbe224>-saknr
bukrs = <fs_zycbe224>-bukrs
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
ENDCASE.
IF sy-subrc NE 0.
<fs_zycbe224>-uname = sy-msgv1.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_ENQUEUE_CONTAS
ELSE.
IF v_funcao(8) = c_enqueue.
IF <fs_zycbe224>-koart = 'D'.
PERFORM verifica_bloqueio_f110 USING <fs_zycbe224>-bukrs
'D'
<fs_zycbe224>-saknr
CHANGING v_bloqueio.
IF v_bloqueio = 'X'.
<fs_zycbe224>-uname = 'Programa Pagto.'.
ENDIF.
ENDIF.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FUNCTION /PWS/ZYCB_ENQUEUE_CONTAS
ENDIF.
* << Fim da inclusão
ENDLOOP.
LOOP AT itab_zycbt224
TRANSPORTING NO FIELDS
WHERE uname NE space.
ENDLOOP.
IF sy-subrc EQ 0.
RAISE erro_bloqueio.
ENDIF.
ENDFUNCTION.
* >> Início da inclusão:
FORM verifica_bloqueio_f110 USING s02_bukrs
s02_koart
s02_konto
CHANGING p_bloqueio.
p_bloqueio = ''.
CHECK s02_bukrs NE lt042x-bukrs
OR s02_koart NE lt042x-koart
OR s02_konto NE lt042x-konto.
SELECT * FROM t042x WHERE bukrs EQ s02_bukrs
AND koart EQ s02_koart
AND laufi NE 'F100XX'.
SELECT SINGLE * FROM reguv WHERE laufd = t042x-laufd
AND laufi = t042x-laufi.
IF sy-subrc NE 0
OR reguv-xecht EQ 'A'
OR reguv-xecht EQ 'X'.
DELETE FROM t042x WHERE laufd = t042x-laufd
AND laufi = t042x-laufi.
ELSE.
IF reguv-xecht EQ space
AND ( reguv-xvore EQ 'A' OR
reguv-xvore EQ 'X' OR
reguv-xvore EQ space ).
DELETE FROM t042x WHERE laufd = t042x-laufd
AND laufi = t042x-laufi.
ELSE.
f110id-laufd = t042x-laufd.
f110id-laufi = t042x-laufi.
IMPORT buktab slktab sldtab
FROM DATABASE rfdt(fb) ID f110id.
CHECK sy-subrc = 0.
IF s02_koart = 'D'.
LOOP AT sldtab WHERE vonkt LE s02_konto
AND biskt GE s02_konto.
p_bloqueio = 'X'.
ENDLOOP.
ENDIF.
IF s02_koart = 'K'.
LOOP AT slktab WHERE vonkt LE s02_konto
AND biskt GE s02_konto.
p_bloqueio = 'X'.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
ENDSELECT.
lt042x-bukrs = s02_bukrs.
lt042x-koart = s02_koart.
lt042x-konto = s02_konto.
ENDFORM.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYCBGF5TOP
function-pool /pws/zycbgf5
message-id /pws/zycbm.
tables: /pws/zycbt001,
/pws/zycbt007,
* >> Início da exclusão:
/pws/zycbt011.
* << Fim da exclusão
* >> Início da inclusão:
/pws/zycbt011,
t042x,
reguv.
* << Fim da inclusão
data: begin of itab_zycbt002 occurs 0.
include structure /pws/zycbt002.
data: end of itab_zycbt002.
data: begin of itab_zycbt003 occurs 0.
include structure /pws/zycbt003.
data: end of itab_zycbt003.
data: begin of itab_zycbt009 occurs 0.
include structure /pws/zycbt009.
data: end of itab_zycbt009.
data: begin of itab_zycbt010 occurs 0.
include structure /pws/zycbt010.
data: end of itab_zycbt010.
data: begin of itab_tcurx occurs 0.
include structure tcurx.
data: end of itab_tcurx.
* >> Início da inclusão:
data: begin of f110id,
progr(4) type c value 'F110',
laufd like f110v-laufd,
laufi like f110v-laufi,
objkt(4) type c value 'PARM',
end of f110id.
data: begin of lt042x,
bukrs like t001-bukrs,
koart like bseg-koart,
konto like bseg-lifnr,
end of lt042x.
data: begin of buktab occurs 100,
bukrs like t001-bukrs,
bugrp(2) type n,
land1 like t001-land1,
zbukr like t001-bukrs,
xkwes(1) type c,
xdwes(1) type c,
end of buktab.
data: begin of slktab occurs 10,
vonkt(10) type c,
biskt(10) type c,
xpruf(1) type c,
end of slktab.
data: begin of sldtab occurs 10,
vonkt(10) type c,
biskt(10) type c,
xpruf(1) type c,
end of sldtab.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB035F01
...
CASE ok_code.
WHEN 'MODO_BI'.
PERFORM seleciona_modo_bi.
WHEN 'SAVE'.
PERFORM salva_dados.
ENDCASE.
ENDFORM.
FORM user_command_0102.
DATA
v_linhas TYPE sy-tabix.
* >> Início da inclusão: FORM USER_COMMAND_0102
field-symbols:
<fs_zycbe226_del> like line of itab_zycbt226_del.
* << Fim da inclusão
CASE ok_code.
WHEN 'P--' OR 'P-' OR 'P++' OR 'P+'.
DESCRIBE TABLE itab_zycbt228a LINES v_linhas.
PERFORM paginacao_table_control
USING v_linhas
CHANGING tc_ordens-top_line.
ok_code = 'DUMMY'.
WHEN 'MARK'.
PERFORM marca_desmarca
USING 'MARK' 'X'
...
...
PERFORM marca_desmarca
USING 'MARK' space
CHANGING itab_zycbt228a.
ok_code = 'DUMMY'.
WHEN 'DEL_MK'.
PERFORM elimina_itens_marcados
USING 'MARK' 'OPER' 'X'
CHANGING itab_zycbt228a.
LOOP AT itab_zycbt228a ASSIGNING <fs_zycbt228a>.
IF <fs_zycbt228a>-oper = 'D'.
* >> Início da inclusão: FORM USER_COMMAND_0102
LOOP AT itab_zycbt226 ASSIGNING <fs_zycbe226_del>
WHERE nrseq = <fs_zycbt228a>-nrseq.
APPEND <fs_zycbe226_del> TO itab_zycbt226_del.
ENDLOOP.
* << Fim da inclusão
DELETE itab_zycbt226 WHERE nrseq = <fs_zycbt228a>-nrseq.
ENDIF.
ENDLOOP.
ok_code = 'DUMMY'.
ENDCASE.
ENDFORM.
FORM seleciona_modo_bi.
DATA:
v_answer(1) TYPE c,
itab_modo TYPE STANDARD TABLE OF spopli,
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB035F02
...
exit.
endif.
endform.
form bloqueia_contas.
constants
c_conta_cliente type koart value 'D'.
data:
wa_zycbe224 like line of itab_zycbe224,
v_saldo like /pws/zycbe227a-vlsltrans.
field-symbols:
* >> Início da exclusão: FORM BLOQUEIA_CONTAS
<fs_zycbe224> like line of itab_zycbe224,
<fs_zycbt209> like line of itab_zycbt209,
<fs_zycbt226> like line of itab_zycbt226,
<fs_zycbt228a> like line of itab_zycbt228a.
* << Fim da exclusão
* >> Início da inclusão: FORM BLOQUEIA_CONTAS
<fs_zycbe224> like line of itab_zycbe224,
<fs_zycbt209> like line of itab_zycbt209,
<fs_zycbt226> like line of itab_zycbt226,
<fs_zycbt228a> like line of itab_zycbt228a,
<fs_zycbt226_del> like line of itab_zycbt226_del,
<fs_zycbt228_del> like line of itab_zycbt228a.
* << Fim da inclusão
clear: itab_zycbe224.
refresh: itab_zycbe224.
wa_zycbe224-mandt = sy-mandt.
wa_zycbe224-modo = c_modo_bloqueio.
if wa_controle-processo = c_flag_embarque.
v_saldo = /pws/zycbe227a-vlsltrans.
loop at itab_zycbt209 assigning <fs_zycbt209>.
check <fs_zycbt209>-saldo > 0.
perform verifica_conta_itab_zycbe224
using
...
...
<fs_zycbt226>-bukrs
'D'
<fs_zycbt226>-kunag
itab_zycbe224.
check sy-subrc <> 0.
wa_zycbe224-bukrs = <fs_zycbt226>-bukrs.
wa_zycbe224-saknr = <fs_zycbt226>-kunag.
append wa_zycbe224 to itab_zycbe224.
endif.
endloop.
* >> Início da inclusão: FORM BLOQUEIA_CONTAS
wa_zycbe224-koart = c_conta_cliente.
loop at itab_zycbt228a assigning <fs_zycbt228_del>.
read table itab_zycbt226_del
with table key nrseq = <fs_zycbt228_del>-nrseq
assigning <fs_zycbt226_del>.
if sy-subrc = 0.
perform verifica_conta_itab_zycbe224
using
<fs_zycbt226_del>-bukrs
'D'
<fs_zycbt226_del>-kunag
itab_zycbe224.
check sy-subrc <> 0.
wa_zycbe224-bukrs = <fs_zycbt226_del>-bukrs.
wa_zycbe224-saknr = <fs_zycbt226_del>-kunag.
append wa_zycbe224 to itab_zycbe224.
endif.
endloop.
* << Fim da inclusão
perform verifica_bloqueio changing itab_zycbe224.
loop at itab_zycbe224 transporting no fields where uname <> space.
exit.
endloop.
if sy-subrc = 0.
call function '/PWS/ZYCB_ENQUEUE_CONTAS'
exporting
i_bloqueia = 'X'
tables
itab_zycbt224 = itab_zycbe224
exceptions
zycbe224_null = 1
erro_bloqueio = 2
others = 3.
if sy-subrc <> 0.
* >> Início da exclusão: FORM BLOQUEIA_CONTAS
exit.
* << Fim da exclusão
* >> Início da inclusão: FORM BLOQUEIA_CONTAS
else.
* << Fim da inclusão
endif.
endif.
loop at itab_zycbe224 assigning <fs_zycbe224> where uname <> space.
call function 'MESSAGE_STORE'
exporting
arbgb = c_grupo_mensagem
msgty = 'E'
msgv1 = <fs_zycbe224>-saknr
msgv2 = <fs_zycbe224>-bukrs
msgv3 = <fs_zycbe224>-uname
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB035T02
...
wa_zycbt030 type t_s_zycbt030,
wa_zycbt124 type t_s_zycbt124,
itab_zycbt209 type t_t_zycbt209,
itab_zycbt226 type t_t_zycbt226,
itab_zycbt227 type t_t_zycbt227,
itab_zycbt228 type t_t_zycbt228,
itab_zycbt229 type t_t_zycbt229,
itab_zycbt230 type t_t_zycbt230,
itab_zycbt228a type t_t_zycbt228a,
itab_zycet001 type t_t_zycet001,
* >> Início da exclusão:
wa_zycbe228a_comp type t_s_zycbe228a_comp.
* << Fim da exclusão
* >> Início da inclusão:
wa_zycbe228a_comp type t_s_zycbe228a_comp,
itab_zycbt226_del type t_t_zycbt226.
* << Fim da inclusão
data:begin of itab_zycbt226a occurs 0,
nrseq type /pws/zycbt226-nrseq,
gsberf type /pws/zycbt226-gsberf,
bukrs type /pws/zycbt226-bukrs,
werks type /pws/zycbt226-werks,
j_1bbranch type /pws/zycbt226-j_1bbranch,
kunag type /pws/zycbt226-kunag,
waers type /pws/zycbt226-waers,
sld_associar type /pws/zycbt226-sld_associar,
dtcredext type /pws/zycbt226-dtcredext,
...