Olá pessoal,
A partir do Support Package 03 do TDF, alguns registros receberam tabelas temporárias. A principal função dessas tabelas temporárias é melhorar a performance de registros críticos, relativos a dados mestres.
Podemos identificar as tabelas temporárias através da classe de entrega “L” e também por só conterem os seguintes campos: mandante, ID da rodada do relatório, chave do registro a que se destina e eventuais informações adicionais necessárias para o processamento de registros do Bloco 0.
A partir dessa modificação, não há mais como executar os registros do Bloco 0 individualmente, nem no relatório, nem via comandos SQL. Isso acontece devido ao fato desses registros precisarem que outro registro seja executado previamente para inserir nas tabelas temporárias os itens de dados mestres a serem reportados.
Segue abaixo a lista de tabelas temporárias utilizadas nos SPEDs e os registros que as consomem:
Tabela temporária |
SPED EFD ICMS/IPI |
SPED EFD-Contribuições |
/TMF/D_CNPJ_T |
|
sap.glo.tmflocbr.pco/PCO_A010
sap.glo.tmflocbr.pco/PCO_C010
sap.glo.tmflocbr.pco/PCO_D010
sap.glo.tmflocbr.pco/PCO_F010
sap.glo.tmflocbr.pco/PCO_I010
sap.glo.tmflocbr.pco/PCO_P010 |
/TMF/D_COD_CCUS |
|
sap.glo.tmflocbr.pco/PCO_0600 |
/TMF/D_COD_CTA |
|
sap.glo.tmflocbr.pco/PCO_0500 |
/TMF/D_COD_ITEM |
sap.glo.tmflocbr.efd/EFD_0200 |
sap.glo.tmflocbr.pco/PCO_0200 |
/TMF/D_COD_OBS_T |
sap.glo.tmflocbr.efd/EFD_0460 |
|
/TMF/D_COD_PART |
sap.glo.tmflocbr.efd/EFD_0150 |
sap.glo.tmflocbr.pco/PCO_0150 |
/TMF/D_COD_UNID |
sap.glo.tmflocbr.efd/EFD_0190 |
sap.glo.tmflocbr.pco/PCO_0190 |
/TMF/D_CONV_FACT |
sap.glo.tmflocbr.efd/EFD_0220 |
|
/TMF/D_NUM_PROC |
|
sap.glo.tmflocbr.pco/PCO_1010
sap.glo.tmflocbr.pco/PCO_1020 |
Vale ainda salientar que os registros que consomem os registros listados acima também dependem do preenchimento dessas tabelas temporárias e, portanto, também não é possível executá-los individualmente.
Abaixo você encontrará um exemplo detalhado, a partir da tabela
/TMF/D_COD_CCUS. A sua estrutura contém os seguintes campos: Client (MANDT), Run ID (RUN_ID) e o Cost Center (COD_CCUS). Veja a imagem a seguir:
Essa tabela é preenchida pela classe
/TMF/CL_SPED_REG. Durante a execução do SPED, e após a execução de cada registro, o seguinte método é chamado:
Neste momento, o relatório valida se o campo Centro de Custo (
COD_CCUS) existe na saída do registro executado. Se existe, as linhas do registro são inseridas na tabela com as seguintes informações:
- Mandante (MANDT😞 Mandante da linha reportada no registro executado;
- Run ID (RUN_ID😞 ID da rodada cadastrado no Tax Obligation Monitor (transação /TMF/TOM02);
- Código do Centro de Custo (COD_CCUS😞 Código do centro de custo reportado no registro executado.
Vale mencionar que os registros de dados mestres possuem uma prioridade inferior aos registros que fornecem dados para eles. A prioridade dos registros pode ser consultada na tabela
/TMF/D_REG_PRIO. No caso do registro 0600 do SPED EFD-Contribuições, sua prioridade 4 faz com que ele seja executado após os registros que possuem o campo Código do Centro de Custo (
COD_CCUS) na sua saída, que possuem prioridade 0. Veja a imagem abaixo:
Ao executar o registro 0600 após os demais registros, a tabela temporária já estará preenchida com os centros de custos a serem reportados naquela execução. Abaixo, segue o exemplo da modelagem do registro 0600 do SPED EFD-Contribuições, que consome diretamente a tabela
/TMF/D_COD_CCUS para identificar os centros de custo a serem reportados:
Em caso de dúvidas, deixe um comentário abaixo.
Até a próxima!
Thiago Nunes
Time de desenvolvimento do TDF