SuperGetMv
Versao moderna do GetMv que aceita parametro por filial. Util quando a SX6 tem valores diferentes por filial e voce precisa controlar qual ler.
Assinatura: SuperGetMv(cParam, lCache, xDefault, cFilial) -> xValor
Retorna: Any
SuperGetMv e a evolucao do GetMv. A SX6 do Protheus suporta valor diferente por filial — SuperGetMv permite voce especificar de qual filial ler.
Sintaxe
xValor := SuperGetMv(cNome, lDesativaCache, xDefault, cFilial)Exemplo
// Le da filial corrente (mesmo comportamento de GetMv):
nLim := SuperGetMv("MV_LIMICRD", .F., 0)
// Le especificamente da filial 02:
nLim02 := SuperGetMv("MV_LIMICRD", .F., 0, "02010001")
// Comparar parametros entre filiais:
For i := 1 To Len(aFiliais)
nValor := SuperGetMv("MV_ALIQIPI", .F., 0, aFiliais[i])
ConOut(aFiliais[i] + ": " + cValToChar(nValor))
Next iQuando usar SuperGetMv vs GetMv
- GetMv: 95% dos casos — sempre filial corrente
- SuperGetMv: relatorios consolidados, validacoes cross-filial, troca de contexto temporaria
Pegadinhas
- Filial inexistente: retorna o default
- Cache: cada filial tem cache separado, evita re-query
- Performance: leitura por filial e ligeiramente mais lenta que
cFilAntimplicita
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cNome | Character | sim | Nome do parametro (MV_*) |
lDesativaCache | Logical | não | Default .F. |
xDefault | Any | não | Valor padrao |
cFilial | Character | não | Filial especifica (default cFilAnt) |
Exemplos
Ler de outra filial
nVal := SuperGetMv("MV_ALIQIPI", .F., 0, "02")