Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Vinculação
Data/Hora da Publicação: 01/08/2008 00:00:00
Data/Hora Última Alteração: 11/03/2010 10:04:36
Descrição da Nota: VINCULAÇÃO LIQUIDAÇÃO AUTOMÁTICA/LIQUIDAÇÃO - CHECK DOCUMENTOS CONTÁBEIS
Sintoma
Ao efetuar a vinculação com liquidação automática ou liquidação, não esta consistindo corretamente a
verificação dos documentos contábeis.
Solução
Tratar para considerar tanto documentos da 226 como da 030, verificando se existe saldo na tabela.
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 07067 Data: 01/08/2008 Hora: 13:11:18
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 07067
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00006
Agrupamento : 00058
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
VINCULAÇÃO LIQUIDAÇÃO AUTOMÁTICA/LIQUIDAÇÃO - CHECK DOCUMENTOS CONTÁBEIS
----------------------------------------------------------------------------------------------------
Palavras Chave:
VINCULAÇÃO LIQUIDAÇÃO AUTOMÁTICA/LIQUIDAÇÃO CHECK DOCUMENTOS CONTÁBEI
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCB004F03
REPS /PWS/MZYCB009F04
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB004F03
...
gsberf = p_vinculacao-gsberf
ASSIGNING <fs_zycbt017>.
READ TABLE p_itab_zycbt030
WITH KEY
nrinvoic = p_vinculacao-nrinvoic
nrparcf = p_vinculacao-nrparcf
gsberf = p_vinculacao-gsberf
ASSIGNING <fs_zycbt030>.
IF <fs_zycbt017> IS ASSIGNED AND
<fs_zycbt030> IS ASSIGNED.
* >> Início da exclusão: FORM DOCUMENTO_FATURA
READ TABLE itab_zycbt226
WITH KEY
nrinvoic = p_vinculacao-nrinvoic
nrparcf = p_vinculacao-nrparcf
gsberf = p_vinculacao-gsberf
ASSIGNING <fs_zycbt226>.
IF <fs_zycbt226> IS ASSIGNED.
* << Fim da exclusão
* >> Início da inclusão: FORM DOCUMENTO_FATURA
SORT itab_zycbt226 BY nrinvoic nrparcf gsberf belnr_op belnr_op2.
LOOP AT itab_zycbt226 ASSIGNING <fs_zycbt226>
WHERE nrinvoic = p_vinculacao-nrinvoic
AND nrparcf = p_vinculacao-nrparcf
AND gsberf = p_vinculacao-gsberf.
ENDLOOP.
IF <fs_zycbt226> IS ASSIGNED AND
NOT /pws/zyglt009-comp_aut_cc IS INITIAL.
* << Fim da inclusão
IF NOT <fs_zycbt226>-belnr_op2 IS INITIAL.
ASSIGN <fs_zycbt226>-belnr_op2 TO <fs_belnr>.
ASSIGN <fs_zycbt226>-dtlancto2 TO <fs_budat>.
ELSEIF NOT <fs_zycbt226>-belnr_op IS INITIAL.
ASSIGN <fs_zycbt226>-belnr_op TO <fs_belnr>.
ASSIGN <fs_zycbt226>-dtlancto TO <fs_budat>.
* >> Início da inclusão: FORM DOCUMENTO_FATURA
ENDIF.
PERFORM adiciona_documentos
USING
<fs_zycbt017>-bukrs
<fs_belnr>
<fs_budat>
'S'.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FORM DOCUMENTO_FATURA
ELSE.
* << Fim da exclusão
* >> Início da inclusão: FORM DOCUMENTO_FATURA
READ TABLE itab_zycbt030 WITH KEY nrinvoic = p_vinculacao-nrinvoic
nrparcf = p_vinculacao-nrparcf
gsberf = p_vinculacao-gsberf.
IF itab_zycbt030-vlsltrans > 0.
* << Fim da inclusão
ASSIGN <fs_zycbt030>-budat TO <fs_budat>.
IF <fs_zycbt030>-belnr6 IS INITIAL.
ASSIGN <fs_zycbt030>-belnr TO <fs_belnr>.
ELSE.
ASSIGN <fs_zycbt030>-belnr6 TO <fs_belnr>.
ENDIF.
* >> Início da exclusão: FORM DOCUMENTO_FATURA
ENDIF.
* << Fim da exclusão
PERFORM adiciona_documentos
USING
<fs_zycbt017>-bukrs
<fs_belnr>
<fs_budat>
'S'.
* >> Início da inclusão: FORM DOCUMENTO_FATURA
ENDIF.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM adiciona_documentos
USING
value(p_bukrs) TYPE bseg-bukrs
value(p_belnr) TYPE bseg-belnr
value(p_dtdocto) TYPE bseg-augdt
value(p_shkzg) TYPE bseg-shkzg.
DATA:
wa_documento TYPE t_documento,
...
...
IF sy-subrc EQ 0.
SELECT nrinvoic nrparcf vbeln gsberf belnr belnr6 budat
FROM /pws/zycbt030
INTO TABLE p_itab_zycbt030
FOR ALL ENTRIES IN p_itab_zycbt017
WHERE
nrinvoic EQ p_itab_zycbt017-nrinvoic AND
nrparcf EQ p_itab_zycbt017-nrparcf AND
gsberf EQ p_itab_zycbt017-gsberf AND
vlslliq GT 0.
* >> Início da inclusão: FORM SELECIONA_FATURA
SELECT * FROM /pws/zycbt030 INTO TABLE itab_zycbt030
FOR ALL ENTRIES IN p_itab_zycbt030
WHERE nrinvoic EQ p_itab_zycbt030-nrinvoic AND
nrparcf EQ p_itab_zycbt030-nrparcf AND
gsberf EQ p_itab_zycbt030-gsberf.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM seleciona_liquidacao_andamento
USING
p_itab_vinculacao TYPE t_itab_vinculacao
CHANGING
p_itab_zycbt209 TYPE t_itab_zycbt209.
CHECK NOT p_itab_vinculacao IS INITIAL.
SELECT
bukrs nrinvoic belnr dtincl gsberf nrparcf saldo belnr2 dtbelnr
koart umskz hkont
FROM /pws/zycbt209
INTO TABLE p_itab_zycbt209
FOR ALL ENTRIES IN p_itab_vinculacao
WHERE
nrinvoic EQ p_itab_vinculacao-nrinvoic AND
gsberf EQ p_itab_vinculacao-gsberf AND
nrparcf EQ p_itab_vinculacao-nrparcf AND
...
...
p_itab_documento TYPE t_itab_documento
CHANGING
p_itab_documento_erro TYPE t_itab_documento.
TYPES
t_itab_bseg TYPE SORTED TABLE OF t_documento
WITH NON-UNIQUE KEY bukrs belnr gjahr.
FIELD-SYMBOLS <fs_documento> TYPE t_documento.
DATA:
itab_bseg TYPE t_itab_bseg,
v_erro(1) TYPE c VALUE space.
* >> Início da exclusão: FORM VERIFICA_DOCUMENTOS_SAP
CHECK NOT /pws/zyglt009-comp_aut_cc IS INITIAL.
* << Fim da exclusão
CHECK NOT p_itab_documento IS INITIAL.
SELECT bukrs belnr gjahr shkzg
FROM bseg
INTO TABLE itab_bseg
FOR ALL ENTRIES IN p_itab_documento
WHERE
bukrs EQ p_itab_documento-bukrs AND
belnr EQ p_itab_documento-belnr AND
gjahr EQ p_itab_documento-gjahr AND
shkzg EQ p_itab_documento-shkzg AND
* >> Início da exclusão: FORM VERIFICA_DOCUMENTOS_SAP
augbl EQ space.
* << Fim da exclusão
* >> Início da inclusão: FORM VERIFICA_DOCUMENTOS_SAP
augbl EQ space AND
wrbtr GT 0.
* << Fim da inclusão
LOOP AT p_itab_documento ASSIGNING <fs_documento>.
READ TABLE itab_bseg
WITH KEY
bukrs = <fs_documento>-bukrs
belnr = <fs_documento>-belnr
gjahr = <fs_documento>-gjahr
TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
INSERT <fs_documento> INTO TABLE p_itab_documento_erro.
ENDIF.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009F04
...
gsberf EQ p_itab_fatura-gsberf.
IF sy-subrc EQ 0.
SELECT nrinvoic nrparcf vbeln gsberf belnr belnr6 budat
belnr_t budat_t
FROM /pws/zycbt030
INTO TABLE p_itab_zycbt030
FOR ALL ENTRIES IN p_itab_zycbt017
WHERE
nrinvoic EQ p_itab_zycbt017-nrinvoic AND
nrparcf EQ p_itab_zycbt017-nrparcf AND
* >> Início da exclusão: FORM SELECIONA_FATURA
gsberf EQ p_itab_zycbt017-gsberf.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_FATURA
gsberf EQ p_itab_zycbt017-gsberf AND
vlslliq GT 0.
SELECT * FROM /pws/zycbt030 INTO TABLE itab_zycbt030
FOR ALL ENTRIES IN p_itab_zycbt030
WHERE nrinvoic EQ p_itab_zycbt030-nrinvoic AND
nrparcf EQ p_itab_zycbt030-nrparcf AND
gsberf EQ p_itab_zycbt030-gsberf.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM SELECIONA_FATURA
IF NOT itab_zycbt005[] IS INITIAL.
SELECT * FROM /pws/zycbt226
INTO TABLE itab_zycbt226
FOR ALL ENTRIES IN itab_zycbt005
WHERE nrinvoic = itab_zycbt005-nrinvoic
AND nrparcf = itab_zycbt005-nrparcf
AND gsberf = itab_zycbt005-gsberf
AND sld_exterior > 0.
SORT itab_zycbt226 BY nrinvoic nrparcf gsberf belnr_op belnr_op2.
ENDIF.
* << Fim da inclusão
ENDFORM.
FORM seleciona_liquidacao_andamento
USING
p_itab_fatura TYPE t_itab_fatura
CHANGING
p_itab_zycbt209 TYPE t_itab_zycbt209.
CHECK NOT p_itab_fatura IS INITIAL.
SELECT
bukrs nrinvoic belnr dtincl gsberf nrparcf saldo belnr2 dtbelnr
FROM /pws/zycbt209
...
...
USING
value(p_fatura) TYPE t_fatura
p_itab_zycbt017 TYPE t_itab_zycbt017
p_itab_zycbt030 TYPE t_itab_zycbt030.
FIELD-SYMBOLS:
<fs_belnr> TYPE bseg-belnr,
<fs_budat> TYPE bkpf-budat,
<fs_zycbt017> TYPE t_zycbt017,
<fs_zycbt030> TYPE t_zycbt030.
CHECK NOT p_fatura IS INITIAL.
* >> Início da exclusão: FORM DOCUMENTO_FATURA
IF NOT itab_zycbt005[] IS INITIAL.
SELECT * FROM /pws/zycbt226
INTO TABLE itab_zycbt226
FOR ALL ENTRIES IN itab_zycbt005
WHERE nrinvoic = itab_zycbt005-nrinvoic
AND nrparcf = itab_zycbt005-nrparcf
AND gsberf = itab_zycbt005-gsberf.
ENDIF.
* << Fim da exclusão
READ TABLE p_itab_zycbt017
WITH KEY
nrinvoic = p_fatura-nrinvoic
nrparcf = p_fatura-nrparcf
gsberf = p_fatura-gsberf
ASSIGNING <fs_zycbt017>.
READ TABLE p_itab_zycbt030
WITH KEY
nrinvoic = p_fatura-nrinvoic
nrparcf = p_fatura-nrparcf
gsberf = p_fatura-gsberf
ASSIGNING <fs_zycbt030>.
IF <fs_zycbt017> IS ASSIGNED AND
<fs_zycbt030> IS ASSIGNED.
LOOP AT itab_zycbt226 ASSIGNING <fs_zycbt226>
WHERE nrinvoic = p_fatura-nrinvoic
AND nrparcf = p_fatura-nrparcf
AND gsberf = p_fatura-gsberf.
ENDLOOP.
* >> Início da exclusão: FORM DOCUMENTO_FATURA
IF <fs_zycbt226> IS ASSIGNED.
* << Fim da exclusão
* >> Início da inclusão: FORM DOCUMENTO_FATURA
IF <fs_zycbt226> IS ASSIGNED AND
NOT /pws/zyglt009-comp_aut_cc IS INITIAL.
* << Fim da inclusão
IF NOT <fs_zycbt226>-belnr_op2 IS INITIAL.
ASSIGN <fs_zycbt226>-belnr_op2 TO <fs_belnr>.
ASSIGN <fs_zycbt226>-dtlancto2 TO <fs_budat>.
ELSEIF NOT <fs_zycbt226>-belnr_op IS INITIAL.
ASSIGN <fs_zycbt226>-belnr_op TO <fs_belnr>.
ASSIGN <fs_zycbt226>-dtlancto TO <fs_budat>.
* >> Início da inclusão: FORM DOCUMENTO_FATURA
ENDIF.
PERFORM adiciona_documentos
USING
<fs_zycbt017>-bukrs
<fs_belnr>
<fs_budat>
'S'.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FORM DOCUMENTO_FATURA
ELSE.
* << Fim da exclusão
* >> Início da inclusão: FORM DOCUMENTO_FATURA
READ TABLE itab_zycbt030 WITH KEY nrinvoic = p_fatura-nrinvoic
nrparcf = p_fatura-nrparcf
gsberf = p_fatura-gsberf.
IF itab_zycbt030-vlsltrans > 0.
ASSIGN <fs_zycbt030>-budat TO <fs_budat>.
* << Fim da inclusão
IF <fs_zycbt030>-belnr6 IS INITIAL.
ASSIGN <fs_zycbt030>-belnr TO <fs_belnr>.
ELSE.
ASSIGN <fs_zycbt030>-belnr6 TO <fs_belnr>.
ENDIF.
* >> Início da exclusão: FORM DOCUMENTO_FATURA
ENDIF.
* << Fim da exclusão
PERFORM adiciona_documentos
USING
<fs_zycbt017>-bukrs
<fs_belnr>
<fs_budat>
'S'.
* >> Início da inclusão: FORM DOCUMENTO_FATURA
ENDIF.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM documento_liquidacao_andamento
USING
value(p_fatura) TYPE t_fatura
p_itab_zycbt209 TYPE t_itab_zycbt209
CHANGING
p_saldo TYPE t_fatura-saldo.
FIELD-SYMBOLS:
<fs_belnr> TYPE bseg-belnr,
...
...
CHECK NOT p_itab_documento IS INITIAL.
SELECT bukrs belnr gjahr shkzg
FROM bseg
INTO TABLE itab_bseg
FOR ALL ENTRIES IN p_itab_documento
WHERE
bukrs EQ p_itab_documento-bukrs AND
belnr EQ p_itab_documento-belnr AND
gjahr EQ p_itab_documento-gjahr AND
shkzg EQ p_itab_documento-shkzg AND
* >> Início da exclusão: FORM VERIFICA_DOCUMENTOS_SAP
augbl EQ space.
* << Fim da exclusão
* >> Início da inclusão: FORM VERIFICA_DOCUMENTOS_SAP
augbl EQ space AND
wrbtr GT 0.
* << Fim da inclusão
LOOP AT p_itab_documento ASSIGNING <fs_documento>.
READ TABLE itab_bseg
WITH KEY
bukrs = <fs_documento>-bukrs
belnr = <fs_documento>-belnr
gjahr = <fs_documento>-gjahr
TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
INSERT <fs_documento> INTO TABLE p_itab_documento_erro.
ENDIF.
...
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
04297 - 00001 - LIQUIDAÇÃO - VERIFICAÇÃO DE DOCUMENTO COMPENSADO - FATURA C/ ORDEM PAGTO
04928 - 00002 - LIQUIDAÇÃO DE FATURAS
05512 - 00003 - TRATAMENTO CAMPOS /PWS/ZYCBT030-BELNR_T /PWS/ZYCBT030-BUDAT_T
07002 - 00004 - VINCULAÇÃO - DOCTOS COMPENSADOS - CONSIDERAR VALORES MANTIDOS EXTERIOR
07078 - 00005 - LIQUIDAÇÃO - DUMP DIVISÃO POR ZERO - /PWS/ZYCBT030-KWERT