Tempo de leitura: 4 minutos
O ponto de entrada M103BROW é um recurso poderoso do ADVPL que permite customizar a visualização dos dados na tela de Browse da rotina de Documento de Entrada (MATA103). É ideal para quem precisa exibir informações adicionais ou realizar pré-validações antes que os registros sejam mostrados ao usuário.
🎯 Finalidade
O M103BROW é executado antes da exibição dos dados na tela de Browse da rotina MATA103 (Documento de Entrada / Nota Fiscal de Entrada).
Seu principal uso é manipular o array de colunas (aCols) que será exibido, permitindo:
-
Adicionar novas colunas (campos customizados ou informações calculadas).
-
Alterar o conteúdo de colunas existentes antes da visualização.
-
Realizar pré-validações ou ajustes nos dados que serão mostrados.
💻 Sintaxe do Ponto de Entrada
O Ponto de Entrada M103BROW é uma User Function que recebe como parâmetro o array de colunas (aCols) e deve retornar esse array, modificado ou não.
Código ADVPL:
#Include 'Protheus.ch'
/*/{Protheus.doc}
User Function U_M103BROW
@description Ponto de Entrada para manipulação do aCols no Browse do MATA103 (Documento de Entrada).
@type User Function
@param aCols Array de Colunas do Browse (passado por referência).
@return aCols Array de Colunas Modificado.
/*/
User Function M103BROW()
Local aCols := ParamIxb[1] // Array de colunas que será exibido no Browse
// Variáveis locais para manipulação (opcional)
Local nI := 0
Local cMsg := ""
// Se aCols não for um array válido ou não tiver sido passado, retorna sem erro
If !IsArray(aCols)
Return Nil
EndIf
// Lógica de Customização...
Return aCols // Retorna o array de colunas modificado
Parâmetros:
Retorno:
📝 Exemplo Prático
O exemplo abaixo mostra como adicionar uma coluna customizada (F1_XCAMPO) ao array de colunas do Browse, preenchendo-a com dados da tabela SF1 ou de uma função customizada.
#Include 'Protheus.ch'
#Include 'Topconn.ch' // Para usar funções de manipulação de alias
/*{Protheus.doc} User Function M103BROW
Exemplo de Ponto de Entrada M103BROW para adicionar uma coluna customizada em um Browse do Protheus.
@type Function
@author Adilio Costa
@since 31/10/2025
@version 1.0
User Function M103BROW()
Local aCols := PARAMIXB[1] // Array de colunas passado pelo PE
Local nI := 0 // Contador
Local cAliasF1 := GetArea() // Salva a área atual
Local cFilial := FWxFilial("SF1") // Filial da tabela SF1
Local cCampo := "F1_XCAMPO" // Nome do campo customizado (SX3)
Local nPosCol := Len(aCols) + 1 // Posição da nova coluna (última)
If !IsArray(aCols)
Return Nil
EndIf
// 1. Adiciona a nova coluna ao array de colunas.
// Formato: {Campo/Conteúdo, Título, Tamanho, Tipo, Decimal, Ordem, Alinhamento, Array de Validação, Ordem SQL}
AAdd(aCols, { cCampo , "Campo Customizado", 15, "C", 0, nPosCol, 0, Nil, 0 })
// 2. Percorre os registros no array e preenche o valor da nova coluna
DbSelectArea("SF1")
DbSetOrder(1) // Índice 1: Filial + Documento + Série
For nI := 1 To Len(aCols)
// Posiciona na SF1 para o registro atual do Browse
If MsSeek( cFilial + aCols[nI][1] + aCols[nI][2] ) // [1] = F1_DOC, [2] = F1_SERIE
// Posição da coluna de campo customizado (aCols[nI][nPosCol])
aCols[nI][nPosCol] := SF1->(cCampo) // Pega o valor do campo F1_XCAMPO
Else
aCols[nI][nPosCol] := "" // Se não encontrar, preenche vazio
EndIf
Next nI
// Restaura a área de trabalho
RestArea(cAliasF1)
Return aCols // Retorna o array modificado
Domine os Pontos de Entrada e o Backoffice
Para dominar este conceito e aprender a criar customizações complexas de interface, integrações fiscais e automações no SIGACOM, conheça o Portal ProtheusAdvpl. Lá, exploramos a fundo a arquitetura do Protheus e as melhores práticas para desenvolvedores seniores.
Cursos Recomendados para Programação e Backoffice:
Casos de Uso Comuns
- Campos de Auditoria: Exibir na grade o usuário que incluiu a nota ou a data de inclusão em um campo customizado.
- Informações Fiscais: Mostrar o CFOP ou regime tributário consolidado diretamente no browse para facilitar a conferência.
- Dados de Integração: Revelar o status de sincronização com sistemas externos (WMS, ERP) sem precisar abrir o registro.
Conclusão
O Ponto de Entrada M103BROW é uma ferramenta poderosa para elevar a experiência do usuário no módulo de Compras (SIGACOM). Ao enriquecer a tela de consulta com informações estratégicas, você reduz o tempo de busca e aumenta a eficiência operacional. Dominar ADVPL Avançado é o diferencial que transforma um programador em um consultor estratégico.
Links de referência(s):