calling reports in pl/sql code
5 pts.
0
Q:
calling reports in pl/sql code
how to call reports 6i report from pl/sql code procedure in pdf format
ASKED: Apr 11 2009  6:03 AM GMT
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
0
29820 pts.
0
A:
 RATE THIS ANSWER
0
Click to Vote:
  •   0
  •  0
  • AddThis Social Bookmark Button
You need to send the DESTYPE,DESFORMAT and DESNAME parameters to the report.

Something like this:

Add_Parameter(MyParamList,'DESTYPE',TEXT_PARAMETER,'FILE');
Add_Parameter(MyParamList,'DESFORMAT',TEXT_PARAMETER,'PDF');
Add_Parameter(MyParamList,'DESNAME',TEXT_PARAMETER,'C:\YOUR_OUTPUT_FILE.PDF');

And then call the RUN_REPORT_OBJECT or RUN_PRODUCT built-in as you usualy do.

This will generate the file, but it wont be opened automatically.
Last Answered: Apr 16 2009  0:26 AM GMT by Carlosdl   29820 pts.
0
0
Discuss This Answer:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _



_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Carlosdl   29820 pts.  |   Apr 16 2009  1:49AM GMT

I forgot to mention that you may need to have a PDF printer configured in the client machine.
I have never tried it on a machine without a PDF printer software installed.

 

Mfmesa   20 pts.  |   Apr 27 2009  11:41AM GMT

Hi, I develop something like you look for, this is a Package, come whit comment but in spanish

CREATE OR REPLACE PACKAGE PKG_DBA_LANZA_REPORT AS

/*
La forma de poder ejecutar report desde procedimientos o funciones, es mediante el uso
de este paquete. Para ello y como ejemplo de como se ejecutaria un report, los pasos
a seguir seran:

– Resetear el valor de las variables internas del paquete:
PKG_DBA_LANZA_REPORT.REPORT_RESET;

– Asignar el fichero o impresora destino del report (printer,file,…):
PKG_DBA_LANZA_REPORT.SET_DESTYPE(’printer’);

– Asignar el nombre de la impresora o del fichero donde ira dirigido el report:
PKG_DBA_LANZA_REPORT.SET_DESNAME(’cpd1pr2′);

– Registrar el nombre del report que se desea ejecutar (el de extension .rdf):
PKG_DBA_LANZA_REPORT.SET_REPORT_NAME(’HojaRuta_Atm’);

– Registrar cada uno de los parametros y su valor. Debe registrarse todos y cada
uno de los parametros del report, en el mismo ORDEN en el que se pide dentro
del report:

PKG_DBA_LANZA_REPORT.ADD_VARIABLE(’P_ORDEN_FAB’,'01851101′);
PKG_DBA_LANZA_REPORT.ADD_VARIABLE(’P_NSERIE_DESDE’,'1′);
PKG_DBA_LANZA_REPORT.ADD_VARIABLE(’P_NSERIE_hasta’,'2′);

– Ordenar la ejecucion del report.
PKG_DBA_LANZA_REPORT.RUN_REPORT;

*/

TYPE t_parametros IS RECORD (
PARAM_NRO NUMBER, — NRO. DE PARAMETROS PASADOS
PARAM_NOMBRE VARCHAR2(50), — NOMBRE DEL PARAMETRO
PARAM_VALOR VARCHAR2(1024) — VALOR DEL PARAMETRO
);

V_REG_PARAM t_parametros;

TYPE t_lista_parametros IS TABLE OF t_parametros INDEX BY BINARY_INTEGER;

V_LISTA_PARAM t_lista_parametros;

V_DESTYPE VARCHAR2(256) := ‘printer’;
V_DESNAME VARCHAR2(256) := ‘cpd1pr2′;
V_REPORT_NAME VARCHAR2(256) := ”;
V_NRO_PARAMETROS NUMBER :=0;

PROCEDURE REPORT_RESET;

PROCEDURE SET_DESTYPE (P_DESTYPE IN VARCHAR2);

PROCEDURE SET_DESNAME (P_DESNAME IN VARCHAR2);

PROCEDURE SET_REPORT_NAME (P_REPORT_NAME IN VARCHAR2);

PROCEDURE ADD_VARIABLE (P_NOMBRE IN VARCHAR2,P_VALOR IN VARCHAR2);

PROCEDURE RUN_REPORT;

END PKG_DBA_LANZA_REPORT;

————————————————–o———————————————– BODY

CREATE OR REPLACE PACKAGE BODY PKG_DBA_LANZA_REPORT AS

/*
Autor: Manuel Rafael Fernández Mesa
Descripción:

La forma de poder ejecutar report desde procedimientos o funciones, es mediante el uso
de este paquete. Para ello y como ejemplo de como se ejecutaria un report, los pasos
a seguir seran:

– Resetear el valor de las variables internas del paquete:
PKG_DBA_LANZA_REPORT.REPORT_RESET;

– Asignar el fichero o impresora destino del report (printer,file,…):
PKG_DBA_LANZA_REPORT.SET_DESTYPE(’printer’);

– Asignar el nombre de la impresora o del fichero donde ira dirigido el report:
PKG_DBA_LANZA_REPORT.SET_DESNAME(’cpd1pr2′);

– Registrar el nombre del report que se desea ejecutar (el de extension .rdf):
PKG_DBA_LANZA_REPORT.SET_REPORT_NAME(’HojaRuta_Atm’);

– Registrar cada uno de los parametros y su valor. Debe registrarse todos y cada
uno de los parametros del report, en el mismo ORDEN en el que se pide dentro
del report:

PKG_DBA_LANZA_REPORT.ADD_VARIABLE(’P_ORDEN_FAB’,'01851101′);
PKG_DBA_LANZA_REPORT.ADD_VARIABLE(’P_NSERIE_DESDE’,'1′);
PKG_DBA_LANZA_REPORT.ADD_VARIABLE(’P_NSERIE_hasta’,'2′);

– Ordenar la ejecucion del report.
PKG_DBA_LANZA_REPORT.RUN_REPORT;

*/

