Às vezes acontece a seguinte necessidade, temos um concorrente que chama um programa, por exemplo, uma PACKAGE, e esta, por sua vez, além de processar determinados dados, chama um ou mais concorrentes. Entretanto, algumas informações como, por exemplo, número de cópias para impressão, estilo de impressão e a própria impressora, podem ser mudados quando executamos um concorrente. Quando isto acontece precisamos levar estas novas configurações, escolhidas no momento da execução, para os concorrentes que serão executados pela PACKAGE. Abaixo segue um exemplo de como isto pode ser feito. Pense neste exemplo como sendo parte de um programa, que está sendo chamado através de um concorrente, onde este mesmo programa chamará outro concorrente. Neste caso, precisamos passar as configurações escolhidas para ele, caso contrário ele utilizará as informações padrões, configuradas em seu cadastro. Fazemos isto através da função: FND_REQUEST.SET_PRINT_OPTIONS.
...
begin
--
-- Recuperando informações de impressão do concorrente corrente.
--
select printer
,number_of_copies
,print_style
into w_impressora
,w_num_copias
,w_estilo
from fnd_concurrent_requests
where request_id = fnd_global.conc_request_id;
-- =======================================================================================
-- Chamando função para configurar impressora, estilo e número de cópias.
--
w_conf_impres := fnd_request.set_print_options( printer => w_impressora
,style => w_estilo
,copies => w_num_copias
);
-- =======================================================================================
--
--
-- Chamando Concurrent.
wid_solicitacao := fnd_request.submit_request( 'ABC' -- short name da aplicação.
,'DEF' -- short name do programa.
,''
,''
,false
,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0)
,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0)
,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0)
,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0)
,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0)
,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0)
,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0)
,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0)
,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0)
,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0)
);
--
if wid_solicitacao = 0 then
--
fnd_file.put_line(fnd_file.log,'Não foi possível executar o concorrente DEF.');
--
else
--
fnd_file.put_line(fnd_file.log,'Concorrente DEF executado: '||wid_solicitacao);
--
end if;
--
exception
when others then
fnd_file.put_line(fnd_file.log,'Erro ao executar concorrente DEF: '||sqlerrm);
end;
...
Forte abraço!
Nenhum comentário:
Postar um comentário