Blitz Report™ Developer Guide

Introduction


Blitz Report is an Oracle Forms based software, fully integrated with Oracle E-Business Suite. It enables your IT team to easily store and edit SQL scripts for reports, and to make them available to your business users. Blitz Report runs as a concurrent process and generates output files in XLSX or text delimited CSV format. Upon completion, reports automatically download and open in Excel.

With Blitz Report, we created the most efficient and easy to use operational reporting solution for Oracle EBS. Optimized for skilled IT professionals to better organize and maintain their reporting queries, and for business users to quickly access EBS data in a format they love without having to learn new skills.

We hope that you will enjoy working with Blitz Report as much as we do, and we welcome your feedback to [email protected]

1.Creating a Blitz Report


1.1 Report creation steps


With Blitz Report you can easily leverage existing SQL to create report for your users.

A Blitz Report consists of an SQL query to retrieve the data, and optional parameters that enable users to control or restrict data returned by a report.

To create new Reports, the profile option ‘Blitz Report Access’ must be set to either ‘Developer’ or ‘System’. With this profile setting, the Blitz Report run window shows an additional ‘Setup’ button, which opens the setup window as shown below.Basic steps to create a new report are:

  1. Enter a report name and an optional description
  2. Enter the main extraction SQL
  3. Define optional parameters and corresponding WHERE clause / SQL text
  4. Test the report by clicking the ‘Run’ button
  5. Set up the user access rights
SQL

Unlike most reporting tools, Blitz Report creates dynamic SQL at run-time, combining the extraction SQL and the user-specified parameters in an optimal way. This allows unused parameters to be dropped at run-time, thus eliminating a frequent source of non-performant SQL – the very common WHERE clause for optional parameters ‘column_name=nvl(:bind_variable, column_name)’.
To ensure that there is no unnecessary parsing of the dynamic SQL, Blitz Report’s parameterization uses bind variables.

1.2 Anchors and binds


Anchors are ‘placeholders’ in the extraction SQL, which allow the precise placement of additional (optional) parameterized SQL clauses at run-time. These clauses are constructed from user-specified parameters, which are then inserted into the extraction SQL at run-time. There are two types of Anchors:

n=n

WHERE clause SQL anchors, such as ‘1=1’, ‘2=2’ etc. Blitz Report inserts the associated SQL text directly before these anchors, automatically adding the keyword ‘and’ and a line feed, to create valid SQL. This allows quick parameter creation – no need to consider the precise position of the ‘and’ keyword.

A typical example for a SQL text would be ‘column_name=:bind_variable’, where :bind_variable would be bound with the parameter value entered by the user.

Note: A common coding practice is to write non-Blitz Report SQL with a ‘where 1=1’ clause, usually for formatting purposes. This does no harm when importing the SQL into Blitz Report, and may actually be useful, since it serves as the obvious anchor for any parameterized WHERE clauses.

&lexical

Lexical parameter references work in the same way as lexical parameters in sqlplus or Oracle reports. Blitz Report replaces these placeholders completely with the parameter SQL text at run-time. To replace a lexical with the user entered parameter value, use the string in the SQL text field. If a parameter value is left blank, the corresponding reference is removed before SQL execution.

Note that the two different anchor types achieve similar goals, which is to inject additional (optional) parameterized SQL clauses into the extraction SQL.

However, the ‘n=n’ anchor can only be used for WHERE clauses (since the ‘n=n’ syntax remains in the run-time SQL).

The ‘&lexical’ anchor can be used to add whatever SQL ‘snippets’ are required by the report, featuring (but not limited to):

  • WHERE clauses
  • Dynamic tables and columns
  • ORDER BY, GROUP BY
  • HINTS
  • Complete subselects or EXISTS clauses

The same anchor may be used multiple times inside a report SQL. Blitz Report inserts the corresponding parameter text for each occurrence.

A lexical parameter SQL text may contain a bind variable, which will be bound with the parameter value entered by the user when running the report.

In case you require the parameter value to show up as lexical text in the SQL, e.g. to purposefully enforce reparsing for different parameter values, you can use placeholder <parameter_value> as shown in the examples table below.

:bind

Similar to other reporting solutions, Blitz Report also supports the use of bind parameters. To avoid performance issues due to due to nvl(:bind_variable, column_name) coding for optional parameters however, it is recommended to use one of the above anchors for dynamic SQL instead.
Some words are reserved by Oracle and can not be used as bind variables. To find a list of such words use the following query:

select keyword from v$reserved_words where reserved='Y' or res_semi='Y' order by keyword asc;

Examples

Anchor Type Report SQL Parameter SQL text Run-time SQL
n=n
where
1=1
fu.user_name=:user_name
where
fu.user_name=:user_name and
1=1
n=n
where
1=1
furg.user_id in (select fu.user_id from fnd_user fu where fu.user_name=:user_name)
where
furg.user_id in (select fu.user_id from fnd_user fu where fu.user_name=:user_name) and
1=1
&lexical
where
&account
hp.party_id=hca.party_id
hca.account_number=:account and
where
hca.account_number=:account and
hp.party_id=hca.party_id
&lexical
group by
&group_by_vendor
pha.currency_code
pv.vendor_id,
group by
pv.vendor_id,
pha.currency_code
&lexical
select
&columns
frv.responsibility_name
fu.user_name,
fu.email_address,
select
fu.user_name,
fu.email_address,
frv.responsibility_name
&lexical
select 
xxen_util.dis_user_type(eap.ap_eu_id,'&eul') user_type, 
xxen_util.dis_user(eap.ap_eu_id,'&eul') username, 
eap.* 
from 
&eul.eul5_access_privs eap
<parameter_value>
select 
xxen_util.dis_user_type(eap.ap_eu_id,'eul_us') user_type, 
xxen_util.dis_user(eap.ap_eu_id,'eul_us') username, 
eap.* 
from 
eul_us.eul5_access_privs eap
&lexical
select
&flexfield_columns
from
mtl_system_items_vl msiv
select
'msiv.'||lower(fdfcuv.application_column_name)||' "'||fdfcuv.form_left_prompt||'",' column_text
from
fnd_descr_flex_col_usage_vl fdfcuv
where
fdfcuv.application_id=401 and
fdfcuv.descriptive_flexfield_name='MTL_SYSTEM_ITEMS' and
fdfcuv.enabled_flag='Y' and
fdfcuv.display_flag='Y' and
fdfcuv.descriptive_flex_context_code='Global Data Elements'
order by
fdfcuv.column_seq_num
select
msiv.attribute1 "Late Demands Penalty",
msiv.attribute15 "Invoice UOM",
msiv.attribute14 "Graphical Link for Web Reqs",
msiv.attribute2 "Material Over-Capacity Penalty",
from mtl_system_items_vl msiv
:bind
where
fu.user_name=:user_name
where
fu.user_name=:user_name

:sheet_name

By default the Excel output’s data sheet name is the same as the report name. A parameter referencing the :sheet_name anchor allows to define a custom sheet name. It can be set up as a standard visible parameter, but also hidden by using a negative display sequence, for example dependent on another parameter. In the example below the Sheet name parameter inherits its value from the Operating unit parameter concatenated with the word ‘suppliers’ by using the following default value: :$flex$.operating_unit||’ suppliers’

Blitz Report sheet_name parameter
Blitz Report sheet_name parameter

1.3 Dynamic SQL example


n=n anchor example

A query on parties and accounts (see below) should allow users to extract all customers’ information or to restrict the data by optional parameters such as customer name or account number.

select
hp.party_number,
hp.party_type,
hp.party_name,
hca.account_number
from
hz_parties hp,
hz_cust_accounts hca
where
1=1 and
hp.party_id=hca.party_id

A restriction to customer name would require addition of a WHERE clause:

upper(hp.party_name) like upper(:customer_name)

In Blitz Report, the  parameterized WHERE clauses are set up separately from the report SQL. Blitz Report only inserts individual WHERE clauses into the extraction SQL (at run-time) if the user enters a value for that particular parameter.

In this example, If the user provides a value for the customer name parameter, Blitz Report would add the above WHERE clause at the position of the anchor ‘1=1’ and execute the below SQL for data extraction.

select
hp.party_number,
hp.party_type,
hp.party_name,
hca.account_number
from
hz_parties hp,
hz_cust_accounts hca
where
upper(hp.party_name) like upper('George Clooney') and
1=1 and
hp.party_id=hca.party_id

Pivot table in SQL

There is possibility to have dynamic pivot table described in SQL. It is done using &lexical parameter reference.

For example you need to list your balances grouped by ledger and code combination.

select 
gl.name,
xxen_util.concatenated_segments(gb.code_combination_id),
gb.period_name period_name,
sum(nvl(gb.period_net_dr,0)-nvl(gb.period_net_cr,0)) amount
from 
gl_balances gb,
gl_ledgers gl
where
gl.ledger_id=gb.ledger_id
group by 
gb.period_name, 
gl.name, 
gb.code_combination_id;

We want to introduce additional restriction on a ledger and build pivot table in the output based on the input list of the periods.

Ledger name restriction will be placed after WHERE clause in the place of “1=1” anchor if parameter value is provided.

List of periods columns inserted in SQL statement during execution in the place of lexical &gl_period_pivot reference.

select *
from (
select gl.name gl_name
,xxen_util.concatenated_segments(gb.code_combination_id) coa_cc
,gb.period_name
,period_name
,sum(nvl(gb.period_net_dr, 0) - nvl(gb.period_net_cr, 0)) amount
from gl_balances gb
,gl_ledgers gl
where 1 = 1
and gl.ledger_id = gb.ledger_id
group by gb.period_name
,gl.name
,gb.code_combination_id
)
pivot(sum(amount) for period_name in (&gl_period_pivot))

Below you can see how parameters for pivot basis report are described.

In example below lexical reference returns the list of periods according to listed below rules:

  • Period year is derived based on value indicated in Period parameter.
  • List contains periods of derived year starting from the first till the one indicated in Period parameter.

All period names are enclosed with single quotes and separated by commas.

SQL code during execution looks like that:

select *
from (
select gl.name gl_name
,xxen_util.concatenated_segments(gb.code_combination_id) coa_cc
,nvl(gb.period_name, 'total') period_name
,sum(nvl(gb.period_net_dr, 0) - nvl(gb.period_net_cr, 0)) amount
from gl_balances gb
,gl_ledgers gl
where gl.name = 'vision operations (usa)'
and 1 = 1
and gl.ledger_id = gb.ledger_id
group by gb.period_name
,gl.name
,gb.code_combination_id
)
pivot(sum(amount) for period_name in (
'Jan-20' jan_2020
,'Feb-20' feb_2020
,'Mar-20' mar_2020
,'Apr-20' apr_2020
,'May-20' may_2020
,'Jun-20' jun_2020
,'Jul-20' jul_2020
,'Aug-20' aug_2020
,'total' total
))

1.4 Report header


SQL

Name

Report name uniquely identifies reports. Names should be short and descriptive.

Good practice is to prefix report names with the appropriate Oracle EBS module short code.

Description

An optional report description of maximum 4000 characters may be set up to assist users in understanding and using the report.

Search

This Google like search functionality retrieves reports by report name, description or underlying SQL. You can search for example for a table or column name accessed by a SQL, or by parts of the report name or description.

Category

Retrieve reports by category.

Enabled

Defines whether a report is visible to end users. Disabling a report removes it from the user report list. This may be useful during the development and testing phase. Even if a report is disabled, it may still be run by users having User Admin, Developer or System access.

If you require to mass disable reports from a specific category, for example ‘Enginatics’, you can use a direct table update as shown in the following example script.

mass_disable_reports_by_category

