Agendar programa no RPW

825 views
Skip to first unread message

Marcos Giufrida

unread,
Oct 15, 2009, 7:38:32 AM10/15/09
to Grupo Progress
Bom Dia Pessoal !
 
O que um programa customizado deve ter para que seja possível agendar sua execução no RPW da Datasul ?
Alguém tem um exemplo pra me enviar, por favor?
 
Obrigado !

Marcos Giufrida

Mendes, Leonardo J. C.

unread,
Oct 15, 2009, 7:56:18 AM10/15/09
to progre...@googlegroups.com

Bom dia, Marcos.

 

Talvez isso lhe ajude.

Utilizo essa rotina para criação de novos agendamentos no servidor RPW.

 

Espero ter ajudado.

 

Abraços e boa sorte.

 

/* Include nececssária para geração do registro RPW */

{btb\btb912zc.i}

 

/* Definição das temp-tables necessárias para registro automático de pedido de execução (RPW) */

define temp-table tt_ped_exec_aux_3 no-undo

    field tta_num_seq                as integer   format ">>>,>>9"

    field tta_num_ped_exec           as integer   format ">>>>9"

    field tta_cod_usuario            as character format "x(12)"

    field tta_cod_prog_dtsul         as character format "x(50)"

    field tta_cod_prog_dtsul_rp      as character format "x(50)"

    field tta_cod_release_prog_dtsul as character format "x(9)"

    field tta_dat_exec_ped_exec      as date      format "99/99/9999"

    field tta_hra_exec_ped_exec      as character format "99:99:99"

    field tta_num_ped_exec_pai       as integer   format ">>>>9"

    field tta_log_exec_prog_depend   as logical   format "Sim/Não"

    field tta_cod_servid_exec        as character format "x(10)"

    field tta_cdn_estil_dwb          as integer   format ">>9"

    field ttv_num_msg_erro           as integer   format ">>>>>>9"

    field ttv_cod_msg_parameters     as character format "x(2000)"

    field tta_cod_orig_ped_exec      as character format "x(10)"

    field ttv_log_envia_email        as logical   format "Sim/Não"

    field ttv_des_inf_aplic          as character format "x(100)"

    field ttv_log_public_webdesk     as logical   format "Sim/Não".

 

