MsExecAuto

Executa uma rotina padrao Protheus (MATA010, MATA030, MATA410...) em modo automatico (sem interface). Base de toda integracao batch.

Assinatura: MsExecAuto({|x,y,z| Rotina(x,y,z)}, aCab, aItens, nOpc) -> NIL

Retorna: NIL — sucesso/erro via lMsErroAuto

MsExecAuto e o ponto de entrada pra automatizar qualquer rotina padrao do Protheus. Voce monta arrays (cabecalho + itens) com os dados, chama a funcao alvo via codeblock, e o framework executa todas as validacoes/gatilhos como se o usuario estivesse digitando.

Sintaxe basica

Private lMsErroAuto := .F.

MsExecAuto({|x,y,z| Mata030(x,y,z)}, aCabec, /*aItens*/, 3)

If lMsErroAuto
    MostraErro()       // mostra erro
    DisarmTransaction()
EndIf

Opcoes (nOpc)

CodigoOperacao
1Pesquisar (raro)
2Visualizar
3Incluir
4Alterar
5Excluir

Pegadinhas (todas mordem)

Exemplo completo — incluir cliente (MATA030)

User Function IncCli()
    Local aCab := {}
    Private lMsErroAuto := .F.

    aAdd(aCab, {"A1_COD",     "999999",        NIL})
    aAdd(aCab, {"A1_LOJA",    "01",            NIL})
    aAdd(aCab, {"A1_NOME",    "CLIENTE TESTE", NIL})
    aAdd(aCab, {"A1_PESSOA",  "J",             NIL})
    aAdd(aCab, {"A1_CGC",     "00000000000000",NIL})
    aAdd(aCab, {"A1_TIPO",    "F",             NIL})
    aAdd(aCab, {"A1_END",     "RUA TESTE 100", NIL})

    MsExecAuto({|x,y| Mata030(x,y)}, aCab, 3)   // 3 = incluir

    If lMsErroAuto
        ConOut("Erro: " + MostraErro())
        DisarmTransaction()
    Else
        ConOut("Cliente incluido OK")
    EndIf
Return

Boilerplate pronto

A skill claude-advpl-skill tem 6 templates prontos via /advpl-boilerplate: execauto-mata010 (produto), mata020 (fornecedor), mata030 (cliente), mata410 (pedido), fina040 (titulo), fina070 (baixa).

Parâmetros

NomeTipoObrigatórioDescrição
bRotinaCodeBlocksimCodeblock chamando a rotina automatica (ex: {|x,y,z| Mata010(x,y,z)}).
aCabecArraysimArray de cabecalho com triplas { cCampo, xValor, NIL }.
aItensArraynãoArray de itens (so pra rotinas com grid).
nOpcNumericsim3=Incluir, 4=Alterar, 5=Excluir, 2=Visualizar.

Veja também