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

Tempo de leitura: 3 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

@Inscreva-se no Blog ProtheusAdvpl:
https://www.protheusadvpl.com.br
@Inscreva-se no Canal ProtheusAdvpl:
https://www.youtube.com/protheusadvpl
@Siga-nos no Instagram:
https://www.instagram.com/protheusadvpl
@Conheça os Cursos do ProtheusAdvpl:
https://cursos-e-formacoes-protheusadvpl.gr-site.com/
@Participe de nossas comunidades no WhatsApp:
-Comunidade Protheus Backoffice:https://chat.whatsapp.com/KMUIAjwZ6EZ6eAHsLkPTyb
-Comunidade Protheus-RH:https://chat.whatsapp.com/L5dUyAna6xU4ylG5DUgfOW
-Comunidade Protheus-Programação:https://chat.whatsapp.com/LsD6z0apdqKHlOz67bcaEn
-Comunidade Protheus-Framework:https://chat.whatsapp.com/BzUFpjaSnTC3vtsfa77jmG

|Se esse conteúdo foi útil pra você nos ajude divulgando 
ele e nossas redes sociais!!|

*/
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

 

 


Bem, finalizamos mais um post aqui do Blog ProtheusAdvpl.

Se esse conteúdo lhe foi útil nos ajude compartilhando ele em suas redes sociais do TOTVS Protheus.

Grande abraço e fica com Deus.

Receba as últimas atualizações do ProtheusAdvpl
Deixe seu melhor email
Nós respeitamos sua privacidade.