Usina BRGuía AdvPL
Ingresar
← Todos los temas
RUTINA AUTOMáTICAPublicado

MATA261 — ExecAuto para transferencia entre almacenes

MATA261 via MsExecAuto · estrutura posicional de aLinha

Guía de referencia para desarrollar la llamada ExecAuto de MATA261 en AdvPL, con atención a la estructura posicional de aLinha.

MATA261MsExecAutoExecAutoRutina automáticaArraysAdvPL
01 · DESCRIPCIÓN GENERAL

Descripción general

Esta página documenta la rutina MATA261 desde la perspectiva del desarrollo AdvPL: cómo preparar la estructura enviada a MsExecAuto, qué posiciones componen aLinha y qué cuidados tomar al validar el contrato de la rutina automática. En versiones posteriores al ejemplo histórico 11.8, aLinha es posicional: cada valor debe permanecer exactamente en la posición esperada por la rutina, incluso las posiciones vacías. El objetivo es servir como guía de referencia de programación; las explicaciones funcionales de procesos Protheus podrán enlazarse desde un sitio dedicado en el futuro.

02 · SINTAXIS

Sintaxis

MATA261 via MsExecAuto · estrutura posicional de aLinha

Parámetros

1 · D3_COD
CaractereObligatorio

Producto de origen. SB1->B1_COD en el ejemplo.

2 · D3_DESCRI
CaractereObligatorio

Descripción del producto de origen.

3 · D3_UM
CaractereObligatorio

Unidad de medida de origen.

4 · D3_LOCAL
CaractereObligatorio

Almacén de origen. 07 en el ejemplo.

5 · D3_LOCALIZ
CaractereOpcional

Ubicación de origen. Conserva la posición aunque esté vacía.

6 · D3_COD
CaractereObligatorio

Producto de destino. El mismo código del origen en el ejemplo.

7 · D3_DESCRI
CaractereObligatorio

Descripción del producto de destino.

8 · D3_UM
CaractereObligatorio

Unidad de medida de destino.

9 · D3_LOCAL
CaractereObligatorio

Almacén de destino. 11 en el ejemplo.

10 · D3_LOCALIZ
CaractereOpcional

Ubicación de destino. Conserva la posición aunque esté vacía.

11 · D3_NUMSERI
CaractereOpcional

Número de serie, cuando corresponda.

12 · D3_LOTECTL
CaractereOpcional

Lote de control de origen.

13 · D3_NUMLOTE
CaractereOpcional

Lote/sublote de origen según el control utilizado.

14 · D3_DTVALID
DataOpcional

Fecha de validez de origen. Usa CTOD("") cuando no corresponda.

15 · D3_POTENCI
NuméricoOpcional

Potencia. Cero en el ejemplo.

16 · D3_QUANT
NuméricoObligatorio

Cantidad transferida. aDados[nX][2] en el ejemplo.

17 · D3_QTSEGUM
NuméricoOpcional

Cantidad en segunda unidad. Cero en el ejemplo.

18 · D3_ESTORNO
CaractereOpcional

Indicador/información de reversión.

19 · D3_NUMSEQ
CaractereOpcional

Número secuencial relacionado con el movimiento.

20 · D3_LOTECTL
CaractereOpcional

Lote de control en la sección de destino. La repetición es intencional.

21 · D3_DTVALID
DataOpcional

Fecha de validez en la sección de destino. Usa CTOD("") cuando no corresponda.

22 · D3_ITEMGRD
CaractereOpcional

Ítem de cuadrícula, cuando corresponda.

23 · D3_OBSERVA
CaractereOpcional

Observación del movimiento. OVHL en el ejemplo.

Retorno

Esta página documenta la estructura de la línea de ítems; el retorno y el manejo de errores dependen del flujo MsExecAuto utilizado por la rutina llamadora.

03 · EJEMPLO PRÁCTICO

Estructura posicional para versiones posteriores

Local aLinea := {}

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

La línea contiene 23 posiciones y transfiere el producto del almacén 07 al 11.

04 · EJEMPLO PRÁCTICO

Por qué el ejemplo 11.8 no debe copiarse 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

El formato heredado identificado por campo y el formato posicional posterior son contratos diferentes.

BUENAS PRÁCTICAS
  • La referencia de la Central de Atención TOTVS citada aquí es histórica y está destinada a Protheus 11.8; úsala como base conceptual y valida el contrato de la rutina automática en el release utilizado.
  • En las versiones posteriores tratadas por este ejemplo, aLinha es posicional. No elimines una posición porque su campo esté vacío.
  • Mantén el tipo esperado en las posiciones vacías: cadena vacía para caracteres, CTOD("") para fechas y cero para numéricos.
  • Las posiciones 1 a 5 representan producto/almacén de origen y las posiciones 6 a 10 representan producto/almacén de destino.
  • D3_LOTECTL y D3_DTVALID aparecen nuevamente en las posiciones 20 y 21; no combines esas posiciones.
  • Vuelve a validar el array después de actualizaciones de release, patch o paquete relacionado.
ERRORES COMUNES
  • Mezclar el formato 11.8 con el formato posicional posterior puede causar errores de ejecución o valores incorrectos.
  • Mover un solo valor desplaza la interpretación de todas las posiciones siguientes.
  • Los nombres de campos en comentarios no sustituyen el contrato posicional.
  • Los escenarios con lote, serie, ubicación o segunda unidad requieren completar las posiciones correspondientes según la configuración usada en el ambiente y el contrato de la rutina.

Contenido relacionado

REFERENCIAS
  1. TOTVS. Cross Segmento - Backoffice Linha Protheus - ADVPL - Exemplo execauto MATA261. Central de Atención TOTVS. Referencia histórica identificada para Protheus 11.8. Acceso: 25 ago. 2026.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR
0 comentario(s) aprobado(s)

Comentarios

Todavía no hay comentarios aprobados.

Inicia sesión con Google o Microsoft para comentar.

Desarrollado con Usina Docs · Alpha