20 Replies Latest reply: May 6, 2016 9:07 PM by Pedro Candiago RSS

Nota Fiscal avulsa x chave de acesso

Suyan Balbinot Carreira
Currently Being Moderated

Boa tarde,

 

Nos deparamos com a seguinte situação: determinado Fornecedor emitiu uma NF Avulsa via site da SEFAZ. O CNPJ da chave de acesso é o CNPJ da SEFAZ. Ao dar entrada da NF no SAP, o sistema utiliza o CNPJ do Fornecedor e recalcula o dígito verificador, não permitindo o processamento da MIRO.

Alguém sabe como resolver isso?

Desde já, agradeço.

 

Suyan

  • Nota Fiscal avulsa x chave de acesso
    Fernando Ros
    Currently Being Moderated

    Bom dia Suyan,

     

    A nota emitida que está errada. A chave de acesso deve ter o CNPJ do emissor da nota, e mesmo tendo usado o software da Sefaz o emissor é o contribuinte e não a Sefaz.

     

    Confirma que o CNPJ está na chave de acesso é o mesmo CNPJ do emissor?

     

    Atenciosamente, Fernando Da Ros

  • Nota Fiscal avulsa x chave de acesso
    Suyan Balbinot Carreira
    Currently Being Moderated

    Agradeço as respostas...

     

    Pergunto: não existe nenhuma Nota da SAP corrigindo este problema?

     

    Abraços

  • Re: Nota Fiscal avulsa x chave de acesso
    Antonino Campagna
    Currently Being Moderated

    Oi Pessoal!

     

    Achei mais um jeito como facer, sempre alterando o estandar, mas sem precisar de uma tabela Z.

    No screen 2800 do programa SAPLJ1BB2 abri o campo do CNPJ no MODULE define_screen_control_nfe OUTPUT.

     

      DATA: lv_attr TYPE char1.

    *---> Start REV01
      IF NOT wk_header-nfe IS INITIAL AND
           ( modef         EQ 'CHA' OR
             modef         EQ 'CRE' ).
        LOOP AT SCREEN.
          CASE screen-name.
            WHEN 'J_1BNFE_ACTIVE-STCD1'.
              screen-input    = 1.
          ENDCASE.
          MODIFY SCREEN.
        ENDLOOP.
      ENDIF.
    *<--- End REV01
      LOOP AT SCREEN.

     

    Logo no mesmo screen fiz um novo module:

    PROCESS AFTER INPUT.

      MODULE exit_command AT EXIT-COMMAND.
    *{   INSERT         D01K983498                                        1

      CHAIN.
        FIELD: J_1BNFE_ACTIVE-STCD1.
        MODULE move_cnpj_avulsa ON CHAIN-REQUEST.
      ENDCHAIN.
    *
    *}   INSERT

    * subscreen for tpemis / docnum9                            "1454408

     

    Nesse module:

    MODULE move_cnpj_avulsa INPUT.

      MOVE j_1bnfe_active-stcd1 TO wk_active-stcd1.

    ENDMODULE.                 " MOVE_CNPJ_AVULSA  INPUT

     

    Que acontece na J1B2N: depois de alterar o CNPJ e os dados da chave de acceso, voce tem que gravar sem dar "enter" antes. Porque se voce dar enter, o sistema passa novamente o CNPJ do parceiro. Se voce depois de gravar a nota volta a entrar com a J1B2N o sistema altera outra vez o CNPJ e voce tem que ficar de olho.

     

    Se que nao é o jeito mas limpo, mas o departamento financeiro acho bem e assim nao precisa de actualizar um cadastro Z.

     

    Abraço

    Nino

  • Re: Nota Fiscal avulsa x chave de acesso
    Silvio Miranda
    Currently Being Moderated

    Aqui na empresa, esse fato ocorre muito com o Produtor Rural (pessoa física) que emite Nota Fiscal Avulsa pela SEFAZ. Para contornar o problema adotamos como padrão a colocação do CGC da SEFAZ no cadastro do fornecedor (no campo LFA1-NAME4) e alteramos a função STANDARD J_1B_NFE_FILL_MONITOR_TABLE para executar uma função e retornar o CGC, quando houver um cadastrado.

     

    .. Código da função J_1B_NFE_FILL_MONITOR_TABLE

    * incoming beats vendor master data                          1502482

       import stcd1_xml to lv_stcd1_xml                          "1502482

         from memory id 'STCD1XML'.                              "1502482

       if sy-subrc = 0.                                                    "1502482

          e_active-stcd1 = lv_stcd1_xml.                          "1502482

       endif.                                                                  "1502482

     

     

    CALL FUNCTION 'Z_NFE_SETA_CGC_NF_AVULSA'

      EXPORTING

        i_nftype          = i_doc-nftype

        i_j_1binnad       = ls_innad

      IMPORTING

        E_STCD1           = e_active-stcd1.

     

     

    ...

     

    FUNCTION z_nfe_seta_cgc_nf_avulsa.

    *"----------------------------------------------------------------------

    *"*"Interface local:

    *"  IMPORTING

    *"     REFERENCE(I_NFTYPE) TYPE  J_1BNFTYPE

    *"     REFERENCE(I_J_1BINNAD) TYPE  J_1BINNAD

    *"  EXPORTING

    *"     REFERENCE(E_STCD1) TYPE  J_1BSTCD1

    *"----------------------------------------------------------------------

      DATA: lc_name4 LIKE lfa1-name4.

     

     

    * nota fiscal de entrada AVULSA

      CHECK i_nftype = 'EA'.

    * Ler o CGC da SEFAZ do campo NAME4 no fornecedor para o tipo de NF

    * retornará o CGC que será substituído na chave da NFe

    * durante a criação da NF no include LJ_1B_NFEU02 dentro da função

    * J_1B_NFE_FILL_MONITOR_TABLE

      e_stcd1 = I_J_1BINNAD-name4(14).

     

     

    ENDFUNCTION.

  • Re: Nota Fiscal avulsa x chave de acesso
    Pedro Candiago
    Currently Being Moderated

    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.