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.