Bom dia!
Você que precisa submeter um Relatório XML Pusblisher via PL/SQL e está sem saber como utilizar o template, aqui vai a dica! Basicamente você irá utilizar o ADD_LAYOUT antes do SUBMIT_REQUEST.
Veja o exemplo:
DECLARE
--
l_responsibility_id NUMBER;
l_application_id NUMBER;
l_user_id NUMBER;
l_request_id NUMBER;
l_layout NUMBER;
--
BEGIN
--
-- Preisamos SETAR User/Responsabilidade para fazer isto via PL/SQL. Portanto vamos pegar os IDs e setar o APPS INITIALIZE
-- Informacoes Responsabilidade
SELECT DISTINCT
fr.responsibility_id,
frx.application_id
INTO l_responsibility_id,
l_application_id
FROM fnd_responsibility frx,
fnd_responsibility_tl fr
WHERE fr.responsibility_id = frx.responsibility_id
AND fr.responsibility_name LIKE ('INFORME SUA RESPONSABILIDADE');
-- Informacoes Usuario
SELECT user_id
INTO l_user_id
FROM fnd_user
WHERE user_name = 'INFORME SEU USUARIO';
--
-- Setando contexto
--
fnd_global.apps_initialize (l_user_id
,l_responsibility_id
,l_application_id);
--
-- Submetendo Layout
--
l_layout := fnd_request.add_layout(template_appl_name => 'XXBRA',
template_code => 'XXCONCCODE',
template_language => 'ptb',
template_territory => 'BR',
output_format => 'EXCEL');
--
-- Submetendo Concurrent
--
l_request_id := fnd_request.submit_request (application => 'XXBRA',
program => 'XXCONCCODE',
description => 'XX Relatorio Teste',
start_time => SYSDATE,
sub_request => FALSE,
argument1 => 'Parametro do seu concurrent');
-------
COMMIT;
-------
IF l_request_id = 0
THEN
dbms.output.put_line ('Concurrent não foi submetido - ' || SQLERRM);
ELSE
dbms_output.put_line('');
END IF;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Erro ao submeter o programa concorrente: '||TO_CHAR(SQLCODE)||'-'||SQLERRM);
END;
Apoio: http://prasanthapps.blogspot.com.br/
Abs,
Junio Vitor
