1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

[RESOLVIDO] Executar Relatório Em Servidor Rpw Através Do Webspeed

Discussão em 'EMS , HCM e Totvs 11' iniciado por yurifranzoni, Agosto 6, 2009.

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

    yurifranzoni Sem Pontuação

    Olá pessoal,

    Preciso de uma força dos feras em Datasul EMS. Aqui na empresa, estamos desenvolvendo um sistema em Flex com serviços que rodam no Webspeed. Esse sistema vai substituir o acesso que nossos usuários têm ao atual Datasul EMS Web Access.

    Um dos recursos desse sistema será uma espécie de "interface Flex" para o Relatório de Comissões do EMS 2.04, o CR0606. Em condições normais, a gente iria criar um .W no Webspeed que recebesse os parâmetros do usuário. Daí eu crio a temp-table tt-param que o CR0606 precisa e mando executar. A gente já faz isso hoje com outros programas e todos geram a saída em um arquivo .TXT em um local fixo, de onde depois eu mando o Flex buscar para que o usuário possa abrir ou salvar.

    O problema: esse CR0606 é um relatório meio pesado, que leva um bom tempo para ser executado, tornando-se inviável a execução dele via Flex, pois o usuário iria clicar em EXECUTAR e teria que esperar um bom tempo até o relatório ficar pronto.

    A solução: hoje, no EMS Web, o usuário tem a opção de mandar executar o relatório em um servidor RPW, que a gente disponibiliza aos usuários da Web. Depois o usuário puxa o arquivo TXT que foi gerado através de FTP, por exemplo.

    A DÚVIDA: como eu faço para chamar o CR0606RP.P, indicando que o processamento deve ser feito no servidor RPW de que nós dispomos? Lembrando que eu não posso contar com a janela .W do programa, ou seja, o usuário não vai ter condições de acessar o campo "Execução: online/batch" na página de Impressão do relatório.

    Se alguém puder me ajudar, fico devendo uma breja

    Abraço a todos!
  2. sidnei

    sidnei Membro Participativo

    ola yuri;

    na verdade vc nao chama o CR0606rp.p, quem deverá chamar ele é o programa programa de rpw que esta rodando em alguma maquina da sua empresa. O que vc precisa é cria um pedido de execução, dai o rpw irá executar esse pedido chamando o cr0606rp.p. abaixo vai um exemplo de como criar o pedido para o RPW.


    {btb/btb912zc.i2}
    {utp/ut-glob.i}
    define variable h-api as handle no-undo.

    /*essa temp table deverá tem a mesma estrutura da temp-table do cr0606. */
    /* ele é quem passa os parametros para o rpw executar o cr0606rp.p */
    define temp-table tt-param no-undo
    field destino as integer
    field arquivo as char format "x(300)"
    field usuario as char format "x(25)"
    field data-exec as date
    field hora-exec as integer
    FIELD envio-destino AS CHAR
    FIELD envio-assunto AS CHAR
    FIELD envio-mensagem AS CHAR
    FIELD envio-anexo AS CHAR.


    RUN rpw.

    /*----------------------Rotina para gerar o pedido no RPW------------------------*/
    PROCEDURE rpw.
    for each tt_param_segur: delete tt_param_segur. end.
    for each tt_ped_exec_aux_2: delete tt_ped_exec_aux_2. end.
    for each tt_ped_exec_param: delete tt_ped_exec_param. end.
    for each tt_ped_exec_param_aux: delete tt_ped_exec_param_aux. end.
    for each tt_ped_exec_sel: delete tt_ped_exec_sel. end.
    for each tt_erros_envio_email: delete tt_erros_envio_email. end.

    create tt_param_segur.
    assign tt_param_segur.tta_num_vers_integr_api = 3
    tt_param_segur.tta_cod_aplicat_dtsul_corren = "crp"
    tt_param_segur.tta_cod_ccusto_corren = ""
    tt_param_segur.tta_cod_dwb_user = ""
    tt_param_segur.tta_cod_empres_usuar = "1"
    tt_param_segur.tta_cod_estab_usuar = ""
    tt_param_segur.tta_cod_funcao_negoc_empres = ""
    tt_param_segur.tta_cod_grp_usuar_lst = "cob"
    tt_param_segur.tta_cod_idiom_usuar = "POR"
    tt_param_segur.tta_cod_modul_dtsul_corren = "MCR"
    tt_param_segur.tta_cod_modul_dtsul_empres = ""
    tt_param_segur.tta_cod_pais_empres_usuar = "Brasil"
    tt_param_segur.tta_cod_plano_ccusto_corren = ""
    tt_param_segur.tta_cod_unid_negoc_usuar = ""
    tt_param_segur.tta_cod_usuar_corren = v_cod_usuar_corren
    tt_param_segur.tta_cod_usuar_corren_criptog = encode("super")
    tt_param_segur.tta_num_ped_exec_corren = 0
    tt_param_segur.tta_rec_ped_exec = 0
    tt_param_segur.ttv_num_msg_erro = 0
    tt_param_segur.ttv_des_msg = "".

    create tt_ped_exec_aux_2.
    assign tt_ped_exec_aux_2.tta_num_seq = 1 /* numero sequencial registro na tt */
    tt_ped_exec_aux_2.tta_num_ped_exec = 0
    tt_ped_exec_aux_2.tta_cod_usuario = v_cod_usuar_corren
    tt_ped_exec_aux_2.tta_cod_prog_dtsul = "cr0606" /* Nome cadastrado no EMS */
    tt_ped_exec_aux_2.tta_cod_prog_dtsul_rp = "crp\cr0606rp.p" /* Nome F¡sico do Programa */
    tt_ped_exec_aux_2.tta_cod_release_prog_dtsul = "2.01.00.001" /* VersÆo do Programa */
    tt_ped_exec_aux_2.tta_dat_exec_ped_exec = today
    tt_ped_exec_aux_2.tta_hra_exec_ped_exec = replace(string(TIME,"hh:mm:ss"),":","")
    tt_ped_exec_aux_2.tta_num_ped_exec_pai = 0
    tt_ped_exec_aux_2.tta_log_exec_prog_depend = no
    tt_ped_exec_aux_2.tta_cod_servid_exec = "RPW" /* Nome do Servidor RPW */
    tt_ped_exec_aux_2.tta_cdn_estil_dwb = 97
    tt_ped_exec_aux_2.ttv_num_msg_erro = 0
    tt_ped_exec_aux_2.ttv_cod_msg_parameters = ""
    tt_ped_exec_aux_2.tta_cod_orig_ped_exec = ""
    tt_ped_exec_aux_2.ttv_log_envia_email = no
    tt_ped_exec_aux_2.ttv_des_inf_aplic = "".


    create tt_ped_exec_param.
    assign tt_ped_exec_param.tta_num_seq = 1
    tt_ped_exec_param.tta_cod_dwb_parameters = ""
    tt_ped_exec_param.tta_cod_dwb_file = "spool\log" + string(tt_ped_exec_aux_2.tta_dat_exec_ped_exec,"99/99/9999")
    + string(tt_ped_exec_aux_2.tta_hra_exec_ped_exec) + ".lst"
    /* Arquivo de Log */
    tt_ped_exec_param.tta_cod_dwb_output = "arquivo"
    tt_ped_exec_param.tta_cod_dwb_order = ""
    tt_ped_exec_param.tta_nom_dwb_printer = ""
    tt_ped_exec_param.tta_cod_dwb_print_layout = ""
    tt_ped_exec_param.tta_log_dwb_print_parameters = no
    tt_ped_exec_param.tta_raw_param_ped_exec = ?. /* row transfer */

    /*aquiii vc passa os dados to tt-param do cr0606 */
    RAW-TRANSFER tt-param TO tt_ped_exec_param.tta_raw_param_ped_exec.

    create tt_ped_exec_param_aux.
    assign tt_ped_exec_param_aux.tta_num_seq = 1
    tt_ped_exec_param_aux.tta_num_dwb_order = 0
    tt_ped_exec_param_aux.tta_cod_dwb_parameters = ""
    tt_ped_exec_param_aux.tta_raw_param_ped_exec = ?. /* row transfer */

    create tt_erros_envio_email.
    assign tt_erros_envio_email.ttv_cod_erro = 0
    tt_erros_envio_email.ttv_des_erro = "".

    run btb/btb912zc.p persistent set h-api.

    run pi-execute-2 in h-api (input-output table tt_param_segur,
    input-output table tt_ped_exec_aux_2,
    input table tt_ped_exec_param,
    input table tt_ped_exec_param_aux,
    input table tt_ped_exec_sel,
    output table tt_erros_envio_email).

    delete procedure h-api.

    END PROCEDURE.
  3. yurifranzoni

    yurifranzoni Sem Pontuação

    Sidnei, espetacular! Exatamente o que eu tava procurando, mas não tinha noção de que a lógica era essa.
    Vou fazer uns testes por aqui e mais tarde posto os resultados.

    Grande abraço e muito obrigado! (agora te devo uma breja, rsrs)
  4. sidnei

    sidnei Membro Participativo

    rsrsrs, beleza, mas como eu nao sei o que é uma breja, fico só com o abraço, rsrsrsrs
  5. mcarril

    mcarril Membro Participativo

    Nossa Sidnei... Breja é Cerveja !!!!
  6. sidnei

    sidnei Membro Participativo

    rsrsrs ha pois, é q nossa região não tem dessa marca, mas vi na internet q é muito vendida.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página