Version

Click on a report’s version number to review the change history and previous report SQLs. A new version number is added and stored automatically for each report SQL update. Other report setup modifications such as report name, description or parameter changes are not tracked in the version history.

Type

Reports of type ‘Protected’ or ‘System’ are visible to users with access profiles set to ‘User Admin’ or ‘Developer’, but may only be edited by users which have their access profile set to ‘System’.

This serves as an additional level of protection for reports providing important system functionality such as outbound interfaces or search screens.

See tutorials for examples on how to use Blitz Report for custom system functionality.

BIP Code

BI Publisher data definition code. When populated, Blitz Report executes the dataTrigger section e.g. beforeReportTrigger of the associated data definition XML template. This allows running BI Publisher report SQLs through Blitz Report where the data extracted is based on global temporary tables preprocessed in the before report trigger.

Double click onto the BI Code to download and view the data definition XML template.

Number Format

Format for numeric value display in Excel output files. By setting the number format, you can, for example, change the number of decimals or the display style and color of negative numbers.

The number format can either be set by a profile option, for all columns in a report, or for individual columns as described in the column translations section.

The list of available format codes is defined in lookup XXEN_REPORT_NUMBER_FORMATS, which can be extended with additional custom format codes according to your needs. Note that the lookup codes represent Microsoft’s internal style ids, which must be a numeric value above 200, as the lower range style ids are reserved for Microsoft’s standard formats.
Blitz Report Excel number format lookup definitions

An explanation of how to use Microsoft’s custom number format codes can be found in this blog or on the Microsoft website.

Report Options

Report Options define additional attibutes and processing options for a specific report:

  1. The report from which it was copied
  2. Before and after report triggers which can be used for data pre- and post processing, e.g. for table data updates before executing a report
  3. Email to identify the author of a report
  4. Default email to sent the report output after its completion
  5. Default report output format
  6. Default limitation on the number of rows returned by the report
  7. Time limit in minutes after which the report is terminated by the ‘Blitz Report Monitor’ program
  8. Custom unix script to be executed after the report completion
  9. Excel output file name, downloaded to the client desktop
  10. Directory on the application server to save a copy of the report output file
  11. Directory on the database server to save a copy of the report output file
  12. Naming convention for output files if additional output directories are defined.
  13. Reqest type for defining concurrent managers specialization rules
  14. Standby database name to run report on
Blitz Report Setup Options

DB Package

Package name containing pre and post processing functions, which can be used for example to call Oracle standard PLSQL code or to run additional processes before or after report execution. The functions need to follow the naming convention: afterpform, beforereport, afterreport and return the boolean data type.
An example of how such functions can be used is the FA Depreciation Projection report, which requires running the Oracle standard ‘Depreciation Projection’ concurrent program first, before the report retrieves the data. The Blitz Report references a custom database package XXEN_FASPRJ, which submits and waits for completion of the Depreciation Projection program, before executing the actual report SQL.

Blitz Report Custom DB package

Parameter values are passed to the custom package through variables, which appear in the list of Blitz Report parameter anchors.

Blitz Report Custom DB package 1

The runtime values of these parameters can be used inside the package body.

Blitz Report Custom DB package

Here are screenshots of the parameter values and logfile showing the values assigned to the package variables before executing function xxen_fasprj.beforereport.

Blitz Report Custom DB package
Blitz Report Custom DB package

Author email

Email address of the report author.

Additional information can be found on registered authors in our online library.

Email

Default email address for sending output files. If different email address are set up on different levels, the default email on the Blitz Report run window is derived in following order:

  1. Default email setup on report level
  2. Profile option ‘Blitz Report Default Email Address’

It is possible to populate this field in two formats:

  1. Comma-separated email list. E.g. [email protected],[email protected]
  2. SQL statement returning one column containing email addresses. For example the statement returning the email address of the current EBS user:
select
coalesce(fu.email_address,
(select papf.email_address from per_all_people_f papf where fu.employee_id=papf.person_id
and sysdate between papf.effective_start_date and papf.effective_end_date)) email
from
fnd_user fu
where
fu.user_id=fnd_global.user_id
Note: Blitz Report’s email functionality is available from EBS version R12 onwards only.

Output Format

Allows changing the output format from Excel XLSX (Excel) to CSV (comma separated values) or TSV (tab separated values).

Row Limit

Limits the maximum number of lines for report execution.

Time Limit

Maximum run time limit in seconds. The Blitz Report Monitor concurrent program automatically cancels reports exceeding the set time limit. This avoids excessive server load if a user submits a report with insufficient parameter restrictions for example.

A time limit can also be set when running reports or using profile option ‘Blitz Report Time Limit’. If there are values set on different levels, the order of precedence is as follows:

  1. Run window options time limit
  2. Profile option on user level
  3. Time limit on report level
  4. Profile option on responsibility level
  5. Profile option on site level

Custom Postprocess

Provides the same functionality as the Custom Postprocess runtime option to default a postprocess on report level.

Output Filename

Provides the same functionality as the Output Filename runtime option to default the output filename format on report level.

Additional Out. Directory on APPS Server

Saves a copy of the report output file in the specified directory on the application server. Tokens can be used to create a directory path dynamically, for example based on report parameter values. If the resulting directory does not exist on the filesystem, it is created. Please ensure that the apps owner has the required permissions for the directory creation.

Additional Out. Directory on DB Server

Saves a copy of the report output file in the specified directory on the database server..

Additional Out. Filename

Naming convention for output files if additional output directories are defined. Tokens can be used to create a filename dynamically, for example based on report parameter values.

Request type

Allows assigning request types defined under System Administrator > Concurrent > Program > Types to specific Blitz Reports. Request types can be used in concurrent managers specialization rules, for example to configure certain slow running Blitz Reports to be processed by a separate concurrent manager.

Target Database

Allows running blitz reports on a standby database. Specify a TNS descriptor defined in $TNS_ADMIN/tnsnames.ora on the apps server.

SQL

The report extraction SQL must start either with the word ‘select’ or ‘with’. Blitz Report does not parse the SQL syntax for validity. SQL entry through the form is limited to 32767 characters. To create a report with a larger SQL, use the Upload Large SQL functionality from the tools menu.

‘Blitz Report Information’ descriptive flexfield

New ‘Blitz Report Information’ descriptive flexfield allows to store additional information, e.g. for change management

Blitz Report additional information descriptive flexfield

1.5 Parameters


Parameters

Parameter definitions consist of:

  • a parameter name, display sequence and optional parameter description and default value
  • SQL text to be inserted into the report SQL dynamically at run-time
  • an anchor as a reference to a position for the insertion
  • a parameter type and optional LOV
  • an optional matching value to restrict the SQL text insertion to certain parameter values

Display Sequence

Sequence number that defines the order in which parameters are displayed.

If different WHERE clauses are used for the same parameter name, e.g. to insert a different SQL text at different SQL positions or depending on different parameter matching values, display sequence is populated only for one record and left blank for subsequent lines of that parameter name. Example: To achive better performance, report FND Concurrent Requests uses different WHERE clauses for for parameters Phase and Status, depending on the parameter value entered by the user (Matching Value).

Negative display sequence numbers are used to define hidden parameters. These can be used to populate a &lexical with a SQL text dyamically before report execution. Report AR Transactions and Lines, for example, uses a hidden Ledger parameter to dynamically generate a string for the revenue account columns, depending on the chart of accounts segment setup.

Parameter Name

Parameter identifier. You can use the LOV to copy existing parameter definitions from other reports.

If you need a different SQL text in different SQL positions for one parameter, you can have more than one entries for the same parameter name, but only one of them can have a display sequence, parameter type and list of values setup (example: FND Concurrent Requests).

SQL Text

Parameter specific text added dynamically into the report SQL if a value for the parameter is entered at run-time. Usually, the SQL text would contain a bind variable name starting with a colon e.g. ‘:account_number’. Blitz Report automatically detects the variable and binds it with the value entered by the user. A maximum of one bind variable per parameter is allowed. If a parameter’s SQL text contains more than one bind variables, only the first one is bound with the entered parameter value.

Blitz Report also allows the insertion of SQL text using matching values. If the SQL text does not contain a bind variable, then the field ‘Matching Value’ becomes mandatory. Blitz Report inserts the corresponding SQL text if the parameter value entered by the user matches the matching value.

Multiple Values

If the SQL text includes a bind variable restriction and the user checks the multiple values checkbox, Blitz Report automatically replaces the restriction with an IN-clause during SQL execution. This replacement works for restrictions using ‘equal’, ‘like’, ‘not equal’ or ‘not like’ operators such as:

column_name=:bind_variable
column_name<>:bind_variable
column_name!=:bind_variable
column_name like :bind_variable
column_name not like :bind_variable

You can also use functions, for example:

upper(column_name) like upper(:bind_variable)

If the parameter SQL text is too complex or there is a different operator used e.g. column>=:bind_variable, automated IN-clause replacement is not possible and the multiple values checkbox is not available for this parameter. For multiple values, it is required to have the table column on the left and the :bind on the right side of the comparison operator. A SQL text such as :bind_variable=column_name will not work.

Note: The multiple values functionality is only available for parameters with anchor styles 1=1 or &lexical, not for :bind anchors.

Anchor

The position inside the report SQL where the parameter SQL text is inserted. The LOV for this field shows all anchors used in the SQL. See here for detailed explanation of Anchors.

Parameter Type

The parameter type definition controls validation of parameter values at run-time and there are the following types:

  • Char: free text / no validation
  • Date: a valid date. Even if you have timezone conversions enabled, the entered parameter value will be used as a bind for SQL execution without any conversion (midnight of the date entered).
  • DateTime: a valid date including timestamp. If you have timezone conversions enabled, the entered parameter value will be converted to server time before it is used as a bind for SQL execution.
  • Number: a valid number
  • LOV: If you select this type, the form prompts to pick one of the already existing stored Blitz Report list of values. After selecting the LOV name, you can double click on the LOV Query field to review or modify the SQL query of the LOV (see Tools > LOVs). Note that changes to the LOV affect all parameters referencing it. If you want to modify the LOV for the current parameter only without affecting other parameter validations, switch the parameter type to LOV Custom before modifying the query.
  • LOV custom is used to create an ad hoc LOV based on an SQL statement for validation of the current report parameter only. After selecting this type, double click on the LOV Query field to enter the SQL query for validation. The LOV SQL must select the two columns ‘value’ and ‘description’, where ‘value’ is used to bind the parameter restriction for report execution. If you want to re-use the query for other report parameters, click on the ‘Save as shared LOV’ button to create a shared LOV.
  • LOV Oracle allows selecting Oracle standard value sets for parameter validation. Oracle standard LOVs use an ‘id’ column to bind parameter restrictions and compared with the two Blitz Report specific types, LOV and LOV custom, they have the limitation that they do not allow use of multiple parameter values (see Parameters > Multiple Values).

LOV Name

Name of a shared LOV or Oracle standard value set.

LOV Query

SQL statement of a list of values. Double click in this field to open the LOV definition window. The LOV query must select the columns ‘value’ and ‘description’, and it may start with an optional ‘id’ column at beginning of the select clause. If you include an ‘id’ column, this value is used as the parameter’s :bind value for report execution, otherwise the ‘value’ column is used.

Checkboxes ‘Validate From List’ and ‘Filter Before Display’ control the style of the LOV, see Tools > LOVs.

Matching Value

If the parameter value entered at run-time matches the matching value, then the corresponding SQL text is inserted.

Matching values may contain wildcard characters. If, for the same Anchor, the parameter value entered by the user matches more than one matching value due to use of wildcards, then the SQL text of the best (longest string) match is inserted.

