on 12-08-2011 7:16 PM
Boa tarde,
Estou em um projeto de implementação e com a seguinte dúvida:
Requerimentos:
Tenho que enviar o XML assim que a Invoice+NF é gerada (VF01/VF04, etc).
Num segundo momento, após a aprovação do XML, eu poderei imprimir a DANFe.
Envio XML:
Sei que a função que mapeia o XML para a versão 2.0 é a J_1B_NF_MAP_TO_XML e a função que envia para o GRC ou outra mensageria (utilizaremos NeoGrid) é a J_1B_NFE_XML_OUT.
A pergunta é: como faço a chamada destas funções? Qual programa devo chamar? Em qual momento? É por customizing ou por uma exit no faturamento?
Obs.: entendo que estas funções já estão configuradas no monitor J1BNFE para solicitar o reenvio da nota, etc.
Impressão DANFe:
Em paralelo, na J1BJ vou ter que configurar somente o programa de impressão do DANFe (J_1BNFPR), correto? Pois assim quando eu gerar e processar o output da NAST ele irá fazer a impressão do documento, correto?
Caso não entendam as perguntas por favor me contestem que eu explico melhor.
Obrigado!
Felipe Brasil Simioni
Ola Felipe,
A RFC J_1B_NFE_XML_OUT que comunica com o PI/GRC é chamada dentro do programa J_1BNFEXMLOUT(SE38).
A chamada da função continuara normal, pela J1BNFE.
Porém, para estas informações irem pro NeoGrid, você devera alterar o destination (SM59) da chamada:
* Call function asych.
CALL FUNCTION 'J_1B_NFE_XML_OUT'
IN BACKGROUND TASK
DESTINATION c_rfcdest
EXPORTING
xml_in = xmlh
xml_item_tab = xmli_tab
xml_batch = xmlb_tab
xml_ref = xmlr_tab. "V1.05
É a destination que define com o que o abap ira comunicar(PI/GRC, WEBSERVICE, SISTEMA DE MENSAGERIA DE TERCEIROS, ETC).
Com relação a impressão da DANFE, não saberia te dar uma resposta concreta.
att.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Obrigado pela resposta Carlos!
Só que pelo que investiguei, o programa J_1BNFEXMLOUT foi utilizado só para a versão 1.0 do xml... a partir da versão 1.10 a função utilizada é a J_1B_NF_MAP_TO_XML e todas as OSS notes da SAP para novas tags, etc. são aplicadas somente nesta função, que não é chamada pelo programa J_1BNFEXMLOUT.
Aí a pergunta é: existe alguma maneira de chamar a função J_1B_NF_MAP_TO_XML e J_1B_NFE_XML_OUT automaticamente ao fazer o faturamento? para que eu não tenha que ir ao monitor J1BNFE e enviar o xml manualmente...
É por customizing ou user exit?
Muito obrigado!
Ola Felipe,
Desculpe pela demora na resposta.
Realmente, o código que passei acima não é utilizado para 2.0.
Simulei o envio de uma nota e pude ver que a chamada é efetuada pelo include LJ_1B_NFEF42, que pode ser visualizado pela se38.
CALL FUNCTION 'J_1B_NFE_XML_OUT'
IN BACKGROUND TASK
DESTINATION lv_rfcdest
EXPORTING
xml_in = xmlh
xml_item_tab = xmli_tab
xml_batch = xmlb_tab
xml_ref = xmlr_tab
xml_dup = xmld_tab
xml_vol = xmlv_tab
xml_head_tab = xmlh_tab "V1.10
xml_imp = xml_import_tab "V1.10
xml_ext1 = xml_ext1_tab "V1.10
xml_ext2 = xml_ext2_tab "V1.10
xml_adi = xml_adi_tab "V2.00
xml_reb = xml_reb_tab "V2.00
xml_cane_dia = xml_cane_dia_tab "V2.00
xml_cane_ded = xml_cane_ded_tab. "V2.00
Confesso que não sei te dizer o fluxo de como ele chegou na chamada da função nesse include.
Com relação a automatizar o envio, qual o problema com a j1bnfe?rsrsrs
O envio pode até ser automatizado, mas acredito que você estaria reinventando a roda.
Pois em caso de inconsistências na nota, erro no sefaz, etc., como o usuário ficara sabendo disso?
Sem contar que customizando a parte abap de envio da nota pro SEFAZ, acredito que a SAP não poderia de dar suporte em caso de erros.
att.
Oi Carlos,
Nós continuaremos usando a J1BNFE para resetar o status, reenviar o xml, solicitar a inutilização, etc.
Na verdade o que estou querendo é que ao realizar o faturamento (VF01) o primeiro envio do xml seja feito automaticamente para que o usuário não tenha que fazer 2 passos (faturar pela VF01 + enviar xml pela J1BNFE) sendo que não há intervenção nenhuma entre gerar a invoice e enviar o xml.
Aí o que não sei ainda é como posso fazer esse acionamento automatico. Se preciso fazer algum customizing ou somente por uma user exit da VF01 chamando as funções J_1B_NF_MAP_TO_XML e J_1B_NFE_XML_OUT.
Obrigado pelas respostas!
Bom dia a todos,
Somente para finalizar o tópico, verifiquei que o customizing que determina o momento de chamada das funções J_1B_NF_MAP_TO_XML e J_1B_NFE_XML_OUT fica no path:
Cross-Application Components -> General Application Functions -> Nota Fiscal -> Output -> Assign Numbering and Printing Parameters
Na tela General Printing Parameters, no campo RFC Call você pode customizar o momento da chamada:
" " Numbering, RFC call and data base update in the same LUW
"1" Numbering & RFC is triggered via the Monitor Report( J1BNFE)
"2" Numbering in Monitor Report - RFC via batch report
"3" Numbering & RFC are triggered via Batch report J_1BRFCBATCH
No programa LJ_1B_NFEU24 ele faz a verificação se o campo está em branco. Caso estiver, vai por fim fazer a chamada da função J_1B_NF_MAP_TO_XML.
Obrigado pela ajuda!
Olá, Fernando.
Por favor veja se pode nos ajudar.
Estamos tendo o mesmo problema com o envio do XML para a mensageria (não GRC).
Seguindo as parametrizações indicadas acima:
SPRO
Componentes válidos para várias aplicações
Funções gerais de aplicação
Nota Fiscal
Saída
Atribuir parametros de numeração e dxed impressão
O local de negócios está configurado como RFC CALL vazio (segue descrição abaixo):
"Execução RFC e atualização banco dados na mesma LUW (padrão)"
Porém, ao tentar enviar a nota fiscal (ex: J1B1N), ocorre um erro na SM58 e o XML não é enviado para o sistema de mensageria.
Analisando o programa SAPLJ_1B_NFE, no include LJ_1B_NFEF42, vemos que para mensagerias não GRC o programa chama a função J_1B_NFE_XML_OUT em background task, o que ocasiona o erro abaixo na SM58.
IF sy-subrc IS INITIAL.
non SAP messaging system "V1.10
if lv_xnfeactive is initial. "V1.10
Call function asych. when RFC connection available
gv_callmode can be switched in debbuging to call the RFC synchronous
do not reset gv_callmode direct after the RFC call
if gv_callmode is initial.
CALL FUNCTION 'J_1B_NFE_XML_OUT'
-
-
IN BACKGROUND TASK
DESTINATION lv_rfcdest
EXPORTING
xml_in = xmlh
xml_item_tab = xmli_tab
xml_batch = xmlb_tab
xml_ref = xmlr_tab
xml_dup = xmld_tab
xml_vol = xmlv_tab
xml_head_tab = xmlh_tab "V1.10
xml_imp = xml_import_tab "V1.10
xml_ext1 = xml_ext1_tab "V1.10
xml_ext2 = xml_ext2_tab "V1.10
xml_adi = xml_adi_tab "V2.00
xml_reb = xml_reb_tab "V2.00
xml_cane_dia = xml_cane_dia_tab "V2.00
xml_cane_ded = xml_cane_ded_tab. "V2.00
Erro da SM58:
RfcAbort: Cannot lock transaction
Nº mensagem SR053
Note que a chamada é feita de forma assincrona porque a variável gv_callmode está como initial, e que segundo o comentário da SAP, essa variável é usada somente para debug, sem qualquer parametrização que controle o modo de chamada.
Obs: se comentarmos a linha IN BACKGROUND TASK, tudo funciona perfeitamente.
Mas obviamente não é o que queremos fazer. Queremos manter o programa original da SAP.
Já pesquisamos notas para esse problema, mas não encontramos nada que se refira a esse problema.
Alguém mais se deparou com essa situação?
Desde já agradeço pela ajuda.
Rodrigo Ferreira
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
14 | |
4 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.