Usina BRAdvPL Guia
Entrar
← Todos os tópicos
ROTINA AUTOMáTICAPublicado

MATA261 — ExecAuto para transferência entre armazéns

MATA261 via MsExecAuto · estrutura posicional de aLinha

Guia de referência para desenvolver a chamada ExecAuto da rotina MATA261 em AdvPL, com atenção à estrutura posicional de aLinha.

MATA261MsExecAutoExecAutoRotina automáticaArraysAdvPL
01 · VISÃO GERAL

Visão geral

Esta página documenta a rotina MATA261 sob o ponto de vista do desenvolvimento AdvPL: como preparar a estrutura enviada ao MsExecAuto, quais posições compõem aLinha e quais cuidados tomar ao validar o contrato da rotina automática. Em versões posteriores ao exemplo histórico 11.8, aLinha é posicional: cada valor precisa permanecer exatamente na posição esperada pela rotina, inclusive posições vazias. O objetivo é servir como guia de referência para programação; a explicação funcional de processos Protheus ficará para um site dedicado no futuro.

02 · SINTAXE

Sintaxe

MATA261 via MsExecAuto · estrutura posicional de aLinha

Parâmetros

1 · D3_COD
CaractereObrigatório

Produto de origem. No exemplo, SB1->B1_COD.

2 · D3_DESCRI
CaractereObrigatório

Descrição do produto de origem.

3 · D3_UM
CaractereObrigatório

Unidade de medida do produto de origem.

4 · D3_LOCAL
CaractereObrigatório

Armazém de origem. No exemplo: 07.

5 · D3_LOCALIZ
CaractereOpcional

Endereço de origem. Mantenha a posição mesmo quando vazio.

6 · D3_COD
CaractereObrigatório

Produto de destino. No exemplo é o mesmo código da origem.

7 · D3_DESCRI
CaractereObrigatório

Descrição do produto de destino.

8 · D3_UM
CaractereObrigatório

Unidade de medida do produto de destino.

9 · D3_LOCAL
CaractereObrigatório

Armazém de destino. No exemplo: 11.

10 · D3_LOCALIZ
CaractereOpcional

Endereço de destino. Mantenha a posição mesmo quando vazio.

11 · D3_NUMSERI
CaractereOpcional

Número de série, quando aplicável.

12 · D3_LOTECTL
CaractereOpcional

Lote de controle da origem.

13 · D3_NUMLOTE
CaractereOpcional

Sublote/número de lote da origem, conforme o controle utilizado.

14 · D3_DTVALID
DataOpcional

Data de validade da origem. Use CTOD("") quando não aplicável.

15 · D3_POTENCI
NuméricoOpcional

Potência. No exemplo é zero.

16 · D3_QUANT
NuméricoObrigatório

Quantidade transferida. No exemplo: aDados[nX][2].

17 · D3_QTSEGUM
NuméricoOpcional

Quantidade na segunda unidade de medida. No exemplo é zero.

18 · D3_ESTORNO
CaractereOpcional

Indicador/informação de estorno.

19 · D3_NUMSEQ
CaractereOpcional

Número sequencial relacionado à movimentação.

20 · D3_LOTECTL
CaractereOpcional

Lote de controle na parte de destino. A posição é repetida intencionalmente.

21 · D3_DTVALID
DataOpcional

Data de validade na parte de destino. Use CTOD("") quando não aplicável.

22 · D3_ITEMGRD
CaractereOpcional

Item de grade, quando aplicável.

23 · D3_OBSERVA
CaractereOpcional

Observação da movimentação. No exemplo: OVHL.

Retorno

A página documenta a montagem de cada linha do array de itens; o retorno e o tratamento de erro dependem do fluxo MsExecAuto utilizado pela rotina chamadora.

03 · EXEMPLO PRÁTICO

Estrutura posicional para versões posteriores

Local aLinha := {}