Blitz Report matching value example
Blitz Report matching value example

In the example above a value ‘Order’ is provided for the parameter Type, so the following SQL is inserted in the report SQL text: nvl(ooha.transaction_phase_code,’F’)=’F’

............
jtf_rs_salesreps jrs2,
jtf_rs_resource_extns_vl jrrev,
jtf_rs_resource_extns_vl jrrev2,
ra_customer_trx_lines_all rctla,
ra_customer_trx_all rcta
where
haouv.name=:operating_unit and
nvl(ooha.transaction_phase_code,'F')='F' and
ooha.open_flag='Y' and
oola.max_open_flag='Y' and
ooha.cancelled_flag='N' and
oola.cancelled_flag='N' and
1=1 and
............

Default Value

Specifies a default parameter value. If the value starts with the keyword ‘select’, then Blitz Report would execute the SQL to derive the default value dynamically instead of using a fixed value. Example: To get the current date in GL period format, use the following SQL as a default value:

select to_char(sysdate,'MON-RR') from dual

Some functions can be used without selecting from dual making report development easier. Here’s the list of those functions:

abs, add_months, bitand, cast, ceil, chr, coalesce, decode, greatest, initcap, instr, last_day, least, length, lower, lpad, mod, months_between, nvl, nvl2, power, regexp_replace, regexp_substr, replace, round, rtrim, sign, substr, substrb, to_char, to_date, to_number, translate, trim, trunc, upper, userenv

Here is an example of such a function used in a default value

Blitz Report default value example
Blitz Report default value example

Description

Additional parameter description displayed in the bottom left message area of the Blitz Report run window.

Required

The required flag enforces a parameter value entry by the user, for example to prevent accidental report submission with insufficient parameter restrictions.
Validate_From_List

Advanced Required Parameters

Using the ‘Required’ button, you can define an advanced definition for required parameters by entering a logical expression based on parameter names.

This allows creating an either-or logic, for example, if at least one, but not all parameters are required.

An example of a logical expression forcing the user to enter either the parameter ‘Customer Name’ or ‘Account Number’ would be:

:Customer_Name is not null or :Account_Number is not null

Parameters are referenced by their names (in the installed base language, usually US), prefixed with a colon and having spaces or other non-word characters replaced with a single underscore.

Blitz Report evaluates the logical expression at run-time and displays an error message in case the expression is not met. The default message text displayed is stored in FND message XXEN_REPORT_INSUFFICIENT_PARAM and, for expressions enforcing at least one parameter entry, in message XXEN_REPORT_ONE_PARAM_REQUIRED.

To display a specific error message for your logical expression, enter a message text as required.

For reports that have an advanced logical expression set up for their parameter requirements, the required button label shows ‘Advanced’ instead of ‘Required’. One expression can be set up per report.

Advanced Parameters

Dependent Parameters

Similar to Oracle standard’s dependent parameter functionality, you can define parameter dependencies in LOV queries and default values using the syntax:

:$flex$.parameter_or_lov_name

where parameter_or_lov_name is a reference to either the parameter name in US language or to the LOV name of the parameter, which the query depends on. The match to parameter or LOV name is case insensitive and spaces or other non word characters are replaced with an underscore as in the following examples.

Blitz Report dependent parameters example

In case you want to use multiple values functionality for a parameter which the query depends on, xxen_util.contains function can help. In the following example AP Supplier LOV will return values depending on multiple values in the Operating Unit parameter.

Multiple Dependent Parameters example
Multiple dependent parameters example

Dynamic parameter SQL text

Blitz Report provides a possibility to create parameters with dynamic SQL text which depends on a runtime value of a parameter.
In the example below GL Balance (pivot) report contains ‘Show Full Year’ parameter. This parameter produces a list of columns for the resulting SQL statement dynamically depending on its own value and a valuve of the ‘Period’ parameter. Each column represents a month in a year period.

Dynamic parameter SQL text example
Dynamic parameter SQL text example
Dynamic parameter SQL text example
Dynamic parameter SQL text example

1.6 Assignments


Blitz Report assignment tab

Access to individual Blitz Reports for normal users can be controlled using the following levels:

  • Site: all users in the system
  • Application: users having a matching application (via their responsibilities)
  • Operating Unit: users having access to the assignment operating unit (either via Oracle’s MOAC / security profiles or profile ‘MO: Operating Unit’)
  • Request Group: users having a responsibility linked to the assignment request group
  • Responsibility: users having the assignment responsibility
  • User: inclusion or exclusion by specific user
  • Form: make report available from an Oracle standard form through the custom Blitz Report icon

Exclusions take precedence over inclusions. A report included on Site level, but excluded for application ‘Receivables’, for example, would be accessible by all users in the system except from users only having responsibilities linked to the receivables application.

By default, inclusion assignments are implemented as a union, which means that the user can access a report if there is a match on any of the assignment levels.

For assignments on operating unit level in combination with request group or application however, it may be required to limit access to the combination or intersect of assignment level values instead of adding them.

This can be achieved by profile option ‘Blitz Report Restrict Assignments by Operating Unit Level’.

If set to ‘Yes’, users would, in addition to an assignment application or request group, require to have access to the assignment operating unit in order to access a particular report.

Example:

Option Level Value
Include Application Receivables
Include Operating Unit Vision Australia
Include Request Group OE Concurrent Programs
  • Profile ‘Blitz Report Restrict Assignments by Operating Unit Level’=No

Users can access a report if they have a responsibility that is either linked to the receivables application or that has access to operating unit ‘Vision Australia’ or that is linked to request group ‘OE Concurrent Programs’.

  • Profile ‘Blitz Report Restrict Assignments by Operating Unit Level’=Yes

Users can access a report if they have a responsibility that is either linked to the receivables application or request group ‘OE Concurrent Programs’ and that responsibility has access to operating unit ‘Vision Australia’.

Please note that assignments control report access for normal users only. Users having their access profile set to ‘User Admin’, ‘Developer’ or ‘System’ can access all reports in the system, irrespective of report assignments, and can run them, depending on report type and access profile as described here.

Blitz Report shows by default all reports accessible from all active responsibilities of a particular user, regardless of the current login responsibility. If profile option ‘Blitz Report Filter Reports by Responsibility’ is set to ‘Yes’, only reports assigned to the current login responsibility are shown like in the below screenshot:

Blitz Report filter by responsibility example

However if a user has developer access then all reports are still displayed on the Setup window because it’s required for development. For developers only the Run window shows the restricted list of the reports. It may be useful if a developer wants to check if a particular report is available for users under a certain responsibility. Furthermore a developer can run any report selected on the Setup window by clicking the Run button. But the Run window reports LOV is still restricted by a current responsibility. So a developer will not be able to see a report that was just run in the list of avaiable reports in the Run window and has to run it always from the Setup window.

Assignments can also be edited via Tools > Assignments

Form assignment

The forms assignment feature allows opening Blitz Reports directly from any Oracle EBS standard form.

To integrate a Blitz Report to a form, first identify the standard form name through the top menu > Help > About Oracle Applications > Current Form > Form Name, as shown in the following example for the GL Enter Journals standard form.

Identify Oracle standard internal form name for Blitz Report zoom integration

Navigate to the assignment setup of the Blitz Report that you would like to integrate, and select the form name from the list of values. If the Blitz Report should be accessible from a specific navigation block of the standard form only, or if you need to pass parameter values from different item names, depending on the current navigation block, enter the name of that block in the Block Restriction field. If the Blitz Report should be available on all blocks of the assigned form and the passed parameter values are identical, leave the Block Restriction empty.

You can pass default parameter values from the assigned form to the Blitz Report. In this example, the GL Batch and Journal names are passed to the GL Account Analysis report to allow direct drilldown from journals to subledger transactions.

Define Forms items to pass default parameter values to Blitz Report

The Blitz Report can then be accessed from the Oracle standard form through the custom icon, with parameters defaulted as defined.

Blitz Report parameter values passed from a standard Oracle form

Default assignments

The Blitz Report installation includes seeded reports developed by Enginatics, and their assignments to Oracle standard applications and forms. These default assignments allow business users to start working with the included reports without creating assignments for them individually.

The default assignments are automatically loaded during the first installation of Blitz Report, and during upgrades, if the profile option ‘Blitz Report Load Default Assignments during Upgrades‘ is set to ‘Yes’. You can run report Blitz Report Assignments for a list of all assignments.

If you would like to keep the default assignments, but hide specific Enginatics reports from the users, for example during a phased rollout, you can disable reports either manually, or by a SQL script.

Mass assignments

If you would like to create assignments for many reports automatically, you can do this by directly inserting records into the xxen_report_assignments table.
The following scripts can be used as an example to mass assign reports to applications, request groups or responsibilities:

mass_assign_reports_to_application.sql

mass_assign_reports_to_request_group.sql

mass_assign_reports_to_responsibility.sql

mass_assign_reports_to_user.sql

1.7 Categories


If you have a large number of reports in your system, category assignments will help users to find the reports they require via the category drop-down list on the run window.

Setup

To create a new category, navigate to the menu Tools > Categories.

1.8 Multi-language support


Report data

If you have more than one language installed, Blitz Report offers multi-language support via the Oracle EBS translation menu icon for the following data:

  • Report name
  • Report description
  • Parameter name
  • Parameter description
  • Category
  • LOV description
  • Column headers

The below screenshot shows an example of setting a parameter translation

Setting parameter translations for a blitz report

User messages

To add translations for user-facing messages, navigate to Application Developer > Application > Messages > query messages starting with XXEN and add translations for a different language as required.

User interface translations

The labels shown on the Blitz Report user interface, e.g. on the run window can be translated via Application Developer > Application > Lookups > Application Object Library, query Lookup XXEN_REPORT_TRANSLATIONS and enter translations for the lookup code descriptions as required.

Blitz Report german translation
Note: If you install an additional language in Oracle applications, in addition to running the adadmin ‘Maintain multi-lingual tables’ process, you need to run the concurrent request ‘Blitz Report Maintain Multilingual Tables’.

1.9 Security and user profiles


Blitz Report provides the following levels of security:

  • The profile option ‘Blitz Report Access‘ controls which users can consume a license, and which users have access to the report setup window.
  • Assignments control which business users have access to which reports and uploads.
  • Access to data within reports is secured through restricted LOVs (recommended) or by using Oracle’s secured views and synonyms.
  • Access to layout templates is controlled by the profile option ‘Blitz Report Template Access‘, for example to designate specific users as ‘Super User’.
  • Access to sensitive data, for example to prevent developers from accessing HR data, can be restricted through additional VPD policies.

The ‘Blitz Report Access’ profile option is used to control access to Blitz Report functionality, and to distinguish business users with limited access from developers with full access to create new reports and update existing ones.

Developers typically have their access profile option set ‘Developer’ on user level, which allows them to access all reports and the setup window from all login responsibilities. The access to modify reports also depends on the type of report. If you have a large development team and certain reports require an additional level of protection, such as an important outbound interface, you can set the type of the report to ‘Protected’ to allow only developers with the highest access profile setting ‘System’ to modify them.

The upload functionality has additional security and the Upload button is inactive by default even for developers. To upload data, users or developers require assignments created by someone having the Blitz Report Access profile option set to the highest level ‘System’. Only users users with System access can modify and or run any of the uploads, or create assignments for them. Unlike reports, Enginatics does not provide out of the box assignments for uploads, and they would need to be assignments as required.

Access to the different report types ‘Standard’, ‘Protected’ and ‘System’, the upload and other functionality is available according to the following table.

