Módulo: DOC. EXPORTAÇÃO
Funcionalidade: Variação Cambial
Data/Hora da Publicação: 17/03/2006 00:00:00
Data/Hora Última Alteração: 21/02/2011 15:59:29
Descrição da Nota: DADOS DA NOTA FISCAL COM REFERÊNCIA ERRADOS OU DUPLICADOS
Sintoma
Ao gerar a nota fiscal complementar com referência, o programa está informando valores incorretos
nos itens da nota fiscal e duplicando algumas notas.
Solução
- Lançamento da nota de refência somente do valor do item
- Lançamento da nota de referência com NETPR = 1,0000
- Separação das Lógicas de processamento de Variação com Referência e Sem referência.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 01056 Data: 17/03/2006 Hora: 16:41:10
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 01056
Categoria : Melhoria
Prioridade : Alta
Versão PW.CE : 6.0
Pacote : 00023
Agrupamento : 00106
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
00506 - 00002 - 6.0 - 00022 - VERIFICAÇÃO DE PARÂMETRO PARA PREENCHIMENTO DE NÚMERO DE DOCTO. F
01024 - 00001 - 6.0 - 00023 - EMISSÃO DE NOTAS EM VARIAÇÃO CAMBIAL COM REFERÊNCIA
----------------------------------------------------------------------------------------------------
DADOS DA NOTA FISCAL COM REFERÊNCIA ERRADOS OU DUPLICADOS
----------------------------------------------------------------------------------------------------
Palavras Chave:
EXPORTAÇÃO VARIAÇÃO CAMBIA REFERÊNCIA
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCE_TRANSACAO_J1B1N_B
REPS /PWS/ZYCEI007
REPS /PWS/ZYCER007
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCE_TRANSACAO_J1B1N_B
...
v_cfop(06) TYPE c,
v_netbase(16) TYPE c,
v_cont TYPE n,
v_cont1 TYPE i,
v_text(16) TYPE c,
* >> Início da exclusão:
v_text_aux(16) TYPE c.
* << Fim da exclusão
* >> Início da inclusão:
v_text_aux(16) TYPE c,
v_cont_aux(2) TYPE n,
v_campo1(20),
v_campo2(20),
v_campo3(20),
v_campo4(20).
* << Fim da inclusão
LOOP AT t_dados.
CHECK t_dados-tcode = 'J1B1N'.
IF ( t_dados-docdat = space ).
t_campos-mandt = t_dados-mandt.
t_campos-campo = 'J_1BDYDOC-DOCDAT'.
...
...
'BDC_OKCODE' '=CORE'.
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
PERFORM bdc_campo USING:
'J_1BDYDOC-DOCDAT' v_data-doc,
'J_1BDYDOC-PSTDAT' v_data-pst,
* >> Início da inclusão:
'J_1BDYDOC-DOCREF' t_dados-docnum.
IF t_itensnf[] IS INITIAL.
PERFORM bdc_campo USING:
* << Fim da inclusão
'J_1BDYLIN-ITMTYP(01)' t_dados-itmtyp,
'J_1BDYLIN-MENGE(01)' v_menge,
'J_1BDYLIN-MEINS(01)' t_dados-meins,
'J_1BDYLIN-NETPR(01)' v_netpr,
* >> Início da exclusão:
'J_1BDYDOC-DOCREF' t_dados-docnum,
* << Fim da exclusão
'BDC_OKCODE' '/00'.
* >> Início da inclusão:
ELSE.
loop at t_itensnf.
ADD 1 TO v_cont_aux.
CONCATENATE 'J_1BDYLIN-ITMTYP(' v_cont_aux ')' INTO v_campo1.
CONCATENATE 'J_1BDYLIN-MENGE(' v_cont_aux ')' INTO v_campo2.
CONCATENATE 'J_1BDYLIN-MEINS(' v_cont_aux ')' INTO v_campo3.
PERFORM bdc_field USING: v_campo1 t_dados-itmtyp,
v_campo2 v_menge,
v_campo3 v_netpr.
endloop.
PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.
ENDIF.
* << Fim da inclusão
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=TAB4'.
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
CLEAR v_cont.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCEI007
...
DATA: END OF it_tcurx.
DATA: BEGIN OF it_relat OCCURS 0,
nrseq LIKE /pws/zycet002-nrseq,
branch LIKE j_1bnfdoc-branch,
nfnum LIKE /pws/zycet002-nfnum,
* >> Início da inclusão:
ITMNUM like j_1bnflin-itmnum,
* << Fim da inclusão
docdat LIKE j_1bnfdoc-docdat,
kurrf LIKE /pws/zycet002-kurrf,
bukrs LIKE /pws/zycet002-bukrs,
vbeln_va LIKE /pws/zycet002-vbeln_va,
vbeln_vf LIKE /pws/zycet002-vbeln_vf,
...
...
END OF it_contabil_nfa.
DATA: BEGIN OF it_emitenf OCCURS 0,
nrseq LIKE /pws/zycet002-nrseq,
branch LIKE j_1bnfdoc-branch,
docnum LIKE j_1bnflin-docnum,
* >> Início da inclusão:
itmnum LIKE j_1bnflin-itmnum,
* << Fim da inclusão
difer LIKE /pws/zycet002-vlme,
tot LIKE /pws/zycet002-vlme,
END OF it_emitenf.
DATA: BEGIN OF it_total_pos OCCURS 0,
branch LIKE j_1bnfdoc-branch,
...
...
END OF itab_vbapf.
DATA: BEGIN OF itab_vt005 OCCURS 0,
land1 LIKE v_t005-land1,
curha LIKE v_t005-curha,
END OF itab_vt005.
* >> Início da inclusão:
DATA it_zycee00_aux LIKE /pws/zycee005 OCCURS 0 WITH HEADER LINE.
* << Fim da inclusão
DATA: wa_zycbt011 LIKE /pws/zycbt011.
DATA: wa_relat LIKE it_relat.
DATA: v_dtate LIKE /pws/zycet001-dtaverb,
v_dtde LIKE /pws/zycet001-dtaverb,
v_index LIKE syst-tabix,
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCER007
...
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'POPUP'.
PERFORM popup.
WHEN 'NOTE'.
* >> Início da inclusão:
IF NOT it_zycet035-nfcref IS INITIAL.
PERFORM contabiliza_j1b1_ref.
ELSE.
* << Fim da inclusão
PERFORM contabiliza_j1b1.
* >> Início da inclusão:
ENDIF.
* << Fim da inclusão
IF p_reimp NE 'X'.
...
...
IF NOT it_zyglt338-flag IS INITIAL.
MOVE-CORRESPONDING it_relat TO it_contabil_nfa.
COLLECT it_contabil_nfa.
ENDIF.
ENDIF.
* >> Início da inclusão: FORM IMPRIME_DADOS
IF NOT it_zycet035-nfcref IS INITIAL.
MOVE: it_relat-nrseq TO it_emitenf-nrseq,
it_relat-branch TO it_emitenf-branch,
it_relat-itmnum TO it_emitenf-itmnum,
it_relat-difer TO it_emitenf-difer.
else.
* << Fim da inclusão
MOVE: it_relat-nrseq TO it_emitenf-nrseq,
it_relat-branch TO it_emitenf-branch,
it_relat-difer TO it_emitenf-difer.
* >> Início da inclusão: FORM IMPRIME_DADOS
endif.
* << Fim da inclusão
IF NOT it_zycet035-flagfunc IS INITIAL
AND NOT it_zycet035-nfcref IS INITIAL.
MOVE it_relat-docnum TO it_emitenf-docnum.
ENDIF.
COLLECT it_emitenf.
...
...
it_vbrp-kursk TO it_relat-kursf.
it_relat-dmbtr = it_relat-wrbtr * it_relat-kursf.
ENDIF.
MOVE: it_zycet002-nrseq TO it_relat-nrseq,
it_zycet002-nfnum TO it_relat-nfnum,
* >> Início da inclusão: FORM PREENCHE_IT_RELAT
it_zycet002-posnr TO it_relat-itmnum,
* << Fim da inclusão
it_zycet002-kurrf TO it_relat-kurrf,
it_zycet002-vbeln_va TO it_relat-vbeln_va,
it_zycet002-vbeln_vf TO it_relat-vbeln_vf,
it_zycet002-posnr TO it_relat-posnr,
it_zycet002-docnum TO it_relat-docnum,
...
...
PERFORM limpa_tabelas.
ENDFORM.
FORM fill_data_j1b1.
CLEAR: v_nrseq,
v_nremb.
* >> Início da inclusão: FORM FILL_DATA_J1B1
IF NOT it_zycee005[] IS INITIAL AND
NOT it_zycet035-nfcref IS INITIAL.
.
MOVE it_zycee005 TO it_zycee005_aux.
APPEND it_zycee005_aux.
CLEAR it_zycee005.
REFRESH it_zycee005.
ENDIF.
* << Fim da inclusão
IF NOT v_enrseq IS INITIAL.
v_nrseq = it_relat-nrseq.
ENDIF.
IF NOT v_enremb IS INITIAL.
v_nremb = it_relat-nremb.
...
...
INTO it_zycee006-msg SEPARATED BY space.
ADD 1 TO v_index2.
it_zycee006-indice = v_index2.
APPEND it_zycee006.
ENDIF.
* >> Início da inclusão: FORM FILL_DATA_J1B1
CLEAR it_itmnf.
REFRESH it_itmnf.
* << Fim da inclusão
LOOP AT it_j1bnflin WHERE docnum = it_emitenf-docnum.
READ TABLE it_relat_aux2 WITH KEY nrseq = it_relat-nrseq
docnum = it_emitenf-docnum
posnr = it_j1bnflin-itmnum.
IF sy-subrc EQ 0.
...
...
v_modo_bi = 'E'.
ELSEIF v_modo_bi EQ '1'.
v_modo_bi = 'N'.
ENDIF.
endform.
* >> Início da inclusão:
FORM contabiliza_j1b1_ref.
DATA: r_nrseq LIKE /pws/zycet002-nrseq,
r_branch LIKE j_1bnfdoc-branch,
r_docnum LIKE /pws/zycet002-docnum,
r_itmnum LIKE j_1bnflin-itmnum,
v_execute TYPE i,
r_nrseq1 LIKE /pws/zycet002-nrseq,
r_branch1 LIKE j_1bnfdoc-branch,
r_docnum1 LIKE /pws/zycet002-docnum.
SORT it_relat BY land1 nrseq branch docnum.
CLEAR: r_nrseq, r_branch, r_docnum.
CLEAR: r_nrseq1, r_branch1, r_docnum1.
it_relat_aux2[] = it_relat[].
SORT it_emitenf BY nrseq branch docnum.
LOOP AT it_relat WHERE land1 NE 'AR'.
CLEAR v_execute.
IF NOT it_zycet035-nfcref IS INITIAL.
IF it_relat-nrseq NE r_nrseq OR
it_relat-branch NE r_branch OR
it_relat-docnum NE r_docnum OR
it_relat-itmnum NE r_itmnum.
MOVE 1 TO v_execute.
ENDIF.
ELSEIF it_relat-nrseq NE r_nrseq OR
it_relat-branch NE r_branch.
MOVE 1 TO v_execute.
ENDIF.
IF NOT v_execute IS INITIAL.
MOVE: it_relat-nrseq TO r_nrseq,
it_relat-branch TO r_branch,
it_relat-docnum TO r_docnum,
it_relat-itmnum TO r_itmnum.
READ TABLE it_emitenf
WITH KEY nrseq = it_relat-nrseq
branch = it_relat-branch
docnum = it_relat-docnum
itmnum = it_relat-itmnum.
IF it_emitenf-difer EQ 0.
CONTINUE.
ENDIF.
IF sy-subrc EQ 0 AND
it_relat-difer NE 0.
CLEAR: it_zycet035.
IF it_emitenf-difer GT 0.
READ TABLE it_zycet035 WITH KEY tpnf = '2'
bukrs = it_relat-bukrs.
ELSEIF it_emitenf-difer LT 0.
READ TABLE it_zycet035 WITH KEY tpnf = '1'
bukrs = it_relat-bukrs.
ELSE.
it_zycet004-campo = 'DIFER'.
it_zycet004-descricao = text-060.
APPEND it_zycet004.
CONTINUE.
ENDIF.
CLEAR v_execute.
IF NOT it_zycet035-nfcref IS INITIAL.
IF it_emitenf-docnum NE it_relat-docnum.
MOVE 1 TO v_execute.
ENDIF.
ENDIF.
IF v_execute IS INITIAL.
IF it_relat-dtnf EQ '00000000' OR p_reimp EQ 'X'.
IF NOT it_zycet035-emitdtbl IS INITIAL AND
NOT it_zycet035-emitfmes IS INITIAL.
PERFORM fill_data_j1b1.
ELSEIF NOT it_zycet035-emitdtbl IS INITIAL AND
it_zycet035-emitfmes IS INITIAL AND
NOT it_relat-dtbl IS INITIAL.
PERFORM fill_data_j1b1.
ELSEIF it_zycet035-emitdtbl IS INITIAL AND
NOT it_zycet035-emitfmes IS INITIAL AND
it_relat-dtbl IS INITIAL.
PERFORM fill_data_j1b1.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
v_executa_j1b1 = 'X'.
READ TABLE itab_zyglt100 WITH KEY zexit = 'VRC001' BINARY SEARCH.
IF sy-subrc EQ 0 AND
NOT itab_zyglt100-programa IS INITIAL AND
NOT itab_zyglt100-formulario IS INITIAL .
PERFORM (itab_zyglt100-formulario)
IN PROGRAM (itab_zyglt100-programa) IF FOUND.
ENDIF.
IF it_zycet004[] IS INITIAL AND
v_executa_j1b1 EQ 'X'.
IF it_zycet035-flagfunc IS INITIAL.
IF NOT it_zycet035-nfcref IS INITIAL.
CALL FUNCTION '/PWS/ZYCE_TRANSACAO_J1B1_A'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados =
it_zycee005
t_campos = it_zycet004
t_zycet005 = it_zycet005
t_message = it_zycee006
t_itensnf = it_itmnf
EXCEPTIONS
campo_em_branco = 1
periodo_fechado = 2
OTHERS = 3.
ENDIF.
ELSE.
IF not it_zycet035-nfcref IS INITIAL.
CALL FUNCTION '/PWS/ZYCE_TRANSACAO_J1B1N_B'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados =
it_zycee005
t_campos = it_zycet004
t_zycet005 = it_zycet005
t_message = it_zycee006
t_itensnf = it_itmnf
EXCEPTIONS
campo_em_branco = 1
periodo_fechado = 2
OTHERS = 3.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
IF NOT it_zycee005_aux[] IS INITIAL.
CLEAR it_zycee005.
REFRESH it_zycee005.
MOVE it_zycee005_aux[] TO it_zycee005[].
ENDIF.
IF it_zycet004[] IS INITIAL AND
v_executa_j1b1 EQ 'X'.
IF it_zycet035-flagfunc IS INITIAL.
IF it_zycet035-nfcref IS INITIAL.
CALL FUNCTION '/PWS/ZYCE_TRANSACAO_J1B1'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = it_zycee005
t_campos = it_zycet004
t_zycet005 = it_zycet005
t_message = it_zycee006
EXCEPTIONS
campo_em_branco = 1
periodo_fechado = 2
OTHERS = 3.
ENDIF.
ELSEIF it_zycet035-nfcref IS INITIAL.
CALL FUNCTION '/PWS/ZYCE_TRANSACAO_J1B1N'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = it_zycee005
t_campos = it_zycet004
t_zycet005 = it_zycet005
t_message = it_zycee006
EXCEPTIONS
campo_em_branco = 1
periodo_fechado = 2
OTHERS = 3.
ENDIF.
ENDIF.
IF sy-subrc = 0.
CALL CUSTOMER-FUNCTION '002'.
LOOP AT it_relat.
CLEAR v_execute.
IF NOT it_zycet035-nfcref IS INITIAL.
IF it_relat-nrseq NE r_nrseq1 OR
it_relat-branch NE r_branch1 OR
it_relat-docnum NE r_docnum1.
MOVE 1 TO v_execute.
ENDIF.
ELSEIF it_relat-nrseq NE r_nrseq1 OR
it_relat-branch NE r_branch1.
MOVE 1 TO v_execute.
ENDIF.
IF NOT v_execute IS INITIAL.
MOVE: it_relat-nrseq TO r_nrseq1,
it_relat-branch TO r_branch1,
it_relat-docnum TO r_docnum1.
LOOP AT it_emitenf WHERE nrseq = it_relat-nrseq
AND branch = it_relat-branch.
CONCATENATE it_emitenf-nrseq it_emitenf-branch
it_emitenf-docnum INTO v_cpochv.
CLEAR it_zycet005.
IF it_zycet035-flagfunc IS INITIAL.
LOOP AT it_zycet005 WHERE tcode EQ text-050
AND tabela EQ text-006
AND cpochv EQ v_cpochv
AND tpmsg EQ 'S'.
PERFORM atualiza_tabelas_j1b1.
it_doccont-nrseq = it_relat-nrseq.
it_doccont-branch = it_relat-branch.
it_doccont-belnr5 = it_zycet005-belnr.
it_doccont-controle = 'N'.
APPEND it_doccont.
ENDLOOP.
ELSE.
LOOP AT it_zycet005 WHERE tcode EQ text-097
AND tabela EQ text-006
AND cpochv EQ v_cpochv
AND tpmsg EQ 'S'.
PERFORM atualiza_tabelas_j1b1.
it_doccont-nrseq = it_relat-nrseq.
it_doccont-branch = it_relat-branch.
it_doccont-belnr5 = it_zycet005-belnr.
it_doccont-controle = 'N'.
APPEND it_doccont.
ENDLOOP.
ENDIF.
IF NOT it_doccont[] IS INITIAL.
SORT it_doccont BY nrseq branch belnr5 controle.
DELETE ADJACENT DUPLICATES FROM it_doccont.
ELSE.
READ TABLE it_zycet005 WITH KEY tcode = text-050
tabela = text-006
cpochv = v_cpochv
tpmsg = 'E'.
IF sy-subrc EQ 0.
it_erro-nrseq = it_emitenf-nrseq.
it_erro-branch = it_emitenf-branch.
it_erro-msg = it_zycet005-msg.
APPEND it_erro.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ELSE.
PERFORM limpa_tabelas.
ENDIF.
PERFORM limpa_tabelas.
ENDFORM.
* << Fim da inclusão