[RESOLVIDO] Arquivo CSV

Discussão em 'EMS , HCM e Totvs 11' iniciado por Tiago.Rodrigues, Abril 16, 2012.

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

    Tiago.Rodrigues Sem Pontuação

    Bom Dia!

    estou iniciando no progress e ainda tenho algumas duvidas.

    Devo desenvolver um programa de exportação com a extenção .csv porém eme esta me dando um erro que não conseigo encontrar.
    o erro é:
    "Procedure pi-executar c:\temp\p11435_esnu0001rp.ab passed parameters to esp/esnu0001rp.p, which didn't expect any. (1005)"

    algém saberia me dizer no que estou errando?
    minha pi-executar:

    /*------------------------------------------------------------------------------
    Purpose:
    Parameters: <none>
    Notes:
    ------------------------------------------------------------------------------*/

    do on error undo, return error
    on stop undo, return error:

    {include/i-rpexa.i}

    if input frame f-pg-log rs-destino = 2 and
    input frame f-pg-log rs-execucao = 1 then do:
    run utp/ut-vlarq.p (input input frame f-pg-log c-arquivo-destino).
    if return-value = "nok":U then do:
    run utp/ut-msgs.p (input "show":U,
    input 73,
    input "").
    apply 'mouse-select-click':U to im-pg-log in frame f-import.
    apply 'entry':U to c-arquivo-destino in frame f-pg-log.
    return error.
    end.
    end.

    run utp/ut-vlarq.p (input frame f-pg-par c-arquivo-entrada).
    if return-value = "nok" then do:
    run utp/ut-msgs.p (input "show",
    input 73,
    input "").
    apply 'mouse-select-click' to im-pg-log in frame f-import.
    apply 'entry' to c-arquivo-destino in frame f-pg-log.
    return error.
    end.



    /*:T Coloque aqui as validações das outras páginas, lembrando que elas
    devem apresentar uma mensagem de erro cadastrada, posicionar na página
    com problemas e colocar o focus no campo com problemas */

    create tt-param.
    assign tt-param.usuario = c-seg-usuario
    tt-param.destino = input frame f-pg-log rs-destino
    /* tt-param.todos = input frame f-pg-log rs-todos */
    tt-param.arq-entrada = input frame f-pg-par c-arquivo-entrada
    tt-param.data-exec = today
    tt-param.hora-exec = time

    tt-param.tt-ini-ge-codigo = INPUT FRAME f-pg-sel fi-ini-ge-codigo
    tt-param.tt-fim-ge-codigo = INPUT FRAME f-pg-sel fi-fim-ge-codigo
    tt-param.tt-ini-fm-codigo = INPUT FRAME f-pg-sel fi-ini-fm-codigo
    tt-param.tt-fim-fm-codigo = INPUT FRAME f-pg-sel fi-fim-fm-codigo
    tt-param.tt-ini-it-codigo = INPUT FRAME f-pg-sel fi-ini-it-codigo
    tt-param.tt-fim-it-codigo = INPUT FRAME f-pg-sel fi-fim-it-codigo.

    if tt-param.destino = 1 then
    assign tt-param.arq-destino = "".
    else
    if tt-param.destino = 2 then
    assign tt-param.arq-destino = input frame f-pg-log c-arquivo-destino.
    else
    assign tt-param.arq-destino = session:temp-directory + c-programa-mg97 + ".tmp":U.

    /*:T Coloque aqui a lógica de gravação dos parâmtros e seleção na temp-table
    tt-param */

    {include/i-imexb.i}

    if session:set-wait-state("general":U) then.

    {include/i-imrun.i esp/esnu0001rp.p}

    {include/i-imexc.i}

    if session:set-wait-state("") then.

    {include/i-imtrm.i tt-param.arq-destino tt-param.destino}

    end.

    END PROCEDURE.
  2. lima

    lima Membro Participativo

    Bom dia Amigo,

    o problema não está no seu .w e sim no seu rp.p, o mesmo deve contar a lógica de acompanhamento, run pi-acompanhar in h-acomp, deve-se passar um parâmetro, conforme exemplo abaixo:

    run pi-inicializar in h-acomp(input "teste").
    run pi-acompanhar in h-acomp(input "teste 1").

    Abraços.
  3. Tiago.Rodrigues

    Tiago.Rodrigues Sem Pontuação

    Lima, meu código consta o h-acomp, da uma olhada como está

    /* bloco principal do programa */
    assign c-programa = "ESNU0001RP"
    c-versao = "2.06"
    c-revisao = ".00.001"
    c-empresa = "Nufarm"
    c-sistema = 'ems2esp'
    c-titulo-relat = "Listagem de Exportação de Itens Comprados".
    view stream str-rp frame f-cabec.
    view stream str-rp frame f-rodape.
    run utp/ut-acomp.p persistent set h-acomp.
    {utp/ut-liter.i Exportando *}

    run pi-inicializar in h-acomp (input RETURN-VALUE).


    /* define a saída para o arquivo de saída informando na página de parâmetros */
    output stream s-exp TO value(tt-param.arq-entrada).


    /* bloco principal do programa */

    FOR EACH ITEM,
    EACH exp-it-comp-cus-pad WHERE exp-it-comp-cus-pad.it-codigo = item.it-codigo
    AND exp-it-comp-cus-pad.it-codigo >= tt-param.tt-ini-it-codigo
    AND exp-it-comp-cus-pad.it-codigo <= tt-param.tt-fim-it-codigo ,
    EACH estabelec WHERE exp-it-comp-cus-pad.cod-estabel = estabelec.cod-estabel,
    EACH grup-estoque WHERE grup-estoque.ge-codigo = ITEM.ge-codigo
    on stop undo, LEAVE:

    run pi-acompanhar in h-acomp (input string(exp-it-comp-cus-pad.cod-estabel)).

    put stream s-exp unformatted string(exp-it-comp-cus-pad.cod-estabel, "x(3)") ";"
    string(exp-it-comp-cus-pad.it-codigo, "x(16)") ";"
    string(ITEM.desc-item, "x(60)") ";"
    string(grup-estoque.ge-codigo, "99") ";"
    string(ITEM.un,"xx") ";"
    string(exp-it-comp-cus-pad.dt-ult-cust, "99/99/99") ";"
    string(exp-it-comp-cus-pad.cust-padrao, "999,999.99") ";"
    skip.
    end.
    output stream s-exp close.


    /*fechamento do output do log */
    {include/i-rpclo.i &STREAM="stream str-rp"}
    run pi-finalizar in h-acomp.
    return "Ok":U.

    ai tem um detalhe, se eu for no diretório onde se encontra o programa e apagar o .r, o programa roda, cria o meu arquivo no diretório onde eu definir, porém o bloco de notas que abre como modelo vem vazio e o meu arquivo .csv também retorna vazio.
  4. lima

    lima Membro Participativo

    Desculpa Tiago, vi o nome da procedure errada, rsrs.

    Não tem nada haver com o acompanhamento, o erro é o seguinte.

    no seu .w, tem uma include onde vc passa o nome do rp.p que vc irá chamar. esta include(include/i-imrun.i), internamente chama o seu programa rp.p sempre passando como parâmetro o seguinte:

    run {1} (input raw-param,
    input table tt-raw-digita).

    Então, você não deve estar recebendo parâmetro algum no seu rp.p, por isso está dando o erro, num lado passar parâmetro e no outro não recebe. Você deve colocar as linhas abaixo no seu rp.p para que funcione:

    DEFINE INPUT PARAMETER raw-param AS RAW NO-UNDO.
    DEFINE INPUT PARAMETER TABLE FOR tt-raw-digita.

    A definição da temp-table tt-raw-digita deve ser a mesma definição da temp-table tt-digita do seu .w.

    Faça isso e retorne se funcionou.

    Abraços.
  5. Tiago.Rodrigues

    Tiago.Rodrigues Sem Pontuação

    Lima,

    Não funcionon não.

    os dois parametros dos quais vc me passou ja estávam definidos anteriormente.

    eu utilizei um modelo do manual de padões para monta-lo.
    segue meu rp.p completo:

    /* include de controle de versão */
    {include/i-prgvrs.i ESNU0001RP 2.06.00.001}

    /* definição das temp-tables para recebimento de parâmetros */
    define temp-table tt-param
    field destino as integer
    field arq-destino as char
    field arq-entrada as CHAR
    field usuario as char
    field data-exec as date
    field hora-exec as integer
    FIELD tt-ini-ge-codigo AS INT
    FIELD tt-fim-ge-codigo AS INT
    FIELD tt-ini-fm-codigo AS CHAR
    FIELD tt-fim-fm-codigo AS CHAR
    FIELD tt-ini-it-codigo AS CHAR
    FIELD tt-fim-it-codigo AS CHAR.

    def temp-table tt-raw-digita
    field raw-digita as raw.


    /* recebimento de parâmetros */
    def input parameter raw-param as raw no-undo. <--- aqui já estavam os parametros que me passou
    def input parameter TABLE for tt-raw-digita. <---
    create tt-param.
    RAW-TRANSFER raw-param to tt-param.


    /* include padrão para variáveis para o log */
    {include/i-rpvar.i}


    /* definição de variáveis e streams */
    def stream s-exp.
    def var h-acomp as handle no-undo.


    /* definição de frames do log */
    /* include padrão para output de log */
    {include/i-rpout.i &STREAM="stream str-rp" &TOFILE=tt-param.arq-destino}


    /* include com a definição da frame de cabeçalho e rodapé */
    {include/i-rpcab.i &STREAM="str-rp"}


    /* bloco principal do programa */
    assign c-programa = "ESNU0001RP"
    c-versao = "2.06"
    c-revisao = ".00.001"
    c-empresa = "Nufarm"
    c-sistema = 'ems2esp'
    c-titulo-relat = "Listagem de Exportação de Itens Comprados".
    view stream str-rp frame f-cabec.
    view stream str-rp frame f-rodape.
    run utp/ut-acomp.p persistent set h-acomp.
    {utp/ut-liter.i Exportando *}

    run pi-inicializar in h-acomp (input RETURN-VALUE).


    /* define a saída para o arquivo de saída informando na página de parâmetros */
    output stream s-exp TO value(tt-param.arq-entrada).


    /* bloco principal do programa */
    FOR EACH ITEM,
    EACH exp-it-comp-cus-pad WHERE exp-it-comp-cus-pad.it-codigo = item.it-codigo
    AND exp-it-comp-cus-pad.it-codigo >= tt-param.tt-ini-it-codigo
    AND exp-it-comp-cus-pad.it-codigo <= tt-param.tt-fim-it-codigo,
    EACH estabelec WHERE exp-it-comp-cus-pad.cod-estabel = estabelec.cod-estabel,
    EACH grup-estoque WHERE grup-estoque.ge-codigo = ITEM.ge-codigo
    on stop undo, LEAVE:

    run pi-acompanhar in h-acomp (input string(exp-it-comp-cus-pad.cod-estabel)).

    put stream s-exp unformatted string(exp-it-comp-cus-pad.cod-estabel, "x(3)") ";"
    string(exp-it-comp-cus-pad.it-codigo, "x(16)") ";"
    string(ITEM.desc-item, "x(60)") " ;"
    string(grup-estoque.ge-codigo, "99") ";"
    string(ITEM.un,"xx") ";"
    string(exp-it-comp-cus-pad.dt-ult-cust, "99/99/99") ";"
    string(exp-it-comp-cus-pad.cust-padrao, "999,999.99") ";"
    skip.
    end.
    output stream s-exp close.


    /*fechamento do output do log */
    {include/i-rpclo.i &STREAM="stream str-rp"}
    run pi-finalizar in h-acomp.
    return "Ok":U.


    ja refiz tanto o .w quanto o .p mas mesmo assim não da certo.
  6. lima

    lima Membro Participativo

    Tem algo sinistro ai amigo...

    você está compilando o objeto correto? aquele erro ocorre conforme a situação que eu te expliquei.. quando tenta passar parâmetro e o outro lado não está preparado para receber...
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página