Functionality \ Access Profile User User Admin Developer System
Create modify or delete categories no yes yes yes
Edit licensing information no no yes yes
Run reports (Standard or Protected) yes1 yes yes yes
Run reports (System) no no no yes
Upload data yes1 yes1 yes1 yes
Assign reports (Standard or Protected) no yes yes yes
Assign reports (System) no no no no
Assign uploads no no no yes
Create modify or delete reports (Standard) no no yes yes
Create modify or delete reports (Protected or System) no no no yes
Create modify or delete uploads no no no yes
Create modify or delete column translations no no yes yes
Create modify or delete templates yes2 yes2 yes yes

1. Users can see and run reports restricted to their assignments only.
Users with access profile set to ‘User Admin’, ‘Developer’ or ‘System’ can access all reports in the system, irrespective of report assignments, and can run them, depending on report type and access profile as shown above. Uploads can only be done if there are assignments for them, or by users with an access profile of ‘System’.
2. Depending on the setup of profile option ‘Blitz Report Template Access‘, users can create and modify only their own templates or modify other owner’s templates.

1.10 Data access security


For increased flexibility and maintainability, we recommend using “_all” tables in report SQL queries, for example ap_invoices_all, instead of Oracle’s VPD secured synonyms, such as ap_invoices. Security is then applied by adding a required Operating Unit parameter in Blitz Report with an LOV that contains the allowed Operating Units only. This approach allows greater flexibility, e.g. to enable certain users, such as in shared service centers, to see all data in the system, or to test SQL queries through database access tools, without having the application user session context initialized.

Example:

  • Report that selects AP invoice information from the unrestricted base table ap_invoices_all.
AP Invoices base table example
  • “Operating Unit” is introduced as a required parameter. Records of the query are filtered based on the parameter value.
  • When submitting a report, the “Operating Unit” LOV is limited to organizations available in the current login user responsibility only.
Blitz Report restricted operating unit LOV

1.11 Securing sensitive information with Oracle Virtual Private Database


With Blitz Report, you can use Oracle Virtual Private Database (VPD) to control access to sensitive data. VPD policies are set up on database objects to automatically add restrictions before SQL execution, thus preventing visibility of sensitive information. This can be used for example to prevent users and developers from querying sensitive HR data, such as payroll information when running queries through Blitz Report.

Database policies can be set up either on row or on column level and Blitz Report includes the following objects to maintain these:

  • Lookup XXEN_REPORT_VPD_POLICY_TABLES to define the tables or columns to be secured
  • Concurrent program Blitz Report Update VPD Policies to create or update VPD policies for the tables and columns defined in the lookup
  • Concurrent program Blitz Report Remove VPD Policies to completely remove all Blitz Report VPD policies
  • Database package XXEN_VPD containing the policy function code
  • Profile option Blitz Report VPD Policy Rule to control data access

Perform following steps to secure your data. Note: Using this method secures data access through the Blitz Report concurrent program only, not through other access methods such as direct queries through database access tools or Oracle standard EBS processes.

1. Set up tables or column names in lookup XXEN_REPORT_VPD_POLICY_TABLES

Application Developer > Application > Lookups > Application Object Library: Query lookup type XXEN_REPORT_VPD_POLICY_TABLES and enter one lookup value for each table or table column that need to be secured. Choose a unique lookup code and enter the owner, table and optional column name as the lookup meaning.

Blitz Report VPD lookup setup
2. Run concurrent program ‘Blitz Report Update VPD Policies’

System Administrator > Concurrent > Requests: Run concrrent program ‘Blitz Report Update VPD Policies’. This program first removes all possibly existing Blitz Report VPD policies, creates the policy function package XXEN_VPD and then creates database policies for all tables and columns referenced in lookup XXEN_REPORT_VPD_POLICY_TABLES.

3. Optionally set profile option ‘Blitz Report VPD Policy Rule’

System Administrator > Profile > System: Set profile option ‘Blitz Report VPD Policy Rule’ to ‘Full access’ for responsibilities or users who should have access to run Blitz reports on secured data.

Blitz Report VPD access rule profile option setup

2. Tools menu


Blitz Report tools menu

2.1 LOVs


Define LOV
Use the LOV setup window to define list of values shared by different report parameters. Changes to a shared LOV affect all report parameters referencing the LOV.

Name

Unique name for shared LOVs.

Description

Description for shared LOVs. This description is displayed in the bottom left message area of the run window, if parameter description is left blank.

Validate From List

If checked, the parameter validation enforces selection of one record from the LOV and does not allow use of wildcards. If unchecked, the parameter value is not validated against the LOV and use of wildcards is allowed.

Filter Before Display

The Filter Before Display setting is used to avoid performance issues for large LOVs. If unchecked, which is the more user-friendly default, Blitz Report queries all possible parameter values from the LOV in the background when selecting a report on the run window. As this can be slow for large LOVs, checking the ‘Filter Before Display’ setting prompts the user to enter a (partial) value before LOV display, and the form then queries a restricted dataset instead of all records.

Used By

The ‘Used By’ button shows all reports and parameters referencing the LOV.

LOV Query

SQL query for LOVs, selecting the two mandatory columns ‘value’ and ‘description’, and it may include an optional ‘id’ column at the beginning of the select clause.

Version

Double click on a LOV version number to review the change history and previous LOV SQLs. Note that a LOV report version number is added and stored automatically at each update of a LOV’s SQL. Other LOV modifications such as LOV name, description are not stored in the version history.

LOV version history

2.2 Tools > Assignments


The Assignment function in the Tools menu allows to mass-assign different reports to one assignment level, or to review existing assingments through the assignment value LOV.

Blitz Report assignment levels

Defines access to reports for users on a particular assignment level.

2.3 Tools > Categories


Define categories to help users find reports, using predefined lists.

2.4 Copy Report


Creates a new copy of an existing report. This functionality should be used if user want to do any changes to the existing Blitz report.

Seeded reports should not be modified as all updates will be removed as soon as new version of Blitz Report will be installed.

Note: Assignments and category assignments are not copied.

2.5 Copy LOV


Creates a new copy of an existing LOV. This functionality should be used if user want to do any changes to the existing LOV.

Seeded LOVs should not be modified as all updates will be removed as soon as new version of Blitz Report will be installed.

Blitz Report copy LOV

2.6 Export


The Blitz Report export functionality allows to generate XML files or SQL scripts for automated load of report definitions, LOVs, categories and other Blitz Report related setup for migration purposes.

Blitz Report for Oracle EBS export options

Following items can be exported:

  • Report
  • Reports from Category
  • Reports except Category
  • Reports from Application
  • Reports matching a search pattern with the use of wildcards
  • LOVs
  • Categories
  • Column Translations
  • Dynamic Column Translation Rules
  • All Content (Reports, LOVs, Categories, Column Translations, Assignments)
  • Assignments
  • Menu Entries
  • Profile Option Values

Note: For security reason, following items can only be exported and re-imported as SQL scripts:

  • Menu Entries
  • Profile Option Values

When choosing one of the first four Report export options, you can use the checkboxes to decide if you want to include LOVs, Categories or Assignments of the exported reports in the XML file.

Examples:

To generate an XML file for migration of a single report, choose ‘Report’ and select the report name from the list of values.
To migrate the complete Blitz Report metadata from one EBS system to another, choose the ‘All Content’ export option, which will include all reports and their related setup such as LOVs, categories, column translations and assignments in the exported XML file.
To generate a SQL script to migrate all currently set up Blitz Report related profile option values to a different environment, choose the ‘Profile Option Values’ export type.
To generate an XML file for migration of reports matching a search patter choose ‘Report by Search pattern’ and provide a search expression.

Blitz Report export by wildcard search pattern

Blitz Report Library

To download XML files from the Blitz Report library, find the desired report and click on the XML icon in the ‘Download’ column.

To export all reports from a specific category, search for this category

and once the category or several categories are selected, an option to download all reports will appear

Notes:

  • If a report already exists, the load script or import from the XML file updates it with the new definition while keeping the previous SQL in the version history.
  • Report version numbers are generated automatically in each environment and thus may differ between environments. Reports imported into an environment for the first time start with version number 1.
  • Report load scripts and XML files contain current report SQLs versions only. They do not include previous versions SQL history.
  • The load of parameters based on shared LOVs requires the referenced LOV to be imported first. If a referenced LOV does not exist, the parameter is loaded with a custom LOV instead.

Export API

To export Blitz Reports programmatically, e.g. for scripted report migrations, you can use the following function in package XXEN_API:

function export_file_data(
p_type in varchar2, --can be of either: 'SQLs', 'SQL Versions', 'Menu Entries', 'Profile Option Values', 'Reports', 'LOVs', 'Column Translations', 'Dynamic Column Translation Rules', 'Assignments', 'All Contents'
p_ids in fnd_table_of_number default null, --list of IDs to export for types in ('SQLs', 'SQL Versions', 'Reports', 'LOVs', 'Assignments')
p_include_lovs in varchar2 default null, --used for 'Reports' only
p_include_categories in varchar2 default null, --used for 'Reports' only
p_include_assignments in varchar2 default null, --used for 'Reports' only 
p_include_templates in varchar2 default null, --used for 'Reports' only
p_include_columns in varchar2 default null, --used for 'Reports' only 
p_creation_date in date default null, --used for 'SQL Versions' only 
p_language in varchar2 default null --used for 'Column Translations' to export a specific language only
) return clob;

To export a single report, you can use the following function in package XXEN_API:

function export_report_(
p_report_id in number, --Report ID to be exported
p_include_lovs in varchar2 default null,
p_include_categories in varchar2 default null,
p_include_assignments in varchar2 default null,
p_include_templates in varchar2 default null,
p_include_columns in varchar2 default null,
p_language in varchar2 default null --optional parameter to restrict the language for included column translations
) return clob;

You can use the dbms_xslprocessor.clob2file procedure to write Blitz Report XML files to the database filesystem, as done in the following example, exporting all reports containing the word “test” in their name into one single XML file. This can be useful to automate migration tasks using shell scripts. Note that ‘OUT_FILE_LOC’ points to a directory name defined in dba_directories.

declare
  l_ids fnd_table_of_number:=fnd_table_of_number();
begin
  for c in (select xrv.report_id from xxen_reports_v xrv where lower(xrv.report_name) like '%test%') loop
    l_ids.extend;
    l_ids(l_ids.last):=c.report_id;
  end loop;
  dbms_xslprocessor.clob2file(xxen_api.export_file_data('Reports',l_ids,'Y','Y','Y'),'OUT_FILE_LOC','reports_which_have_test_in_their_name.xml',nls_charset_id('AL32UTF8'));
  l_ids.delete;
end;
/

To export different reports to individual XML files, e.g. in order to store them in a change management system. You can use a similar script calling function xxen_api.export_report_ instead:

begin
for c in (select xrv.report_name, xrv.report_id from xxen_reports_v xrv where lower(xrv.report_name) like '%test%') loop
dbms_xslprocessor.clob2file(
xxen_api.export_report_(
p_report_id=>c.report_id,
p_include_lovs=>'Y',
p_include_categories=>'Y',
p_include_assignments=>'Y',
p_include_templates=>'Y',
p_include_columns=>null
)
,'OUT_FILE_LOC',lower(xxen_report.space_to_underscore(c.report_name))||'.xml',nls_charset_id('AL32UTF8'));
end loop;
end;
/

2.7 Import


The Blitz Report ‘Import’ menu option allows import of reports from XML files generated via export or downloaded from the Blitz Report library, or reports developed in other technologies such as BI Publisher, Oracle Discoverer, Enterprise Command Center or other third party tools.

Blitz Report import options

