Ponto de Entrada M103BROW: Personalizando a Visualização do Browse

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.


🚀 Quer evoluir no ADVPL de verdade?

Receba conteúdos práticos, códigos prontos e dicas que você 

 não aprende na documentação oficial

✔ Funções essenciais do ADVPL
✔ Exemplos reais usados no Protheus
✔ Dicas de debug e performance

🔐 Seu email está seguro. Sem spam.

🎯 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

  1. Campos de Auditoria: Exibir na grade o usuário que incluiu a nota ou a data de inclusão em um campo customizado.
  2. Informações Fiscais: Mostrar o CFOP ou regime tributário consolidado diretamente no browse para facilitar a conferência.
  3. 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):

 

 

Conteúdos relacionados

 
💼 Trabalha com módulos do Protheus?

Receba dicas práticas, soluções de erros e rotinas reais do dia a dia

✔ Problemas reais resolvidos
✔ Dicas de processos
✔ Otimização de rotinas  

🔐 Sem spam. Só conteúdo útil.
🚀 Quer dominar o Protheus de verdade?
Entre para o ProtheusAdvpl e receba conteúdos exclusivos sobre desenvolvimento, infraestrutura, módulos e carreira no Protheus

✔ Conteúdos organizados por categorias (Programação, Framework, Backoffice e RH)
✔ Dicas práticas usadas no dia a dia do Protheus
✔ Acesso a materiais, post e atualizações do Blog
🔐 Seu email está seguro. Sem spam. Só conteúdo profissional.