MA103F4H — Como Customizar a Exibição de Pedidos na MATA103

Tempo de leitura: 4 minutos

Se você trabalha com customização Protheus e precisa manipular a forma como os pedidos de compra são exibidos na rotina de Documento de Entrada (MATA103), o Ponto de Entrada MA103F4H é a ferramenta ideal em ADVPL!

Este post detalha a funcionalidade e apresenta um exemplo ADVPL prático para você aplicar em seu ambiente TOTVS Protheus.


🚀 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.

🎯 O que é o Ponto de Entrada MA103F4H?

O Ponto de Entrada MA103F4H é um exit point essencial no módulo SIGACOM – Compras do Protheus. Ele é disparado na rotina Documento de Entrada (MATA103), especificamente no momento da seleção e exibição dos pedidos de compra vinculados ao fornecedor, antes que a tela de itens dos pedidos seja apresentada.

 

✨ Funcionalidade e Aplicações

O MA103F4H permite que o desenvolvedor ADVPL filtre, altere ou manipule o array de pedidos de compra que será mostrado ao usuário.

 

💻 Exemplo em ADVPL do Ponto de Entrada MA103F4H

Abaixo, apresentamos um exemplo de Ponto de Entrada MA103F4H que demonstra como filtrar os pedidos de compra com base em uma condição específica antes de serem exibidos ao usuário na MATA103.

Este Ponto de Entrada recebe um array, por referência, contendo os pedidos de compra (SC7). A alteração desse array refletirá na tela de seleção.

#Include 'Protheus.ch'
#Include 'TopConn.ch'

/*/{Protheus.doc} MA103F4H
Ponto de Entrada para manipulação do array de Pedidos de Compra 
na rotina Documento de Entrada (MATA103).
@author ProtheusAdvpl
@since 03/11/2025
@version 1


@type User Function
@example 
U_MA103F4H()
*/
User Function MA103F4H()
Local aPedCom  := ParamIXB[1] // Array de Pedidos de Compra (SC7) - Recebido por referência
Local aNewPed  := {}           // Novo array para armazenar os pedidos filtrados
Local aLinha   := {}           // Linha atual do array aPedCom
Local cStatus  := ""           // Status do Pedido (SC7->C7_ESTADO)
Local cNumPed  := ""           // Número do Pedido (SC7->C7_NUM)

// Verifica se o array foi recebido e se contém informações
If ValType(aPedCom) == 'A' .And. Len(aPedCom) > 0

    // Itera sobre o array de pedidos de compra
    For nI := 1 To Len(aPedCom)
        aLinha  := aPedCom[nI]
        cNumPed := aLinha[1] // Supondo que o primeiro elemento seja o C7_NUM
        
        // Exemplo de como obter um campo do SC7:
        // CUIDADO: O array aPedCom não é um array de registros, é um array de arrays 
        // com informações específicas. O mais seguro é buscar o registro.
        
        // Exemplo: Buscar o Status do Pedido de Compra (C7_ESTADO) no SC7
        DbSelectArea("SC7")
        DbSetOrder(1) // C7_NUM + C7_ITEM
        If DbSeek(xFilial("SC7") + cNumPed)
            // Lê o status (Exemplo: "L" para Liberado)
            cStatus := SC7->C7_ESTADO
        Else
            cStatus := ""
        EndIf

        // --- Regra de Negócio: Filtra apenas Pedidos com Status 'L' (Liberado) ---
        // Você pode implementar qualquer regra de negócio aqui (Ex: C7_USER = "UsuarioX", C7_MOEDA = "1", etc.)
        If AllTrim(cStatus) == "L" 
           AAdd(aNewPed, aLinha)
        EndIf
        // --------------------------------------------------------------------------
    Next nI
    
    // Zera o array original e o popula com os pedidos filtrados
    ASize(aPedCom, 0) 
    AAdd(aPedCom, AClone(aNewPed))
    
    // Limpa a memória
    aNewPed := Nil
EndIf

Return(Nil)

 

🚀 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.

Domine os Pontos de Entrada e o Backoffice

Para dominar este conceito em cenários complexos, como a amarração de pedidos por contratos de parceria ou validações fiscais avançadas na MATA103, 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:

 

 

Dicas de Especialista

  1. Performance: Como este PE itera sobre uma lista de pedidos, evite realizar queries complexas dentro do
    1
    For/Next
    . Utilize índices e
    1
    DbSeek
    para manter a agilidade da tela.
  2. Referência: Lembre-se que o array é passado por referência. Qualquer alteração estrutural nele impactará diretamente a rotina padrão.
  3. Complementaridade: Utilize o MA103F4H em conjunto com o MT103PN para garantir que, além de filtrar a exibição, a gravação final também respeite suas regras de negócio.
 

 

Conclusão

O Ponto de Entrada MA103F4H é uma ferramenta poderosa para elevar o nível de controle no módulo de Compras (SIGACOM). Ao personalizar a exibição de pedidos, você reduz o tempo de lançamento e minimiza erros operacionais no Backoffice. 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.