During import, reports are assigned to categories automatically, depending on the originating concurrent program’s application module. This automated category assignment is defined by lookup XXEN_REPORT_APPLICATIONS.

Reports from application modules listed in the lookup code column are assigned to the category listed in the description column. There are two special lookup codes BI_PUBLISHER and CONCURRENT_PROGRAM which can be used to assign all imported reports of a particular type to a specific category.

Blitz Report third party application import lookup definition

2.7.1 XML Upload

Blitz Report Setup > Tools > Import > XML Upload

With XML upload, you can migrate reports exported from other EBS environments or downloaded from the Blitz Report library.
Please see section 2.6 Export for more details on how to get report XML files from other EBS instances or the Blitz Report library.
The screenshot below shows the XML upload option in the Import window.

XML Upload

Once this option is chosen, a separate browser window is opened asking to provide the path to the XML file on the local file system.

At the same time a new form window is opened notifying that upload is in progress and providing an option to cancel the operation.

XML import

After successful upload, the Blitz Report setup window is opened and the uploaded reports are shown.

Note: To avoid incompatabilities due to possible file format changes between different Blitz Report versions, please ensure that source and destination environment have the same or latest Bitz Report version installed.

Import API

To import Blitz Report XML files programmatically, e.g. for scripted non-interactive deployments, you can use the following import_xml command from Linux:

$XXEN_TOP/bin/import_xml $APPS_PWD blitz_report_filename.xml

Or to import an XML as a clob through PLSQL, you can use the following function in package XXEN_API:

function import_xml(p_xml in clob) return varchar2; --returns null if successful, otherwise returns an error message

The function returns null for success or an error message in case of failure. Note that it does not include a commit, which needs to be executed from the calling code.

2.7.2 BI Publisher

Blitz Report imports BI Publisher reports of java executable XDODTEXE (XML Publisher Data Template Executable) by importing the report SQL from the corresponding XML data source. If the originating data source contains more than one SQL query, only the largest one is imported and there would be additional manual work require combine the data from the different SQLs into one larger single query.

Reports imported from BI Publisher show the original source code in field ‘BIP Code’ and Blitz Report uses this value to identify and execute beforereport triggers from the original XML data source. Executing such triggers before running the report SQL is required for reports, which rely on PLSQL code to populate data into global temporary tables for example.

You can double click on the BIP Code to download and review the XML data source.

Imported BI Publisher report

Import API

BI Publisher reports can be migrated programmatically into Blitz Report through the following PLSQL procedure:

xxen_api.import_concurrent_program(
p_application_short_name in varchar2,
p_concurrent_program_name in varchar2,
x_report_id out pls_integer,
x_message out varchar2
);

You can use the example script mass_import_bi_publisher_reports.sql to import all custom BI Publisher reports with a datasource starting with XX%.

2.7.3 Concurrent Program

This option allows import of parameter definitions, LOVs and request group assignments of any concurrent program, and can be used to help migrating other reporting technologies, such as Oracle Reports .rdf files or custom report programs into Blitz Report.

Note that the report SQL can usually not be imported automatically for such technologies, and would need to be transferred manually. If you run the concurrent request to import, e.g. an Oracle standard report, directly before the import however, the Blitz Report code attempts to retrieve the concurrent program’s SQL from the database memory (SGA). While this might not work 100% reliably as it only retrieves the program’s largest SQL, it facilitates the migration process to Blitz Report. You can also use report DBA SGA SQL Performance Summary restricted by module type ‘Concurrent Request’ and the module name of the concurrent program to identify the SQL statements executed by the program to import.

2.7.4 Discoverer Worksheet

Select ‘Discoverer Worksheet’ to import worksheets available from the selected end user layer. By default, the LOV shows worksheets that ran within the History Days timeframe only. To select all worksheets, including ones that were not executed in the past, clear our the value from the History Days field.

Blitz Report Discoverer Workbook Import LOV

During import, Blitz Report derives parameter types from the Discoverer EUL items and creates LOVs automatically for the item classes used by the workbook parameters.

Discoverer Worksheet import parameter definition

Prior to importing Discoverer worksheets, you may want to analyze which reports are frequently used and by whom. This will allow you to do a cleanup of the Discoverer reports as part of the import.

To analyze the worksheet usage history and content of your current End User Layer, use the Discoverer analysis reports from the Blitz Report library (starting with DIS %) .

Discoverer analysis reports

Import API

Mass import of Discoverer Worksheet SQLs can be done via a SQL script using the following PLSQL procedure:

xxen_api.import_discoverer_worksheet(
p_workbook_owner_name in varchar2,
p_workbook_name in varchar2,
p_worksheet_name in varchar2,
p_eul in varchar2 default 'eul_us',
x_report_id out pls_integer,
x_message out varchar2
);

The example script mass_import_discoverer_worksheets.sql imports all Discoverer Worksheet SQLs which have been accessed within the past 180 days into Blitz Report.

In case you need to rerun the import, for example with a different setting for custom view expansion, you can use script mass_delete_discoverer_reports.sql to remove all imported Discoverer reports before re-importing them.

2.7.5 Discoverer Folders

The ‘Discoverer Folders’ import option allows consolidation of different workbooks during migration to Blitz Report by importing distinct folder or view object combinations only. If you have many different workbooks accessing the same views or folders, this import option can significantly decrease the number of Blitz Reports to migrate and simplify subsequent report maintenance.

The LOV of reports to import shows one record for each distinct folder combination, and the number of different workbooks and sheets using these folders. During import, the different workbooks and their selected columns are converted to Blitz Report templates.

Blitz Report Discoverer Folders import
  • EUL: Specify the Discoverer End User Layer to import reports from.
  • History Days: Number of days in the past to consider worksheet executions for the import. The list of folder combinations is based on the worksheet execution history and only folders used within the given number of days are shown. Leave blank to show all folders from the whole history.
  • Expand Views: When set to ‘All’, folders based on views have their view definition SQL statements imported into Blitz Report as a subquery, instead of selecting from the view. This simplifies maintenance, as the SQL can be modified directly in Blitz Report, instead of having to recompile a view in the database. When set to ‘Custom’, not all views, but only the SQLs of views either starting with XX% or with any of the custom application short names, such as ADS_%, are expanded during import.
  • Include Columns: Allows to create imported SQLs with either ‘All’ folder columns, such as aia.*, or only the ‘Active’ columns that were previously used by workbooks.
Note: Templates are only created if a combination of folders was used in more than one different worksheets. If a folder combination was used by just one worksheet, then the imported blitz report name will be ‘Workbook Name: Sheet Name’. This makes it easier for users to recognize imported reports, as the blitz report name is identical to the previously used Discoverer workbook and sheet names. If a Discoverer worksheet name is left as the default e.g. ‘Sheet 1’, then it is not included in the imported report or template name.

Import API

Mass import of Discoverer folders can be done via a SQL script using the following PLSQL procedure:

xxen_api.import_discoverer_folders(
p_object_use_key in varchar2,
p_history_days in pls_integer,
p_expand_custom_view_sqls in varchar2,
p_eul in varchar2,
x_report_id out nocopy pls_integer,
x_message out nocopy varchar2
);

The example script mass_import_discoverer_folders.sql imports all Discoverer folder combinations of Worksheets accessed within the past 180 days into Blitz Report.

In case you need to rerun the import e.g. in case of errors), you can use script mass_delete_discoverer_reports.sql to remove all imported Discoverer reports again.

2.7.6 Discoverer Import Prerequisites

Register eul_trigger$post_save_document function

Blitz Report imports Discoverer worksheet SQLs from EBS table AMS_DISCOVERER_SQL. This table is updated with the latest SQL, each time a worksheet is saved in Discoverer Desktop or Discoverer plus. The update is done by a discoverer trigger called eul_trigger$post_save_document, which calls database PLSQL function AMS_DISCOVERER_PVT.EUL_TRIGGER$POST_SAVE_DOCUMENT to perform the update.

If you don’t see any worksheet SQLs in Blitz Report’s Discoverer Worksheet import option, or if you only see very old ones having the execution count and last executed columns blank, or if the EUL you are looking for is not available, then above trigger does not exist or does not work.

To correct the trigger setup, you need to re-register the PL/SQL function. Login to Discoverer Administrator, connecting to the database end user layer, and navigate to Tools > Register PL/SQL Functions > Import, then show all functions from owner APPS. Note that the function LOV for the APPS user is quite large and it took about 4 minutes to bring it up on our PCs. Then select function APPS.AMS_DISCOVERER_PVT.EUL_TRIGGER$POST_SAVE_DOCUMENT.

Note #1: You can start typing the first characters of the function name ‘apps.ams_dis’ to navigate quicker than scrolling through the complete list.
Note #2: If the function doesn’t appear in the list please provide the following grant to the EUL user. Example:

grant execute any procedure to eul_us;

After Import, modify the display name from upper to lowercase (see Oracle’s Discoverer Administrator Guide).

After import, click the validate button to ensure that the function is working. Ensure that the discoverer EUL user has execution and update/insert permissions on the AMS package and table.

With this PL/SQL function in place, every workbook update triggers an update of the included worksheet SQLs to table AMS_DISCOVERER_SQL and makes them available for import into Blitz Report. To automatically trigger recently used workbooks (and to avoid manually saving them to trigger the update), you can enable parameter ‘SaveLastUsedParamValue’, which saves a workbook each time it is used in Discoverer plus or viewer (see ‘Discoverer server configuration file’ further down).


Enable statistics collection

Blitz Report’s Discoverer import uses information from table EUL5_QPP_STATS, which is populated by Discoverer Desktop or Discoverer plus with a history of worksheet query execution statistics. The information is written to the table upon exit from above applications. Use File>Exit menu, do not just close browser or application.

When exiting the Discoverer plus choose ‘No’ when prompted to save the changes to a workbook.

Discoverer Desktop Windows registry setting

To ensure that the statistics is written for the Discoverer Desktop, a Windows registry setting for Discoverer parameter QPPEnable and QPPCreateNewStats needs to be added or adjusted, as described in Oracle’s Discoverer Administrator Guide and Doc ID 1340849.1. Open the Windows registry editor.

Go to the following path (Replace Discoverer 11 with your version):

Computer > HKEY_CURRENT_USER > Software > Oracle > Discoverer 11 > Database

If the setting for key QPPCreateNewStats already exists, ensure that it’s value is set to ‘1’.

If the key does not exist, create it by using Edit > New > DWORD (32-bit) Value:

Create the QPPEnable key in the same way.

Enable Collect Query Statistics for users

Login to Discoverer Admin and enable ‘Collect Query Statistics’ for all Discoverer users that you want to collect statistics for.

Discoverer admin collect statistics

Discoverer server configuration file

For Discoverer plus and viewer users, following actions need to be performed which are also outlined in the following Oracle document, section “9.4 How to set default user preferences for all users” and Doc ID 387367.1.Below instructions will be provided with examples from our own demo Discoverer server installation.
Open pref.txt file under $ORACLE_INSTANCE/config/PreferenceServer/$DISCO_COMP_NAME

nano /u01/disco/middleware/asinst_1/config/PreferenceServer/Discoverer_asinst_1/pref.txt

Update or add required parameters in the respective sections and save the file:

[Application]

SaveLastUsedParamValue = 1

[Database]

QPPEnable = 1
QPPCreateNewStats = 1

Run script applypreferences.sh or applypreferences.bat under $ORACLE_INSTANCE/Discoverer/$DISCO_COMP_NAME/util

UNIX:

/u01/disco/middleware/asinst_1/Discoverer/Discoverer_asinst_1/util/applypreferences.sh

Windows:

$ORACLE_INSTANCE\Discoverer\Discoverer_asinst_1\util\applypreferences.bat