— Debe ser el primer procedimiento a ejecutar
PROCEDURE REPORT_RESET IS
BEGIN
PKG_DBA_LANZA_REPORT.V_NRO_PARAMETROS := 0;
END REPORT_RESET;

— Asignacion del ‘destype’ printer, file, …
PROCEDURE SET_DESTYPE (P_DESTYPE IN VARCHAR2) IS
BEGIN
PKG_DBA_LANZA_REPORT.V_DESTYPE:=P_DESTYPE;
END SET_DESTYPE;

— Asignacion del nombre del fichero o impresora destino
PROCEDURE SET_DESNAME (P_DESNAME IN VARCHAR2) IS
BEGIN
PKG_DBA_LANZA_REPORT.V_DESNAME:=P_DESNAME;
END SET_DESNAME;

— Asignacion del nombre del report a ejecutar
PROCEDURE SET_REPORT_NAME (P_REPORT_NAME IN VARCHAR2) IS
BEGIN
PKG_DBA_LANZA_REPORT.V_REPORT_NAME:=P_REPORT_NAME;
END SET_REPORT_NAME;

PROCEDURE ADD_VARIABLE (P_NOMBRE IN VARCHAR2,P_VALOR IN VARCHAR2) IS
BEGIN
PKG_DBA_LANZA_REPORT.V_NRO_PARAMETROS:=PKG_DBA_LANZA_REPORT.V_NRO_PARAMETROS+1;
PKG_DBA_LANZA_REPORT.V_LISTA_PARAM(PKG_DBA_LANZA_REPORT.V_NRO_PARAMETROS).PARAM_NRO:=PKG_DBA_LANZA_REPORT.V_NRO_PARAMETROS;
PKG_DBA_LANZA_REPORT.V_LISTA_PARAM(PKG_DBA_LANZA_REPORT.V_NRO_PARAMETROS).PARAM_NOMBRE:=P_NOMBRE;
PKG_DBA_LANZA_REPORT.V_LISTA_PARAM(PKG_DBA_LANZA_REPORT.V_NRO_PARAMETROS).PARAM_VALOR:=P_VALOR;
END ADD_VARIABLE;

— Lanzamiento y ejecucion del report en el servidor via http
PROCEDURE RUN_REPORT IS
req utl_http.req;
resp utl_http.resp;
value VARCHAR2(1024);
V_URL VARCHAR2(1024);
BEGIN

/*
 <a href="http://10.142.80.23:7778/dev60cgi/rwcgi60?server=rep60_cpd80023.svr_aplicaciones&userid=gloviajava/gloviajava@livem&destype=printer&desname=cpd1pr2&report=impresion_pedidos&p_pedido=35328" title="http://10.142.80.23:7778/dev60cgi/rwcgi60?server=rep60_cpd80023.svr_aplicaciones&userid=gloviajava/gloviajava@livem&destype=printer&desname=cpd1pr2&report=impresion_pedidos&p_pedido=35328" target="_blank">http://10.142.80.23:7778/dev60cgi/rwcgi6…</a>
*/

V_URL:= ‘http://10.142.80.23:7778/dev60cgi/rwcgi60?server=rep60_cpd80023.svr_aplicaciones&userid=gloviajava/gloviajava@livem&destype=’ || PKG_DBA_LANZA_REPORT.V_DESTYPE || ‘&desname=’ || PKG_DBA_LANZA_REPORT.V_DESNAME || ‘&report=’ || PKG_DBA_LANZA_REPORT.V_REPORT_NAME;

– || ‘&p_pedido=’ || P_PEDIDO;

FOR CONTADOR IN 1..PKG_DBA_LANZA_REPORT.V_NRO_PARAMETROS LOOP
V_URL:= V_URL || ‘&’ || PKG_DBA_LANZA_REPORT.V_LISTA_PARAM(CONTADOR).PARAM_NOMBRE || ‘=’ || PKG_DBA_LANZA_REPORT.V_LISTA_PARAM(CONTADOR).PARAM_VALOR;
END LOOP;

dbms_output.put_line(’url: ‘ || v_url);

req := utl_http.begin_request(V_URL);
utl_http.set_header(req, ‘User-Agent’, ‘Mozilla/4.0′);
resp := utl_http.get_response(req);
LOOP
utl_http.read_line(resp, value, TRUE);
dbms_output.put_line(value);
END LOOP;
utl_http.end_response(resp);
EXCEPTION
WHEN utl_http.end_of_body THEN
utl_http.end_response(resp);

END RUN_REPORT;

END PKG_DBA_LANZA_REPORT;
/

I hope you can use then.

Best Regards, Manuel.

 

Mfmesa   20 pts.  |   Apr 27 2009  11:48AM GMT

Sorry, I show you howto do a call from a procedure:

PKG_DBA_LANZA_REPORT.REPORT_RESET;
PKG_DBA_LANZA_REPORT.SET_DESTYPE(P_DESTYPE);
PKG_DBA_LANZA_REPORT.SET_DESNAME(P_DESNAME);
PKG_DBA_LANZA_REPORT.SET_REPORT_NAME(’CambiosIngenieriaCabecera’);
PKG_DBA_LANZA_REPORT.ADD_VARIABLE(’P_ECN’,'1′);
PKG_DBA_LANZA_REPORT.RUN_REPORT;

Chao. Manuel.

 
0