procedure piCriaNovoRPW:

    /* Definição dos parâmetros de entrada da procedure */

    define input parameter ipPrograma      as character no-undo.

    define input parameter ipProgramaRP    as character no-undo.

    define input parameter ipNrPedidoAtual as integer   no-undo.

    define input parameter ipNomeArquivo   as character no-undo.

 

    /* Definição das variáveis necessárias para a renovação do RPW */

    define variable dt-prox-rpw   as date      no-undo.

    define variable hr-prox-rpw   as character no-undo.

    define variable h-api         as handle    no-undo.

    define variable dtDataInicial as date      no-undo.

    define variable dtDataFinal   as date      no-undo.

    define variable cMesComp      as character no-undo.

    define variable cNomeArq      as character no-undo.

 

    /* Para que não haja problemas de duplicidade nos registros */

    empty temp-table tt-param-aux no-error.  

    empty temp-table tt_param_segur no-error.

    empty temp-table tt_ped_exec_aux_3 no-error.

    empty temp-table tt_ped_exec_param no-error.

    empty temp-table tt_ped_exec_param_aux no-error.

    empty temp-table tt_ped_exec_sel no-error.

 

    /* Prepara os registros necessários para criação do novo pedido de execução (RPW) */

    if i-num-ped-exec-rpw <> 0 then do:

        find first bf_ped_exec where bf_ped_exec.num_ped_exec = ipNrPedidoAtual no-lock no-error.

        find first servid_exec where servid_exec.cod_servid_exec = bf_ped_exec.cod_servid_exec no-lock no-error.

    end.

   

    if avail bf_ped_exec then

        assign dt-prox-rpw = bf_ped_exec.dat_exec_ped_exec + 1

               hr-prox-rpw = bf_ped_exec.hra_exec_ped_exec.

    else 

        assign dt-prox-rpw = today + 1

               hr-prox-rpw = string(time, "hh:mm:ss").

 

    /** Utilizado para ambiente de testes. Ao final de cada execução do programa criava um novo pedido para a mesma data e 10 minutos a frete

    assign dt-prox-rpw = today

           hr-prox-rpw = string(time + 600, "hh:mm:ss"). /* Hora do servidor + 10 minutos */

    **/      

 

    /* Caso cursor esteja posicionado no registro em ped_exec, utilizar o usuário de origem do pedido de RPW */

    if avail bf_ped_exec then find first usuar_mestre where usuar_mestre.cod_usuario = bf_ped_exec.cod_usuario no-lock no-error.

                         else find first usuar_mestre where usuar_mestre.cod_usuario = v_cod_usuar_corren no-lock no-error.

 

    create tt-param-aux.

    assign tt-param-aux.destino          = 2

           tt-param-aux.arquivo          = cNomeArq

           tt-param-aux.usuario          = (if avail bf_ped_exec then bf_ped_exec.cod_usuario else v_cod_usuar_corren)

           tt-param-aux.data-exec        = dt-prox-rpw

           tt-param-aux.hora-exec        = fn-CharToIntTime(hr-prox-rpw)

           tt-param-aux.dt-emis-nota-ini = dtDataInicial

           tt-param-aux.dt-emis-nota-fim = dtDataFinal

           tt-param-aux.mes-competencia  = cMesComp.

 

    /* Cria novo pedido de execução (RPW), baseado no pedido anterior (origem) */

    create tt_param_segur.

    assign tt_param_segur.tta_num_vers_integr_api      = 3

           tt_param_segur.tta_cod_aplicat_dtsul        = ipPrograma

           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        = ""

           tt_param_segur.tta_cod_idiom_usuar          = "POR"

           tt_param_segur.tta_cod_modul_dtsul_corren   = ""

           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         = (if avail bf_ped_exec then bf_ped_exec.cod_usuario else v_cod_usuar_corren)

           tt_param_segur.tta_cod_usuar_corren_criptog = usuar_mestre.cod_senha

           tt_param_segur.tta_num_ped_exec_corren      = bf_ped_exec.num_ped_exec

           tt_param_segur.tta_rec_ped_exec             = recid(bf_ped_exec)

           tt_param_segur.ttv_num_msg_erro             = 0

           tt_param_segur.ttv_des_msg                  = "".

   

    create tt_ped_exec_aux_3.

    assign tt_ped_exec_aux_3.tta_num_seq                = 0

           tt_ped_exec_aux_3.tta_num_ped_exec           = 0

           tt_ped_exec_aux_3.tta_cod_usuario            = (if avail bf_ped_exec then bf_ped_exec.cod_usuario else v_cod_usuar_corren)

           tt_ped_exec_aux_3.tta_cod_prog_dtsul         = ipPrograma

           tt_ped_exec_aux_3.tta_cod_prog_dtsul_rp      = ipProgramaRP

           tt_ped_exec_aux_3.tta_cod_release_prog_dtsul = "2.04.00.001"

           tt_ped_exec_aux_3.tta_dat_exec_ped_exec      = tt-param-aux.data-exec

           tt_ped_exec_aux_3.tta_hra_exec_ped_exec      = replace(hr-prox-rpw,":","")

           tt_ped_exec_aux_3.tta_num_ped_exec_pai       = 0

           tt_ped_exec_aux_3.tta_log_exec_prog_depend   = no 

           tt_ped_exec_aux_3.tta_cod_servid_exec        = servid_exec.cod_servid_exec

           tt_ped_exec_aux_3.tta_cdn_estil_dwb          = 97

           tt_ped_exec_aux_3.ttv_num_msg_erro           = 0

           tt_ped_exec_aux_3.tta_cod_orig_ped_exec      = ""

           tt_ped_exec_aux_3.ttv_log_envia_email        = no

           tt_ped_exec_aux_3.ttv_des_inf_aplic          = ""

           tt_ped_exec_aux_3.ttv_log_public_webdesk     = no.

   

    create tt_ped_exec_param.

    assign tt_ped_exec_param.tta_num_seq                 = 0

           tt_ped_exec_param.tta_cod_dwb_parameters      = ""

           tt_ped_exec_param.tta_cod_dwb_output          = "Arquivo"

           tt_ped_exec_param.tta_cod_dwb_file            = ipProgramaRP

           tt_ped_exec_param.tta_nom_dwb_printer         = tt-param-aux.arquivo

           tt_ped_exec_param.tta_cod_dwb_print_layout    = ""

           tt_ped_exec_param.tta_log_dwb_print_parameter = no.

 

    raw-transfer tt-param-aux 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           = 0

           tt_ped_exec_param_aux.tta_raw_param_ped_exe = tt_ped_exec_param.tta_raw_param_ped_exec.

 

    create tt_ped_exec_sel.

 

    /* Cria registro e retorna nº do pedido */

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

    run pi-execute-3 in h-api ( input-output table tt_param_segur,

                                input-output table tt_ped_exec_aux_3,

                                table tt_ped_exec_param,

                                table tt_ped_exec_param_aux,

                                table tt_ped_exec_sel,

                                output table tt_erros_envio_email ).

 

    delete procedure h-api.

  

end procedure.

 

Atenciosamente,
 
Leonardo J. C. Mendes
Kraft Consulting - "Agregando Conhecimento à Tecnologia"
Tel: 7863 7867 (Id Nextel: 84*91633)
     3214 5151
www.kconsulting.com.br

Reply all
Reply to author
Forward
0 new messages