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.