Restart the Discoverer_[instance_name]  ias-component:

$ORACLE_INSTANCE/bin/opmnctl stopproc ias-component=Discoverer_asinst_1
$ORACLE_INSTANCE/bin/opmnctl startproc ias-component=Discoverer_asinst_1
$ORACLE_INSTANCE/bin/opmnctl status

Index creation

For better import performance, we recommend creation of following index on eul5_documents.doc_name.

create index .xxeul5_documents_n1 on .eul5_documents (doc_name) tablespace apps_ts_tx_idx;

2.7.7 Excel4apps Reports Wand

Blitz Report imports custom Excel4apps Reports Wand reports through the import menu option.

Blitz Report import Excel4apps Reports Wand

Import API

To mass import Exel4apps Reports Wand concurrent programs into Blitz Report via a SQL script, use the following PLSQL procedure:

xxen_api.import_concurrent_program(
p_application_short_name in varchar2,
p_concurrent_program_name in varchar2,
x_report_id out nocopy pls_integer,
x_message out nocopy varchar2
);

as shown in the example script mass_import_excel4apps_reports.sql.

2.7.8 Enterprise Command Center

Blitz Report imports Oracle’s EnterpriseCommand Center dataset queries, allowing users to access ECC data of unlimited size and real-time in Excel. You can import data sets through the menu option

Blitz Report Oracle EBS Enterprise Command Center import

or you can use the following API for mass import.

Import API
xxen_api.import_ecc_dataset(
p_dataset_key in varchar2,
x_status out nocopy varchar2,
x_message out nocopy varchar2
);

The example script mass_import_ecc_reports.sql imports all ECC queries automatically into Blitz Report.

If you upgrade the command centers to a new version, you can use the following script to delete all imported ECC blitz reports, before re-importing Oracle’s latest dataset queries again: mass_delete_ecc_reports.sql.

2.7.9 Polaris Reporting Workbench

Blitz Report imports Polaris Reporting Workbench reports either through the import menu option or an API.

Blitz Report Polaris Reporting Workbench Import

The import process consolidates different RWB reports, which are based on the same database views, into single Blitz Reports. The RWB report specific column selections are imported as individual Blitz Report templates.
During import, you can set the option ‘Expand Custom Views’ to expand the SQL text from the underlying database views into the imported Blitz Report. This increases flexibility as the SQL text can be maintained through the Blitz Report form instead of compiling a view into the database.

Import API

To mass import Polaris Reporting Workbench reports into Blitz Report via a SQL script, use the following PLSQL procedure:

procedure import_reporting_workbench(
p_report_id in pls_integer,
p_expand_view_sqls in varchar2, --none, all, custom
x_report_id out nocopy pls_integer,
x_message out nocopy varchar2
);

The example script mass_import_polaris_reporting_workbench.sql imports all RWB reports that were executed within the given number of days automatically into Blitz Report. Parameter ‘p_expand_view_sqls’ defines if the import process expands either all, none or only custom views, which are identified as starting with either XX% or any of the custom application short names. Any view which references Polaris RWB objects starting with XXRX%, such as views using function xxrx_util_pkg.get_parameter_char_value() for example, will be expanded regardless of the setting for parameter p_expand_view_sqls.

In case you need to re-run the import, for example with different parameters, you can use the following script to remove all imported reports again: mass_delete_polaris_reporting_workbench_reports.sql.

2.8 Upload Large SQL


Blitz Report Setup > Tools > Upload Large SQL

To upload report SQLs larger than Oracle’s Forms limit of 32767 characters, select the ‘Upload Large SQL’ menu entry to open a browser window and select a SQL file for upload. If the SQL file contains non ANSI characters, it must be uploaded in UTF-8 encoding.

A notification window indicates that an upload is in progress and allows to cancel.

After file upload, the notification window closes and the uploaded SQL is shown on the setup screen. Note that SQLs larger than 32767 characters are greyed out and can be modified via the SQL upload functionality only.

While the form displays the first 32767 characters only, a double click on the SQL downloads the full SQL text as a file.

2.9 Column Translations


Column Translations provide multi-language support for SQL column headers and report parameters and allows specifying number formats for numeric columns/parameters. The number of existing translations is shown in column ‘Count’. If you have a report selected before navigating to Tools > Column Translations, the columns/parameters are shown for that report only. You can query all existing column translations via Ctrl+F11.

2.10 Dynamic Column Translations


Dynamic column translation rules allow dynamic translation of parameters and report header column names based on individual rule SQLs.

The output of a rule SQL should contain two columns, the first for the column or parameter name, and the second for the translation.

This can for example be used to show GL segment names based on a selected ledger parameter. Translations are applicable for both, parameters and header columns in the report.

Blitz Report dynamic column translation rules

2.11 Resequence parameters


Blitz Report Setup > Tools > Resequence parameters

Assigns new parameter sequence numbers automatically. Sometimes you can not insert a new parameter because there is no spare sequence number.

Blitz Report resequence parameters

Then you can resequence parameters so they have room between sequence numbers again.

Blitz Report resequence parameters

2.12 License Key


Blitz Report Setup > Tools > License Key

Enter the company name and license key information.

Double click on the active users count to open a detailed list of active Blitz Report users.

Note: If you are using the free version of Blitz Report without a license key, you can still use Blitz Report’s full functionality for storing and maintaining SQLs, but Blitz Report will generate an output for the 30 most recently created reports only (custom reports take precedence over Enginatics reports).

2.13 User license assignment


The access to Blitz Report functionality and licenses is controlled by the profile option ‘Blitz Report Access’. With this profile option, licenses can be assigned automatically, or to individual responsibilities or users only.

Automatic license assignment

The recommended way to maintain Blitz Report user licenses is to have them assigned automatically, whenever users run a report. Any user with access to Blitz Report can consume a license by running a report that is assigned to them. This option requires the following setup:

  • Set up the Blitz Report menu entry function in all menus of responsibilities that require to run reports or upload data. This assignment can be done manually for individual menus or automatically for all responsibilities by running the Update Menu Entries concurrent program.
  • Set the profile option ‘Blitz Report Access’ to ‘User’ on site level (this is the default after installation).
  • Assign reports to users via the Assignments tab inside each report or via Blitz Report Setup > Tools > Assignments.

Manual user license assignment

If you have a large number of EBS users, but a limited number of Blitz Report licenses, you may want to assign licenses manually to individual responsibilities or users. In this case, ensure that the Blitz Report profile option ‘Blitz Report Access’ value ‘User’ is removed from the site level, and set it up for each individual responsibility or user as required.

Do not create custom Blitz Report responsibilities

Some companies historically used custom read-only responsibilities for reporting, for example to run Discoverer reports. Blitz Report is designed to work in the existing users’ responsibilities however, as running Blitz Report in separate custom responsibilities has the following drawbacks:

  1. Additional navigation steps to switch responsibility whenever users need to run reports.
  2. More work and complexity to create and maintain additional responsibilities and access.
  3. Reports cannot make use of the existing responsibilities’ session security, for example, to restrict access to specific organizations or ledgers. Some reports require a module specific session context, such at the AP Trial Balance.
  4. Users cannot use the Oracle standard forms to Blitz Report drill down functionality.
  5. Uploads cannot be linked directly to Oracle standard entry forms

3. Tips and tricks


3.1 Debugging


If you encounter an error during Blitz Report execution e.g. the message ‘Blitz Report output file creation failed.’, then this is usually due to an error encountered during SQL execution. Review the report concurrent logfile for error messages and try to execute the SQL as shown in the logfile directly in a development tool such as Toad or SQL Developer for further debugging. The logfile also shows the user entered parameter values and corresponding bind variables.

3.2 Using Firefox with Oracle EBS


We recommend using Firefox instead of Internet Explorer to access Oracle EBS, as it has better performance and allows automated download and opening of output files without repeatedly prompting for confirmation.

Download historic version

Since Firefox stopped supporting NPAPI plugins in their latest version however, you either need to have Java Web Start installed, or use the last supported 32bit ESR version 52, which can be downloaded from the Mozilla version history.

Disable automatic updates

After installation, ensure that you have disabled automated updates in Options > Advanced > Update

disable Firefox updates

And check that the Java plugin shows up in Add-ons > Plugins

Firefox Java plugin

If the Java does not appear in this list, check that you have the 32 bit version of the Java RE installed and confirm the 32 bit version 52 of Firefox by navigating to Help Menu > Troubleshooting Information and check that the User Agent string contains ‘WOW64’

Firefox 32bit version

3.3 Incremental outbound interface


Integration with Oracle’s concurrent delivery options allows scheduling a Blitz report as an outbound interface or monitoring tool. If you need to transfer incremental data changes only, you can restrict the query to records modified since the previous scheduled request run by a parameter SQL like the following example:

rctla.last_update_date>=
(select
fcr0.actual_start_date
from
fnd_concurrent_requests fcr,
fnd_concurrent_requests fcr0
where
fcr.request_id=fnd_global.conc_request_id and
fcr.parent_request_id=fcr0.request_id)

You can find an example of such a parameter restriction in our seeded report FND Concurrent Requests, which uses this logic in parameter ‘Incremental Alert Mode’ to monitor concurrent request activity and send an alert email e.g. only in case of errors that occured since the last scheduled report run. If a scheduled report does not retrieve any data, Blitz Report does not send an empty output file. In case you also want to send empty output files for scheduled reports, set the profile option ‘Blitz Report Suppress Empty File Delivery’ to ‘No’.

FND Concurrent Requests incremental alert mode

If you want to give your outbound interface report an additional level of protection and allow modifications by users with ‘System’ access profile only, set it’s type to ‘Protected’.

3.4 Data Warehouse


Blitz Report’s output files can also be used as a simple data warehouse, e.g. by scheduling reports and writing the output files in XLSX or CSV format to a server directory.

The location of these files is controlled by profile option ‘Blitz Report Additional Output Directory’, which can be set for the application or the database server and by the runtime option ‘Blitz Report Additional Output Directory’. The runtime option inherits its value from the profile option. When the value for the runtime option is set it takes precedence over the profile option value.

Profile option ‘Blitz Report Additional Output Filename’ defines the template of the output filename, and allows, for example, to overwrite an existing XLSX file with refreshed data by a scheduled Blitz Report concurrent request.

Setting this profile to a template containing date format string <report_name>_<DD-Mon-YYYY> and scheduling a report every 30 minutes, for example, would write one separate file per day which get’s refreshed with current data every 30 minutes.

Please refer to the runtime option ‘Blitz Report Additional Output Filename’ description to understand rules for building file name templates using tokens.

This generates a time series of data files, which can then be used as data warehouse for analysis by other tools such as Microsoft Power BI, Qlik Sense, Tableau or OBIEE.

3.5 MS Excel and CSV files


Default delimiter

When opening a comma-separated CSV file with Microsoft Excel, the data gets parsed and arranged into different columns automatically. For this parser to work, the delimiter used in the output file needs to match the delimiter defined in the client computer’s regional settings.

In some countries, the default regional settings use a semicolon instead of a comma separator. To open output files correctly for these cases, there are three options:

Option1: Set the output format for Blitz Reports to TSV, tab-separated-values. Note: As Microsoft Excel does not associate itself with TSV file extensions upon installation, this requires an additional setup step on client computers to associate these file types to Excel.

Option2: Change the client computer’s regional settings from a semicolon to a comma.

Option3: Set profile option ‘Blitz Report CSV Delimiter’ according to the regional settings.

Column type detection – retain leading zeroes

When opening CSV files, Microsoft Excel automatically detects column datatypes and formats the data accordingly.

