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.