cancel
Showing results for 
Search instead for 
Did you mean: 

Momento de envio do XML

Former Member
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

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.

Former Member
0 Kudos

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!

Former Member
0 Kudos

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.

Former Member
0 Kudos

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!

Former Member
0 Kudos

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!

former_member182114
Active Contributor
0 Kudos

Bom dia Pessoal,

Para evitar pulo de numeração, a forma sugerida pela SAP para envio automático é configurar o CALLRFC=3 e schedular o job J_BNFECALLRFC para numeração e transmissão à mensageria. Veja notas sobre decouple.

Atenciosamente, Fernando Da Ró

Answers (1)

Answers (1)

Former Member
0 Kudos

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