SRW (Sql Report Writer) Package is a built in package in Oracle Reports Builder. It is a collection of PL/SQL constructs that include many functions, procedures, and exceptions you can reference in any of your libraries or reports.
The PL/SQL provided by the SRW package enables you to perform such actions as change the formatting of fields, run reports from within other reports, create customized messages to display in the event of report error, and execute SQL statements. There are nearly 70 functions, procedures, and exceptions are there in this package. Here I am giving brief information and uses of few important functions, procedures, and exceptions.
SRW.MESSAGE:
It is a Procedure that displays a message with the message number and text that you specify. It is mainly used to debug a report in Reports Builder.
SRW.MESSAGE(msg_number NUMBER, msg_text CHAR);
Example:
function foo return boolean is
begin
if :sal < 0 then
SRW.MESSAGE(100, 'Found a negative salary. Check the EMP table.');
raise SRW.PROGRAM_ABORT;
else
:bonus := :sal * .01;
end if;
return(true);
end;
SRW.PROGRAM_ABORT:
This exception stops the report execution and raises the following error message: REP-1419: PL/SQL program aborted. SRW.PROGRAM_ABORT stops report execution when you raise it.
SRW.DO_SQL:
This procedure executes the specified SQL statement from within Reports Builder. The SQL statement can be DDL (statements that define data), or DML (statements that manipulate data). DML statements are usually faster when they are in PL/SQL, instead of in SRW.DO_SQL.
Since you cannot perform DDL statements in PL/SQL, the SRW.DO_SQL packaged procedure is especially useful for performing them within Reports Builder.
Example:
FUNCTION CREATETABLE RETURN BOOLEAN IS
BEGIN
SRW.DO_SQL('CREATE TABLE TEST_EMP (EMPNO NUMBER NOT NULL
PRIMARY KEY, SAL NUMBER (10,2)) PCTFREE 5 PCTUSED 75');
RETURN (TRUE);
EXCEPTION
WHEN SRW.DO_SQL_FAILURE THEN
SRW.MESSAGE(100, 'ERROR WHILE CREATING TEST_EMP TABLE.');
RAISE
SRW.PROGRAM_ABORT;
END;
SRW.DO_SQL_FAILURE:
Reports Builder raises this exception when the SRW.DO_SQL packaged procedure fails. This exception stops the report execution and raises the following error message:
REP-1425: Error running DO_SQL package – REP-msg ORA-msg.
SRW.GET_REPORT_NAME:
This function returns the file name of the report being executed.
SRW.GET_REPORT_NAME (report_name);
Example:
function AfterPForm return boolean is
my_var varchar2(80);
BEGIN
SRW.GET_REPORT_NAME (my_var);
SRW.MESSAGE(0,'Report Filename = '||my_var);
RETURN (TRUE);
END;
SRW.RUN_REPORT:
This procedure synchronously executes the specified report within the context of the currently running report.
SRW.RUN_REPORT (“report=test.rdf … “)
SRW.SET_FIELD:
This procedure sets the value of a character, number, or date field. This is useful when you want to conditionally change a field’s value.
SRW.SET_FIELD (object_id, text CHAR | number NUM | date DATE);
Example:
Suppose you want to conditionally change the number of a field, based on each employee’s salary. In the format trigger for the field, you could type the following:
FUNCTION CHGFIELD RETURN BOOLEAN IS
TMP NUMBER;
BEGIN
if :sal >= 5000 then
tmp := :sal * 1.10;
srw.set_field (0, tmp);
else
srw.set_field (0, 4000);
end if;
RETURN (TRUE);
END;
SRW.SET_FIELD should be used only to change the contents of a field’s datatype, not change the field to a different datatype.
Others in Brief:
- SRW.SET_FONT_FACE: This procedure specifies font face for a CHAR, DATE, or NUMBER field. SRW.SET_FONT_FACE(‘arial’);
- SRW.SET_FONT_SIZE: This procedure specifies font size for a CHAR, DATE, or NUMBER field. SRW.SET_FONT_SIZE(10);
- SRW.SET_FONT_STYLE: This procedure specifies font style for a CHAR, DATE, or NUMBER field. SRW.SET_FONT_STYLE(SRW.ITALIC_STYLE);
- SRW.SET_FORMAT_MASK: This procedure specifies the format mask for the DATE or NUMBER field. SRW.SET_FORMAT_MASK(‘mask’);
- SRW.SET_TEXT_COLOR: This procedure specifies the global text color of the CHAR, DATE, or NUMBER field. SRW.SET_TEXT_COLOR(‘color’);
The Runtime Process of a Oracle Forms
Share this:
Complete forms deployment process in Oracle Apps
Deployed Application: Custom AR Application
Responsibility: US Receivables Super User
>Open Oracle Forms Builder
>Open the form TEMPLATE.fmb
>Rename the form (ex XXARCUST_1)
>Delete the followings from object nevigator.
>Go to Data Blocks and delete BLOCKNAME, DETAILBLOCK
>Go to Windows and delete BLOCKNAME
>Go to Canvases and delete BLOCKNAME
b) Create a new Window (ex WINDOW10)
c) Create a new Canvas (ex CANVAS10) and attached it to the new Window via Property Palate
d) Create a new Datablock (ex CUSTOMERS) wth items from a table.
e) Create a frame in the Canvas and attached the items
f) Modify the PRE-FORM Trigger
>Go to triggers—PREFORM
>Original Code:
‘$Date: 2005/05/06 23:25 $’, ‘$Author: appldev $’);
app_standard.event(‘PRE-FORM’);
app_window.set_window_position(‘BLOCKNAME’, ‘FIRST_WINDOW’);
>Modified Code:
FND_STANDARD.FORM_INFO(‘$Revision: 1.0 $’, ‘XXARCUST_1’,’CUST_FORM’,
’$Date: 2010/01/06 16:25 $’, ‘$Author: Dibyajyoti $’);
app_standard.event(‘PRE-FORM’);
app_window.set_window_position(‘WINDOW10′, ‘FIRST_WINDOW’);
> Compile the code
> Go to APP_CUSTOM*(Package Body)
>Type your First window name in place of <your first window>
> Compile the code
h) If any Item in the Datablock is of Date type and you want to attach a standard calender to it
(ex Orderdate item of Customers datablock), do the following
> Go to Orderdate > Property palate > Subclass Information > Property Class
> Give property class name as TEXT_ITEM_DATE
> Attach LOV as ENABLE_LIST_LAMP
> Create KEY-LISTVAL item level trigger & add following code into it
calendar.show; and compile the trigger.
$ORACLE_HOME/bin/frmcmp_batch module=$XXAR_TOP/forms/US/CUSTOMERS.fmb userid=<username>/<password> output_file=$XXAR_TOP/forms/US/ CUSTOMERS.fmx module_type=form compile_all=special
> Go to Application Developer —> Application —> Form
> Give the details:
FORM: CUSTOMERS(name of the custom form)
APPLICATION: Custom AR Application
User Form Name: CUSTOMERS_DETAIL
Description: Customer Detail form
> save
> System Administrator —->Application —-> Function
> Give the details:
Function:XX_CUSTOMER_DETAIL
APPLICATION: Custom AR Application
Properties —> Type: Form
User Function Name: CUSTOMERS_DETAIL_FUNCTION
c) Finding the menu to which the above form function is to be attached. Again the menu is attached to a responsibilty. So we have go in the reverse order to find the menu name.
> System Administrator —->Security —-> Responsibility —->Define
> Press F11
> Responsibility Name: %US%Rec (searching for US Receivables Super User)
> Press Ctrl + F11
Responsibility Name: US Receivables Super User
Application:Receivables (will come automatically )
d) Attaching the function to a Submenu of the above Main menu
> System Administrator —->Application —> Menu
> Press F11
> Menu: AR_NAVIGATE_GUI
> Press Ctrl+F11
> Submenu: XXAR_CUSTOM
> Press F11
> Menu: XXAR_CUSTOM
> Press Ctrl+F11
> Create a new
> Promt: Customer Detail Form (It will display in the nevigator)
>Function: CUSTOMERS_DETAIL_FUNCTION (Attach the function to the submenu)
> save
>One request has been submitted to recompile your menus in the database
e) Viewing the request submitted in the background to recompile the menus to attach the function
> Go to View——–>Requests———>Find
>The status should be :Compiled Normal
>Login with username and password
>Go to US Receivables Super User—>Custom Interfaces —>Customer Detail Form
Share this:
Oracle Forms..An Introduction and Brief History
•Has a typical IDE including an object navigator, property sheet and code editor that uses PL/SQL.
•Primary focus of Forms is to create data entry systems that access an Oracle database.
•Originally sold as standalone product , now bundled into a package suite called Oracle Developer Suite.
-Block Mode
-Oracle Database 2
-Character Mode
-Oracle Database 4
-Character Mode
-Oracle Database 5
-Character Mode
-Oracle Database 6
-New IDE, PL/SQL
-4.0 was the first “true” GUI based version
-Oracle Database 6/7
-Optimized for client server.
-4.0 interface was slow, buggy and un-popular with client base.
-4.5 was a popular one with enhanced GUI.
-Oracle Database 7
-Forms server and web forms were introduced.
-Oracle Database 8/8i
-Oracle Database 9i
-Stable one with many bug fixes.
-Three-tier, browser based delivery
-Oracle Database 10g
-Actually a Forms release (9.0.4.0.19)
-Oracle Database 11g
-Latest One.
Share this:
SRW Package in Oracle Report
SRW.SET_FIELD should be used only to change the contents of a field’s datatype, not change the field to a different datatype.
Others in Brief:
Share this:
Bind & Lexical Parameters in Reports
Share this: