Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9091

Re: Nota Fiscal avulsa x chave de acesso

$
0
0

Sei que o post é antigo mas acho que vale mais uma sugestão de desenvolvimento.

Tivemos o mesmo problema aqui e consegui resolver utilizando enhancements.

Segue abaixo os passos:

1-Criar um enhancement no final do include LJ_1B_NFETOP. Declarar uma variável para fazer o backup do parceiro.
DATA: gc_parid TYPE j_1bnfdoc-parid

 

2-Criar um enhancement no início da função J_1B_NFE_FILL_MONITOR_TABLE.

Neste enhancement deve-se realizar o backup do parceiro na variável GC_PARID.

Após atualizar com o código do parceiro da SEFAZ (aqui foi criado um fornecedor que contém o CNPJ da SEFAZ).

Segue o código:

*-- Cenário de nota avulsa de fornecedor optante pelo simples

   FIELD-SYMBOLS: <fs_bnfdoc> TYPE any,

                               <fs_field> TYPE any.

 

   CLEAR gc_parid.

 

   IF ( i_doc-series = '890' OR i_doc-series = '891') AND ( i_doc-nftype = 'E1' OR i_doc-nftype = 'EA' ) .

     gc_parid = i_doc-parid.

 

*-- Este função é executada durante o preenchimento da nota e depois no momento de salvar

*-- Se não for no momento de salvar, acessa uma estrutura, caso contrário acessa outra

     IF sy-ucomm <> 'SAVE'.

       ASSIGN ('(SAPLJ1BB2)WK_DOC') TO <fs_bnfdoc>.

     ELSE.

       ASSIGN ('(SAPLJ1BB)WK_HEADER') TO <fs_bnfdoc>.

     ENDIF.

 

     IF sy-subrc IS INITIAL.

*-- Modifica o código de situação

       ASSIGN COMPONENT 'COD_SIT' OF STRUCTURE <fs_bnfdoc> TO <fs_field>.

       IF sy-subrc IS INITIAL.

         <fs_field> = '08'.

       ENDIF.

 

*-- Busca o código de fornecedor da SEFAZ

*-- Este código será inserido no campo I_DOC-PARID para que quando executar a função J_1B_NF_PARTNER_READ (linha 325),

*-- busque os dados da SEFAZ para gerar a chave de acesso da NF corretamente para o cenário.

*-- No final desta função (J_1B_NFE_FILL_MONITOR_TABLE) o código do parceiro retornará ao original, salvo na variável GC_PARID.

       SELECT SINGLE parid FROM ztbmm_ch_ac

         INTO @DATA(lc_parid)

         WHERE regio = @i_doc-regio.

 

       IF lc_parid IS NOT INITIAL.

         ASSIGN COMPONENT 'PARID' OF STRUCTURE <fs_bnfdoc> TO <fs_field>.

         IF sy-subrc IS INITIAL.

           <fs_field> = lc_parid.

         ENDIF.

       ENDIF.

 

     ENDIF.

   ENDIF.

 

Com isso, o standard executará a função J_1B_NF_PARTNER_READ utilizando o código de parceiro da SEFAZ, retornando o CNPJ correto.

 

3-Criar um enhancement no final da função J_1B_NFE_FILL_MONITOR_TABLE para retornar o parceiro original da NF.

*-- Retorna o código de parceiro original da NF

   IF ( i_doc-series = '890' OR i_doc-series = '891') AND ( i_doc-nftype = 'E1' OR i_doc-nftype = 'EA' ) .

     IF <fs_bnfdoc> IS ASSIGNED.

       ASSIGN COMPONENT 'PARID' OF STRUCTURE <fs_bnfdoc> TO <fs_field>.

       IF sy-subrc IS INITIAL.

         <fs_field> = gc_parid.

       ENDIF.

     ENDIF.

   ENDIF.

 

 

Desta forma o código fica todo em enhancements, sem ter problemas com a SAP.


Viewing all articles
Browse latest Browse all 9091

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>