cancel
Showing results for 
Search instead for 
Did you mean: 

CCe: Retorno J_1BNFE_EVENT_IN

Former Member
0 Kudos
511

Bom dia a todos,

Estou implementando a solução de CCe em um cliente que não utiliza o SAP ECC para emitir as notas. Estamos utilizando legado até o projeto SAP entrar em produção. Como eles já tinham o PI, decidiram adquirir o GRC também e depois que o projeto SAP entrar em produção substituiremos o legado pelo SAP ECC e teremos o cenário comum de Nfe (SAP,GRC e PI).

O processo de emissão de nota está funcionando perfeitamente (01 ano e meio no ar).

O procedimento a princípio foi o mesmo adotado para a Nfe 2.0.

01- Criei interface para buscar as informações no legado (Banco de Dados)

02- Após a busca da informação, alimento a função standard /XNFE/ISSUE_CCE e a interface é executada: realiza o SIGNE, EVENT e o B2B.

Estou tendo um problema para retornar o status da CCE para o legado.

Olhei dentro do Proxy EVENT_nfeRecepcaoEventoResponse_IB e nele o retorno da informação para o SAP utiliza a função J_1BNFE_EVENT_IN.

Essa função não existe no ambiente do GRC, ou seja, apenas no SAP ECC.

Verifiquei o log na ST11 para os files RFC e apresenta a mensagem u201CJCO.Server could not find Server functionu201D.

Como teste, tentei forçar o disparo dela e sem êxito. Para isso, criei um programa Z alimentando a estrutura dela e disparando a mesma (criei uma interface no PI, exportei a RFC do SAP (peguei em outro cliente) e usei como External Definition).

Alguém já se deparou com este cenário de GRC, PI e Legado utilizando CCe?

Estava olhando a função e gostaria de saber se a melhor forma para solucionar isso seria utilizar um Enhancement Point. Daí no momento em que a função J_1BNFE_EVENT_IN é alimentada dentro da função /XNFE/RECEIVE_EVENT_ANSWER, eu crio uma interface u201CZu201D, alimento ela como se fosse a J_1BNFE_EVENT_IN com o destination para o PI, daí a interface é executada no PI e faço o retorno para o legado (via Procedure).

Tenho esta dúvida pois para os demais processos de emissão, não precisei criar nenhum tipo de Enhancement, utilizei as mesmas funções (exemplo: /XNFE/XML_IN_TAB) com Destination TCP/IP para o PI recebê-las.

Obrigado.

Diego Santos.

Accepted Solutions (1)

Accepted Solutions (1)

henrique_pinto
Active Contributor
0 Kudos

Olá Diego,

no retorno dos status do NFE p/ o ERP, o NFE tem uma BAdI que ele executa para verificar se ele deve chamar uma RFC J_1B, pro ERP, ou se ele chama uma RFC /XNFE/, para acessar algum legado.

No caso do lote, por exemplo, na função /XNFE/RECEIVE_BATCH_DATA, ele chama o form report_backend, que por sua vez chama o form call_backend_for_batch. Este chama a BAdI (form rfc_extern) e faz o IF sobre o retorno da BAdI, para saber se chama a J_1B* ou /XNFE/*.

    PERFORM rfc_extern USING    pv_logsys
                       CHANGING lv_rfcext.

    IF lv_rfcext IS INITIAL.

      CALL FUNCTION 'J_1B_NFE_XML_IN_TAB'
...
    ELSEIF lv_rfcext = 'X'.

* call non SAP backend system and
* transfer the new status to ERP
      CALL FUNCTION '/XNFE/XML_IN_TAB'
...
    ENDIF.

  ENDIF.

No caso do retorno dos eventos, na função /XNFE/RECEIVE_EVENT_ANSWER, ele não faz avaliação dessa BAdI, e chama direto a função J_1BNFE_EVENT_IN.

* call ERP system
  SORT lt_erp_tab BY rfcdest.
  LOOP AT lt_erp_tab INTO ls_erp_tab.

    APPEND ls_erp_tab-event_out TO lt_events_out.

    AT END OF rfcdest.
      CALL FUNCTION 'J_1BNFE_EVENT_IN' DESTINATION ls_erp_tab-rfcdest
...

Me parece que o desenvolvimento "esqueceu" de considerar a possibilidade de receber requisicoes de eventos de legados.

É caso de abrir um chamado e solicitar essa modificação. Eles tem que criar uma RFC /XNFE/* com a mesma estrutura da J_1BNFE_EVENT_IN para retornar o status dos eventos para backends não-SAP, e fazer a chamada da BAdI para avaliar qual das duas funções ele deve chamar.

Abs,

Henrique.

Answers (1)

Answers (1)

Former Member
0 Kudos

Obrigado Henrique,

Estarei abrindo um chamado conforme orientação.

Abs.

Diego Santos.