Tabela NNM1 no SAP Business One (Séries de numeração de documentos)
NNM1 é a tabela do SAP Business One de séries de numeração: uma linha por série de um documento ou objeto de dados mestre, com código do objeto, número da série, nome, próximo número, último número permitido, prefixo, sufixo e indicador de período. Os documentos guardam a série em Series, então a NNM1 explica de onde vem um DocNum e com qual prefixo ele é impresso.
Campos-chave da NNM1
| Campo | O que contém |
|---|---|
ObjectCode | Objeto ao qual a série pertence, por exemplo 13 para notas fiscais de saída e 17 para pedidos de venda. |
Series | Número da série, a chave. OINV.Series e ORDR.Series apontam para ele. |
SeriesName | Nome da série. |
InitialNum | Número inicial. |
NextNumber | Próximo número disponível. |
LastNum | Último número permitido. |
BeginStr / EndStr | Textos de prefixo e sufixo. |
Indicator | Indicador de período (OPID). |
Locked | Y = bloqueada, N = não bloqueada. |
SeriesType | D = documento, B = parceiro de negócios, I = item, R = recurso, W = certificados de retenção. |
IsManual | Y = série manual. |
BPLId | Filial atribuída (OBPL). |
DocSubType | Subtipo de documento. |
Como a NNM1 se relaciona com outras tabelas
A NNM1 guarda as linhas de séries de cada objeto listado na ONNM. Os cabeçalhos de documentos (OINV.Series, ORDR.Series e os demais) e os parceiros de negócios (OCRD.Series) apontam para NNM1.Series. O par ObjectCode mais Series identifica a série, e o DocNum é único dentro de uma série, não entre séries.
Joins mais comuns
OINV T0 INNER JOIN NNM1 T1 ON T1.Series = T0.Series (série da nota fiscal)ORDR T2 INNER JOIN NNM1 T1 ON T1.Series = T2.Series (série do pedido)NNM1 T1 WHERE T1.ObjectCode = '13' (todas as séries de notas fiscais de saída)
Quando usar a tabela NNM1
Use a NNM1 para imprimir números de documento com o prefixo, ver qual série está perto do último número antes do fechamento do ano e listar as séries por indicador de período ou filial.
Consulta de exemplo: números de nota fiscal com nome da série e prefixo
SQL Server
SELECT T1.SeriesName, ISNULL(T1.BeginStr, '') + CAST(T0.DocNum AS varchar(20)) + ISNULL(T1.EndStr, '') AS PrintedNumber, T0.DocDate, T0.CardCode, T0.DocTotal FROM OINV T0 INNER JOIN NNM1 T1 ON T1.Series = T0.Series WHERE T0.DocDate >= DATEADD(day, -30, GETDATE()) ORDER BY T1.SeriesName, T0.DocNum
SAP HANA (nomes de colunas entre aspas duplas)
SELECT T1."SeriesName", IFNULL(T1."BeginStr", '') + CAST(T0."DocNum" AS varchar(20)) + IFNULL(T1."EndStr", '') AS "PrintedNumber", T0."DocDate", T0."CardCode", T0."DocTotal" FROM OINV T0 INNER JOIN NNM1 T1 ON T1."Series" = T0."Series" WHERE T0."DocDate" >= ADD_DAYS(CURRENT_TIMESTAMP, -30) ORDER BY T1."SeriesName", T0."DocNum"
Cole qualquer uma das duas versões em Ferramentas → Consultas → Gerador de consultas. Precisa do outro dialeto para a sua própria consulta? Use o conversor de SQL para HANA.
Erro comum: Tratar o DocNum como único
Com várias séries de numeração (por ano, por filial ou por tipo de documento), duas notas fiscais podem ter o mesmo DocNum em séries diferentes. Use DocEntry como chave, ou DocNum junto com Series. Compare também NextNumber com LastNum antes do fim do ano, senão os lançamentos param quando uma série se esgota. Veja Tabela OINV (cabeçalho da nota fiscal de saída).
Consultas prontas que usam a NNM1 (em inglês)
- Invoices created per user today: How many A/R invoices each SAP B1 user created today, with the total value.
Perguntas sobre a tabela NNM1
Qual tabela guarda o próximo número de documento no SAP Business One?
NNM1.NextNumber, por série. O documento guarda a sua série em Series.
O DocNum é único no SAP Business One?
Só dentro de uma série de numeração. DocEntry é a chave única de um documento.
Onde fica o prefixo de um número de documento?
Em NNM1.BeginStr (prefixo) e NNM1.EndStr (sufixo).
Tabelas relacionadas
OINV (Nota fiscal de saída (cabeçalho)) · ORDR (Pedido de venda (cabeçalho)) · OCRD (Parceiros de negócios) · pesquisar todas as tabelas do SAP Business One
Pronto para começar?
Diga do que você precisa. Você recebe uma resposta técnica clara, um escopo fechado e um preço, normalmente em até 24 horas.
