Tempo aproximado para leitura: 00:10:00 min
Dúvida
Como inserir um excerto de código ADVPL (Advanced Protheus Language) no TOTVS Report?
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) – ADVPL – A partir da versão 11.8
Solução
Criar uma função de usuário que retorne o valor desejado.
Exemplo
Temos um relatório de pedidos de venda sintético (resumo de valores por pedido) e outro analítico (exibição de valor por item, e itens por pedido).
Em nosso relatório sintético, não temos a necessidade de utilizar de itens (SC6), apenas a tabela (SC5), porém os valores dos itens do pedido estão contidos na SC6, assim sendo, é necessário acumular os valores por número de pedido (C6_NUM).
- Crie um campo do tipo Fórmula:
- Crie a e compile função de usuário informada, recebendo no cabeçalho o número do pedido:
// BIBLIOTECA NECESSÁRIA
#Include "TOTVS.ch"
// FUNÇÃO: RETORNA VALORES DO PEDIDO DE COMPRA
User Function RetValPC(cNumPed) // RECEBE O NÚMERO DO PEDIDO CORRENTE
Local nTotal :=0 // VALOR TOTAL POR PEDIDO DE COMPRA
Local aArea := SC6->(GetArea()) // ARMAZENA A ÁREA PARA RESTAURAR APÓS OPERAÇÕES
SC6->(DbGoTop()) // MOVE O CURSOR PARA O TOPO DA TABELA
SC6->(DbSetOrder(1)) // ALTERA PARA O ÍNDICE 1: C6_FILIAL + C6_NUM + (...)
SC6->(MsSeek(FwXFilial("SC6") + cNumPed)) // USA O NÚMERO DO PEDIDO PARA PESQUISAR
// ENTÃO O NÚMERO DO PEDIDO FOR IGUAL AO NÚMERO CORRENTE NA
// TABELA SC6, ADICIONE O VALOR TOTAL DO ITEM A VARIAVEL NTOTAL
While (SC6->C6_NUM == cNumPed)
nTotal += SC6->C6_VALOR
SC6->(DbSkip())
End
// RESTAURA A ÁREA ORIGINAL (EVITA ERROS DE POSICIONAMENTO)
RestArea(aArea)
Return (nTotal) // RETORNA O VALOR PARA A COLUNA - Adicione uma função de usuário que receba o campo de número do pedido (C6_NUM):
- Impressão de relatório sintético:
- Impressão de relatório analítico:
Saiba mais
Configurando Relatórios Personalizáveis
0 Comentários