calling reports in pl/sql code

5 pts.
Tags:
Oracle 6i
Oracle Reports
Oracle Reports 6i
PL/SQL
PL/SQL procedure
how to call reports 6i report from pl/sql code procedure in pdf format

Answer Wiki

Thanks. We'll let you know when a new response is added.

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.

Discuss This Question: 3  Replies

 
There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when members answer or reply to this question.

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
  • carlosdl
    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.
    68,495 pointsBadges:
    report
  • Mfmesa
    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 /* 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 */ 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.
    20 pointsBadges:
    report
  • Mfmesa
    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.
    20 pointsBadges:
    report

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to:

To follow this tag...

There was an error processing your information. Please try again later.

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Thanks! We'll email you when relevant content is added and updated.

Following