[RESOLVIDO] Usar função (total by )

Discussão em 'EMS , HCM e Totvs 11' iniciado por agnotato, Novembro 23, 2012.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. agnotato

    agnotato Sem Pontuação

    Boa tarde pessoal!
    Estou desenvolvendo um relatório e estou com um problema para executar a função "total by" para somar os o valores de uma determinada coluna. Coloquei a função dentro do DISPLAY STREAM str-rp, e preciso somar os valores totais da nota por dia, então dei um BREAK BY em nota-fiscal.dt-emis-nota. Até aí tudo bem , mas na hora de executar ele dá um erro que " Não pode gravar em fluxo fechado" não sei o que é isso pois sou novato nessa área.

    Alguém saberia resolver me problema?

    Obrigado

    IF tt-param.classifica = 1 THEN DO:

    /* Execussão do Parametro Totalizar Faturamento */

    IF tt-param.tt-param-1 = YES THEN DO:

    FOR EACH nota-fiscal WHERE
    nota-fiscal.cod-estabel >= tt-param.tt-ini-cod-estabel AND
    nota-fiscal.cod-estabel <= tt-param.tt-fim-cod-estabel AND
    nota-fiscal.serie >= tt-param.tt-ini-serie AND
    nota-fiscal.serie <= tt-param.tt-fim-serie AND
    nota-fiscal.dt-emis-nota >= tt-param.tt-ini-dt-emis-nota AND
    nota-fiscal.dt-emis-nota <= tt-param.tt-fim-dt-emis-nota AND
    nota-fiscal.nr-nota-fis >= tt-param.tt-ini-nr-nota-fis AND
    nota-fiscal.nr-nota-fis <= tt-param.tt-fim-nr-nota-fis AND
    nota-fiscal.nat-operacao >= tt-param.tt-ini-nat-operacao AND
    nota-fiscal.nat-operacao <= tt-param.tt-fim-nat-operacao AND
    nota-fiscal.cod-emitente >= tt-param.tt-ini-cod-emitente AND
    nota-fiscal.cod-emitente <= tt-param.tt-fim-cod-emitente AND
    nota-fiscal.serie <> "ns"
    BREAK BY nota-fiscal.dt-emis-nota: /* break para quebrar linha por data*/
    FOR EACH natur-oper WHERE
    natur-oper.nat-operacao = nota-fiscal.nat-operacao AND
    natur-oper.tipo = 2:

    RUN pi-acompanhar IN h-acomp (INPUT STRING(nota-fiscal.cod-estabel + " / " + nota-fiscal.serie + " / " + nota-fiscal.nr-nota-fis)).

    FIND LAST sit-nf-eletro WHERE sit-nf-eletro.cod-nota-fis = nota-fiscal.nr-nota-fis NO-ERROR.
    FIND FIRST emitente WHERE emitente.cod-emitente = nota-fiscal.cod-emitente NO-ERROR.

    ASSIGN c-tipoemissao = SUBSTRING (nota-fiscal.char-2,65,2).
    ASSIGN c-protocolo = SUBSTRING (nota-fiscal.char-1,97,15).
    ASSIGN c-chavenfe = SUBSTRING (nota-fiscal.char-2,3,44).

    IF sit-nf-eletro.idi-sit-nf-eletro = 1 THEN
    c-mensagem = "NF-e Não Gerada".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 2 THEN
    c-mensagem = "Em Proc. no EAI".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 3 THEN
    c-mensagem = "Uso Autorizado".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 4 THEN
    c-mensagem = "Uso Denegado".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 5 THEN
    c-mensagem = "Documento Rejeitado".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 6 THEN
    c-mensagem = "Documento Cancelado".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 7 THEN
    c-mensagem = "Documento Inutilizado".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 8 THEN
    c-mensagem = "Em Proc. Aplic. Transm.".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 9 THEN
    c-mensagem = "Em Proc. no Sefaz".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 10 THEN
    c-mensagem = "Em proc. no Scan".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 11 THEN
    c-mensagem = "NF-e Gerada".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 12 THEN
    c-mensagem = "NF-e em Proc. Cancelamento".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 13 THEN
    c-mensagem = "NF-e em Proc. Inutilização".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 14 THEN
    c-mensagem = "NF-e Pendente de Retorno.".
    ELSE IF sit-nf-eletro.idi-sit-nf-eletro = 15 THEN
    c-mensagem = "DEPEC Receb. pelo SCE".

    IF c-tipoemissao = "1" THEN
    c-mensagem2 = "Normal".
    ELSE IF c-tipoemissao = "2" THEN
    c-mensagem2 = "Contingencia FS".
    ELSE IF c-tipoemissao = "3" THEN
    c-mensagem2 = "Contingencia SCAN".
    ELSE IF c-tipoemissao = "4" THEN
    c-mensagem2 = "Contingencia DPEC".
    ELSE IF c-tipoemissao = "5" THEN
    c-mensagem2 = "Contingencia FS-DA".

    c-total = c-total + INPUT nota-fiscal.vl-tot-nota.
    DISP nota-fiscal.vl-tot-nota.

    DISPLAY STREAM str-rp
    nota-fiscal.cod-estabel
    nota-fiscal.serie
    nota-fiscal.nr-nota-fis
    nota-fiscal.dt-emis-nota
    nota-fiscal.nat-operacao
    nota-fiscal.vl-tot-nota (total by nota-fiscal.dt-emis-nota) /* função para somar por dia */
    emitente.nome-abrev
    c-mensagem
    c-mensagem2
    c-protocolo
    c-chavenfe

    WITH FRAME f-cod-estabel.
    DOWN STREAM str-rp WITH FRAME f-cod-estabel.
    END.
    END.
    END.
  2. af.dums

    af.dums Membro Ativo

    Bom dia...

    Pergunta, meio básica mas, sem o total by gera normalmente?
  3. eriutoncharles

    eriutoncharles Membro Participativo

    Bom dia !!

    Se você quer mostrar o somatório após a ultima linha daquela data.. teria que fazer algo.. IF LAST-OF(Tabela.ColunaData) THEN DO: DISP ACCUM TOTAL BY Tabela.ColunaData Tabela.ColunaValor.

    Será que não seria isso que está dando erro ai?
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página