If you have alphanumeric data with numeric content, such as serial numbers for example, Excel’s automated type detection would import the data as number format and lose any leading zeroes.

This problem can be avoided by prefixing column data with an equal sign and enclosing it in double quotes to retain the alphanumeric format:

'="'||cii.serial_number||'"' serial_number
Note: If you apply this workaround to your report SQLs and run them in XLSX output format instead of CSV, Blitz Report will automatically remove the ‘=”’ and ‘”’ characters from the data to display correctly in Excel.

Macro to filter and freeze top row

One of the most common repetitive tasks when dealing with Excel spreadsheets is adding a filter and freezing the top row. For increased productivity, we recommend creating a Visual Basic macro for this task using Excel’s personal macro workbook (see Microsoft’s documentation on how to create a VB macro in PERSONAL.XLSB).

Example Visual Basic code:

Sub filter_and_freeze()
'
' macro to apply a filter and freeze the first line
'
' assign shortcut: ctrl+j
'
Selection.AutoFilter
With ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
 
ActiveWindow.FreezePanes = True
Rows("1:1").Select
Selection.Font.Bold = True
Range("A1").Select
 
Dim myColumn As Integer
Dim iColumn As Integer
Cells.Select
 
With Selection
.WrapText = False
End With
 
Range("A1").Select
myColumn = Cells.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(1, 1), Cells(1, myColumn)).EntireColumn.AutoFit
 
For iColumn = 1 To myColumn
If Columns(iColumn).ColumnWidth > 40 Then _
Columns(iColumn).ColumnWidth = 40
Next iColumn
End Sub

3.6 Disable protected view


By default, MS Excel is configured to open downloaded files in protected view mode. To open files for editing without additional mouse click, we recommend disabling the protected view. Navigate to File > Options > Trust Center > Trust Center Settings > Protected View > uncheck: Enable Protected View for files originating from the Internet.

3.7 Blitz Report production deployment

High level steps for your Blitz Report migration from test to production are presented below

  • Upgrade the test environment to the latest Blitz Report code by downloading the installation .zip file and running install.sh.
  • Export all report metadata from the test environment Setup > Tools > Export > All Content
Blitz Report Export all content
  • Optionally, if there are many Blitz Report profile option values set up in the test environment and you don’t want to set them up manually in production, export the Blitz Report related profile option values, which creates a SQL script, which can be run on production to load them automatically
Blitz Report Export profile options
  • Install Blitz Report in production using instructions from the installation guide.
  • In the production Blitz Report, navigate to Setup > Tools > Import > XML Upload and select the XML file exported previously.
  • Optionally, run the SQL script generated previously to load the Blitz Report profile option values

3.8 MS Excel trust center settings

You may face the following warning when using Excel templates with macros after running a report and opening the output:

Excel macro warning

To fix it go to File > Options > Trust Center > Trust Center Settings > Trusted Locations > Add new location

Provide the path where the Blitz Report output files are downloaded before opening.

Excel add trusted location

4. Profile options


The profile option ‘Blitz Report Access’ should be set to ‘Developer’ for users with the SQL skills required for creating Blitz Reports.

The following optional profile options can be set to configure Blitz Report functionality according to your business and user requirements:

Profile option Description Default if not set
Blitz Report Access Controls access to Blitz Report.
User: run assigned reports only
User Admin: access and run all reports, create or modify assignments, view only access to report SQL and setup
Developer: full access, except uploads, system and protected reports
System: full access, including uploads, system and protected reports (see Security and user profiles for more information)
No access to run reports
Blitz Report Additional Output Directory APPS Server Directory path on the applications server to write output files to (in addition to witing them to $APPLCSF/out)
Blitz Report Additional Output Directory DB Server Directory name on the database server to write output files to (in addition to witing them to $APPLCSF/out)
Blitz Report Additional Output Filename Filename template for output files written to a directory on the DB or apps server, if profile ‘Blitz Report Additional Output Directory %’ is set. Use tokens described in the following section to build a file name template
Blitz Report CSV File Delimiter Delimiting character in Blitz Report CSV output files ,
Blitz Report Debug When set to ‘Yes’ Blitz Report opens the logfile automatically upon report completion, instead of the output file.
Blitz Report Default Email Address Default email address for Blitz Reports
Blitz Report Disable Column Translations Set to ‘Yes’ to disable automated column header translations. Per default, SQL column headers get translated automatically to strings defined in Tools > Column Header Translations. No
Blitz Report Disable Copied From Tracking Disables population of the Copied From field when copying reports. This can be useful for development where it might not be desired to keep automated track of the relationship between original and copied reports. No
Blitz Report Disable GL Flex Value Security This profile option allows disabling the GL flex value security for customers experiencing slow performance of GL Balance or GL Account Analysis reports, in case they do not use security rules. No
Blitz Report Disable Run Button after Submission After report submission, the run button is disabled to prevent accidental resubmission of the same report with the same parameters. Switching this profile to ‘No’ keeps the run button enabled all the time. Yes
Blitz Report Disable SQL Text Double Click Editor Window Disables the default behavior to open an editor window when double clicking on the report SQL text. This can be useful to highlight keywords in the SQL text through double click. No
Blitz Report Discoverer Default EUL Set’s the default Discoverer end user layer in case there is more than one, for execution of DIS analysis reports Most recently created EUL
Blitz Report Discoverer Folder Import Include Columns ‘Active’ imports a SQL including columns used by the active Discoverer worksheets only, whereas ‘All’ includes all columns of the accessed folders, e.g. aia.* Active
Blitz Report Discoverer Import Literals as Binds When set to ‘Yes’, Blitz Report automatically replaces literals with binds during Discoverer import No
Blitz Report Discoverer Import LOV Access History Days Number of access history days for the Discoverer worksheet import LOV show 90 days of history
Blitz Report Discoverer Import Preserve Original SQL Set to ‘Yes’ to turn off Blitz Report’s additional structural code enhancements when importing and converting Discoverer worksheet SQLs. This will make the import more robust, however the converted SQLs will be less ‘pretty’. No
Blitz Report Discoverer Import Report Name Prefix Prefix for imported Discoverer reports
Blitz Report Email Attachment Filename Length Limit Truncates report attachment filenames to the specified limit for mail servers with limitations 1000 characters
Blitz Report Email Attachment Multibyte Filenames When set to ‘Yes’, email attachment filenames are sent including UTF-8 multibyte characters from the Blitz Report name. The applications operating system must also support multibyte filenames. Yes for Linux, No for other OSs e.g. Solaris, AIX
Blitz Report Email Attachment Size Limit (bytes) Maximum attachment size for Blitz Reports sent via email. If the output exceeds this limit, the email will be sent without attachment and show a corresponding message in the email. no limit
Blitz Report Email Subject Message Message name for Blitz Report outbound emails. Message names must start with XXEN_REPORT_EMAIL%. XXEN_REPORT_EMAIL_SUBJECT
Blitz Report File Name Convention Defines the format for Blitz Report output filenames to include either report name, template name or both. Report Name – Template Name
Blitz Report Filter Reports by Responsibility Yes: the LOV of Blitz Reports is filtered to records assigned to a user’s current login responsibility only.
No: all reports available to a user (also from responsibilities different to the current login) are displayed.
‘Yes’ for users with standard user access, ‘No’ for developers
Blitz Report From Email Address Email address that Blitz Report emails are sent from, as some email servers allow sending from certain email accounts only.

If you want to specify a name along with the email address put the name first and provide the email address inside the angle brackets. E.g.

Enginatics GmbH <[email protected]>

Email address from user or, if it is not set, from employee record
Blitz Report Import Type Default type when opening the import window BI Publisher
Blitz Report Include SQL in Log When set to ‘No’, the report SQL is not included to the Blitz Report log file. Yes
Blitz Report Include SQL in XLSX Output When set to ‘No’, the report SQL is not included on the parameter tab of Blitz Report XLSX output files. Yes
Blitz Report License Expiration Warning Days Number of days that a warning is shown before expiration of Blitz Report licenses. The warning is shown only for non trial/free licenses. 14
Blitz Report Load Default Assignments during Upgrades When set to ‘Yes’ Blitz Report default assignments are loaded during upgrades. No
Blitz Report LOV History Days Number of days within Blitz Report identifies a users most recently run reports to show them on top of the LOV. A setting of zero switches this ‘favourites on top’ sorting off and sorts all reports alphabetically instead. 365
Blitz Report Log Retention Days Error Number of days that log data for errored or cancelled report runs is kept. When left blank, no automated purge of log data is done. no purge of log data
Blitz Report Log Retention Days Standard Number of days that log data for successful standard report runs is kept. When left blank, no automated purge of log data is done. no purge of log data
Blitz Report Log Retention Days System Number of days that Blitz Report log data for successful system type report runs is kept. When left blank, no automated purge of log data is done. no purge of log data
Blitz Report Maintenance Mode Set to ‘Yes’ by the install.sh script to ensure that Blitz Report is not used during the upgrade. Profile value is removed after the upgrade is completed.
Blitz Report Output Button Refresh Interval Blitz Report output button refresh interval in seconds. If set to zero, no automatic refresh is done. 1
Blitz Report Output Format Blitz Report output file format (CSV, TSV or XLSX) XLSX
Blitz Report Row Limit Default limit for maximum number of rows returned by Blitz Report if not set up on individual report level. no limit (overflow to additional sheets at every 1,048,575 rows for XLSX output format)
Blitz Report Show All Templates Set ‘No’ to show only templates for the currently selected report on the run window. Set ‘Yes’ to show all templates for all reports. No
Blitz Report Show Hidden Parameters Allows Developers to show hidden parameters for debugging purposes, or to store default hidden parameter values against templates. No
Blitz Report Show LOV When Opening Form When set to ‘Yes’, the LOV of available reports opens automatically when opening Blitz Report and there was no report executed within the past profile option ‘Blitz Report LOV History Days’ number of days.
Yes: automatically show LOV when opening Blitz Report
No: don’t show LOV when opening Blitz Report
show LOV when opening the run window, but not when opening the setup window
Blitz Report Show Tooltip Help Enable or disable tooltip help display Yes
Blitz Report Show User Description When set to ‘No’, additional FND user description such as person first and last name is not shown in Blitz Report’s record history columns and function xxen_util.user_name Yes
Blitz Report Start Tab Allows developers to directly open the specified start tab on the Blitz Report setup window when opening the form. SQL
Blitz Report Suppress Empty File Delivery For scheduled Blitz Reports, file delivery through Oracle standard’s delivery options is suppressed if the report contains zero rows. If set to ‘No’, also empty files are send for scheduled Blitz Reports Yes
Blitz Report Target Database Allows running blitz reports on a standby database. Specify a TNS descriptor defined in $TNS_ADMIN/tnsnames.ora on the apps server.
Blitz Report Template Access Controls if users are allowed to create private or shared, or modify other owner’s templates
No Access: Users can view and use, but not create templates
Private only: Users can create private templates only
Private and shared: Users can create private and shared templates
Super User: Create private and shared, or modify other owner’s templates
Private and shared
Blitz Report Template Excel Upload Size Limit Size limit in megabytes in above which a warning message will be shown, if a user uploads a larger excel template file. 5 MB
Blitz Report Time Limit in minutes Default maximum execution time limit in minutes no limit
Blitz Report VPD Policy Rule Allows setting up access to sensitive data protected through Blitz Report VPD policies. No access
Blitz Report XLSX Cell Borders Include cell borders in Blitz Report XLSX output files No
Blitz Report XLSX Column Header Color Hexadecimal code e.g. EAEFF5 for the column header background color in Blitz Report excel spreadsheets. eaeff5
Blitz Report XLSX Column Width Mode Defines if the column width in Blitz Reports XLSX output files gets aligned to the column headers, the data or both. both
Blitz Report XLSX Column Width Scale Percentage Allows adjusting the automatically calculated column width, in case the cell content does not fit the width on certain client screen resolution. 100
Blitz Report XLSX Date Format Date format mask for Blitz Report XLSX output files. If not set, profile ‘ICX: Date format mask’ is used. In addition, profile ‘Blitz Report XLSX Use Long Date Format’ allows to show leading zeroes for day, month and the full year. value from profile ‘ICX: Date format mask’
Blitz Report XLSX Font Blitz Report XLSX output file font Calibri
Blitz Report XLSX Font Size Blitz Report XLSX output file font size 10
Blitz Report XLSX Max Column Width Maximum column width for Blitz Report XLSX output files 60
Blitz Report XLSX Min Column Width Minimum column width for Blitz Report XLSX output files 2
Blitz Report XLSX Number Format Numeric column format string for Blitz Report XLSX output files General
Blitz Report XLSX Orientation Page layout orientation for Blitz Report XLSX output files Landscape
Blitz Report XLSX Sheet Footer Footer in Blitz Report XLSX sheets
Blitz Report XLSX Sheet Header Header in Blitz Report XLSX sheets, displayed before the report name report name only
Blitz Report XLSX Sheet Row Limit Maximum number of rows per excel sheet. Exceeding data will be written to additional sheets. This might be required to be set smaller than the default 1.048.576 rows in case one sheet with many columns reaches the 4G size limit. 1048576
Blitz Report XLSX Use Long Date Format When set to ‘Yes’, dates in Blitz Report output XLSX files show the full year and leading zero for single digit days e.g. 05-Jan-2018 instead of 5-Jan-18 No
Blitz Upload Maximum LOV Size Maximum upload list of values size in MB 2 MB
Blitz Upload Maximum Request Payload Size Maximum payload size for data upload webservice requests in MB 0.4 MB
Blitz Upload Round to Decimal Places Number of decimal places used for rounding number values during data upload processing. 5
Blitz Upload Maximum Rows Maximum number of rows in a Blitz Upload excel sheet. Default is 100k to provide good excel navigation performance, and it can be increased as required. 100000