AAdd(aLinha, SB1->B1_COD)       // D3_COD - origem
AAdd(aLinha, SB1->B1_DESC)      // D3_DESCRI - origem
AAdd(aLinha, SB1->B1_UM)        // D3_UM - origem
AAdd(aLinha, "07")              // D3_LOCAL - origem
AAdd(aLinha, "")                // D3_LOCALIZ - origem
AAdd(aLinha, SB1->B1_COD)       // D3_COD - destino
AAdd(aLinha, SB1->B1_DESC)      // D3_DESCRI - destino
AAdd(aLinha, SB1->B1_UM)        // D3_UM - destino
AAdd(aLinha, "11")              // D3_LOCAL - destino
AAdd(aLinha, "")                // D3_LOCALIZ - destino
AAdd(aLinha, "")                // D3_NUMSERI
AAdd(aLinha, "")                // D3_LOTECTL - origem
AAdd(aLinha, "")                // D3_NUMLOTE - origem
AAdd(aLinha, CTOD(""))          // D3_DTVALID - origem
AAdd(aLinha, 0)                 // D3_POTENCI
AAdd(aLinha, aDados[nX][2])     // D3_QUANT
AAdd(aLinha, 0)                 // D3_QTSEGUM
AAdd(aLinha, "")                // D3_ESTORNO
AAdd(aLinha, "")                // D3_NUMSEQ
AAdd(aLinha, "")                // D3_LOTECTL - destino
AAdd(aLinha, CTOD(""))          // D3_DTVALID - destino
AAdd(aLinha, "")                // D3_ITEMGRD
AAdd(aLinha, "OVHL")            // D3_OBSERVA
Resultado esperado

A linha contém 23 posições. Neste exemplo, o produto é transferido do armazém 07 para o 11.

04 · EXEMPLO PRÁTICO

Por que o exemplo 11.8 não deve ser copiado literalmente

// Referência histórica: estrutura identificada por campo
// { "D3_COD", <valor>, Nil }
//
// Versões posteriores deste guia: estrutura posicional
// AAdd(aLinha, <valor-da-posicao-1>)
// AAdd(aLinha, <valor-da-posicao-2>)
// ...
Resultado esperado

Os dois formatos representam contratos diferentes. Para o formato posicional, a ordem e a quantidade de posições fazem parte do contrato.

BOAS PRÁTICAS
  • A referência da Central de Atendimento TOTVS indicada nesta página é histórica e destinada ao Protheus 11.8; use-a como base conceitual e valide o contrato da rotina automática no release usado.
  • Nas versões posteriores tratadas neste exemplo, aLinha é posicional. Não remova uma posição porque o respectivo campo esteja vazio.
  • Preserve o tipo esperado em posições vazias: caractere vazio para campos de texto, CTOD("") para datas e zero para numéricos.
  • As posições 1 a 5 representam produto/armazém de origem e as posições 6 a 10 representam produto/armazém de destino.
  • D3_LOTECTL e D3_DTVALID aparecem novamente nas posições 20 e 21. Essa repetição faz parte da estrutura apresentada e não deve ser condensada.
  • Valide o array em homologação após atualização de release, patch ou pacote relacionado, pois a assinatura interna esperada pela rotina automática pode evoluir.
ARMADILHAS COMUNS
  • Misturar o formato do exemplo 11.8 com o formato posicional posterior pode causar erros de execução ou preenchimento incorreto.
  • Deslocar uma única posição altera a interpretação de todas as posições seguintes.
  • Não use nomes de campos nos comentários como substituto da ordem real: a rotina recebe os valores pela posição.
  • Cenários com lote, série, endereço ou segunda unidade de medida exigem preencher as respectivas posições conforme a configuração usada no ambiente e o contrato da rotina.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. Cross Segmento - Backoffice Linha Protheus - ADVPL - Exemplo execauto MATA261. Central de Atendimento TOTVS. Referência histórica indicada para Protheus 11.8. Acesso em 25 ago. 2026.
Situação
Publicado
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR
0 comentário(s) aprovado(s)

Comentários

Ainda não há comentários aprovados.

Entre com Google ou Microsoft para comentar.

Powered by Usina Docs · Alpha