5. APIs and integration


5.1 Export


To make migration tasks easier Blitz Report offers the following Export APIs

5.2 Import


To make migration tasks easier Blitz Report offers the following Import APIs

5.3 Submitting Blitz Report from PLSQL


Blitz reports can be started from PLSQL as a background concurrent program, or through an API call returning the Excel output as a blob.

FND concurrent program API

Blitz reports can be submitted through the Oracle standard fnd_request.submit_request api. Arguments1-15 specify the report and template names, and other runtime options, such as the email address or output format. The user entered report parameters start from arguments16 onwards.

declare
l_request_id number;
begin
  xxen_report.apps_initialize('ENGINATICS','RECEIVABLES_VISION_OPERATIONS','AR'); --User Name, Responsibility Key, Resp. App. Short Code
  l_request_id:=fnd_request.submit_request(
  application=>'XXEN', --Application short code of the Blitz Report concurrent program
  program=>'XXEN_REPORT',
  description=>'AR Past Due Invoice', --Request Description
  argument1  =>replace('AR Past Due Invoice','"','"'), --Blitz Report Name
  argument2  =>null, --Run Id
  argument3  =>null, --Template Name
  argument4  =>'[email protected]', --Email
  argument5  =>null, --Output Format
  argument6  =>null, --Row Limit
  argument7  =>null, --Time Limit
  argument8  =>null, --Disable Column Translations
  argument9  =>null, --Exclude Column Headers
  argument10 =>null, --Custom Postprocess
  argument11 =>null, --Output file name
  argument12 =>null, --Additional out dir APPS server
  argument13 =>null, --Additional out dir DB server
  argument14 =>null, --Additional out file name
  argument15 =>null, --Organization Code
  argument16 =>'Customer', --Parameter1
  argument17 =>'04-MAY-2007' --Parameter2
  );
  if l_request_id=0 then
    dbms_output.put_line('Error: '||fnd_message.get);
  else
    dbms_output.put_line('Submitted Request Id: '||l_request_id);
    commit;
  end if;
end;

Blitz Report concurrent program API

You can also use the API xxen_api.report_submit_concurrent_, which allows referencing the report, parameter and template names by name or id instead of argument position, as shown in the following example.

declare
l_error_message varchar2(4000);
l_run_id pls_integer;
l_request_id pls_integer;
begin
  xxen_report.apps_initialize('ENGINATICS','RECEIVABLES_VISION_OPERATIONS','AR');  --User Name, Responsibility Key, Resp. App. Short Code
  l_error_message:=xxen_api.report_submit_concurrent_(p_report_name=>'AP Suppliers', p_run_id=>l_run_id, x_request_id=>l_request_id);
  xxen_api.set_parameter_value_(p_parameter_name=>'Operating Unit', p_value=>'Vision Operations', p_run_id=>l_run_id);
  xxen_api.set_runtime_option(p_runtime_option_name=>'TEMPLATE_NAME', p_value=>'Pivot template', p_run_id=>l_run_id);
  if l_request_id=0 then
    dbms_output.put_line('Error: '||l_error_message);
  else
    dbms_output.put_line('Submitted Request Id: '||l_request_id);
    commit;
  end if;
end;

You can specify the following runtime option names in procedure set_runtime_option:

TEMPLATE_NAME
EMAIL
OUTPUT_FORMAT
ROW_LIMIT
TIME_LIMIT
DISABLE_COLUMN_TRANSLATIONS
EXCLUDE_COLUMN_HEADERS
CUSTOM_POSTPROCESS
OUTPUT_FILENAME
ADDITIONAL_OUT_DIR_APPS
ADDITIONAL_OUT_DIR_DB
ADDITIONAL_OUT_FNAME
ORGANIZATION_ID

PLSQL API returning a BLOB

You can create a blitz report from a PLSQL API as shown in the following example. First create a new run_id then set all parameter and runtime option values and finally call the report creation API. Procedures create_run_id and set_parameter_value can be called either by id or by value.

declare
l_run_id number;
l_blob blob;
l_row_count pls_integer;
l_filename varchar2(1000);
l_return_status varchar2(1);
l_msg_data varchar2(4000);
begin
  xxen_report.apps_initialize('ENGINATICS','RECEIVABLES_VISION_OPERATIONS','AR'); --User Name, Responsibility Key, Resp. App. Short Code
  l_run_id:=xxen_api.create_run_id_(p_report_name=>'AP Suppliers');
  xxen_api.set_parameter_value_(p_parameter_name=>'Operating Unit', p_value=>'Vision Operations', p_run_id=>l_run_id);
  --xxen_api.set_runtime_option(p_runtime_option_name=>'TEMPLATE_NAME', p_value=>'Pivot template', p_run_id=>l_run_id); --hardcoded template
  xxen_api.set_runtime_option(p_runtime_option_name=>'TEMPLATE_NAME', p_value=>xxen_api.default_template_(p_report_name=>'AP Suppliers'), p_run_id=>l_run_id); --user specific template
  xxen_api.run_report(p_run_id=>l_run_id, x_row_count=>l_row_count, x_output_file=>l_blob, x_filename=>l_filename, x_return_status=>l_return_status, x_msg_data=>l_msg_data);
  dbms_output.put_line('run_id: '||l_run_id||', row_count: '||l_row_count||', output size: '||length(l_blob)||', filename: '||l_filename||', l_return_status: '||l_return_status||', l_msg_data: '||l_msg_data);
end;

5.4 Useful DB functions


There is a list of useful function from custom package XXEN_UTIL that can be used during report creation.

XXEN_UTIL.CLIENT_TIME (p_date in date)

This function allows converting date from server’s timezone to client local timezone.
It checks if there is difference in time zones between client and server. If any, it converts time from server timezone to client timezone.

  • Input parameter: Date in server timezone
  • Result: Date in client timezone

Server timezone derived from profile value ‘Server Timezone’:

Client timezone derived from profile value ‘Client Timezone’:

Example:

Assume we have:

  • Server Timezone set to GMT+1
  • Client Timezone set to GMT+2
  • Server’s current time is 2020.09.03 09:00:00
SQL statement Result
select 
to_char(xxen_util.client_time(to_date('2020.09.03 09:00:00', 'YYYY.MM.DD HH24:Mi:Ss')), 'YYYY.MM.DD HH24:Mi:Ss')
from dual
2020.09.03 10:00:00

XXEN_UTIL.SERVER_TIME (p_date in date)

This function works in the similar way as one described above. It checks if server timezone differs from client timezone and converts date if needed.

Example:

Assume we have:

  • Server Timezone set to GMT+1
  • Client Timezone set to GMT+2
  • Client current time is 2020.09.03 09:00:00
SQL statement Result
select 
to_char(xxen_util.server_time(to_date('2020.09.03 09:00:00', 'YYYY.MM.DD HH24:Mi:Ss')), 'YYYY.MM.DD HH24:Mi:Ss')
from dual
2020.09.03 08:00:00

XXEN_UTIL.TIME (p_seconds in number)

This function converts number of seconds to the time in format “67d 14h 45.3s”.

So, it shows the number of days, hours, minutes and seconds. It does not show number of moths or years.

  • Input parameter: number of seconds
  • Result: string of characters showing how many days, hours, minutes and seconds there are in givens number of seconds

Examples:

SQL statement Result
select xxen_util.time(3600) from dual
1h 0m 0s
select xxen_util.time(361012) from dual
4d 4h 16m 52s
select xxen_util.time(36101200) from dual;
417d 20h 6m 40s

XXEN_UTIL.USER_NAME (p_user_name in varchar2)

This function converts user name to the full description of the user.
Example: Sysadmin would be converted to System Administator.

  • Input parameter: User Name
  • Result: User Description

Example:

SQL statement Result
select xxen_util.user_name('SYSADMIN') from dual
SYSADMIN (System Administrator)

XXEN_UTIL.USER_NAME (p_user_id in pls_integer)

Similar to the function above returns user name and user description based on user id. Note: User description can be deactivated by profile option ‘Blitz Report Show User Description’.

  • Input parameter: user id
  • Result: user name and user description

Example:

SQL statement Result
select xxen_util.user_name(0) from dual
SYSADMIN (System Administrator)

XXEN_UTIL.USER_ID (p_user_name in varchar2)

Function returns user id based on user name.

  • Input parameter: user name
  • Result: user id

Example:

SQL statement Result
select xxen_util.user_id('SYSADMIN') from dual
0

XXEN_UTIL.DFF_COLUMNS

Returns a SQL text for the descriptive flexfield columns of a specified table, to be used for dynamic &lexical replacement.

select
xxen_util.dff_columns(
p_table_name=>'mtl_system_items_b',
p_table_alias=>'msiv', --Table alias if different than the table name standard, for example msiv instead of msib generates: msiv.attribute15 "Invoice UOM"
p_descr_flex_context_code=>null, --Restrict to a specific flexfield context. Default is to show all dffs from all contexts, starting with 'Global Data Elements' 
p_column_name_prefix=>null, --Prefix for dff column name, for example 'Item: ' creates a text such as: msiv.attribute15 "Item: Invoice UOM"
p_prefix=>null --Prefix for column name to replace table attribute columns with this text, which can be used in an outer query, for example 'x.' generates: x."Invoice UOM" instead of msiv.attribute15 "Invoice UOM"
) dff_column_text
from dual

6. Glossary

Term Meaning
LOV List of Values
Anchor Placeholder

Find out more