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 Concepts

This chapter explains the building blocks of Blitz Report before the following chapters describe them in detail. Reading it first makes the rest of the guide much easier to follow.

1.1 How a report executes

A Blitz Report is a SQL query plus a set of parameters. At runtime, the entered parameter values are combined with the SQL: bind parameters are bound directly, optional filter conditions are injected at anchor positions in the WHERE clause, and lexical parameters replace placeholders with SQL fragments. The resulting query runs as a background concurrent request and produces the output file, formatted by the selected template.

Blitz Report runtime flow

1.2 Parameters, lists of values and anchors

Parameters carry a type (Char, Number, Date or LOV), an optional list of values, a default value and dependencies on other parameters. The anchor decides how a parameter reaches the SQL: a bind anchor (:parameter) binds the value where the bind appears, a WHERE anchor (1=1) injects the parameter’s SQL condition only when a value is entered, and a lexical anchor (&name) replaces a placeholder with a SQL fragment. Lists of values are shared components that can be reused by many reports.

1.3 Templates

Templates define how the output looks without changing the SQL: which columns are displayed in which order, formatting, pivot tables, and per-template parameter defaults and exclusions. Every report can have several templates, and templates can be shared at site, responsibility or user level. Templates can also pre-fill and fix column values for uploads, freeze panes, lock parameter default values, and be restricted to specific users or responsibilities.

1.4 Uploads

A Blitz Upload is a report of type Upload: its SQL defines the columns of the Excel template and downloads existing records for updating. Validate and Save in the workbook performs a basic validation only, checking that required columns are populated and running any additional Excel validations defined for the upload. Uploading the file then starts the upload concurrent program, which processes each row through the upload API — a PL/SQL procedure writing the data through standard Oracle APIs — or through interface tables, and reports each row’s outcome in the result file.

Blitz Upload flow

1.5 Assignments and categories

Assignments control who can see and run a report: they grant it at site, application, request group, responsibility, user, form or function level, with include and exclude rules. Categories group reports into the folders shown in the run screen’s category list. A report without an assignment is only visible to users with development access.

1.6 Security

Four access levels (User, Administrator, Developer, System) control what a user may do in Blitz Report, and the data a report returns is restricted by the user’s responsibility context, exactly as in Oracle EBS itself. The Security chapter covers access levels, assignments, upload security, data security and licensing in one place.

Blitz Report security model

1.7 Multi-language support

Report names, descriptions, parameter names and column headings are translatable and follow the user’s EBS session language, so one report definition serves all installed languages.

1.8 Architecture

Blitz Report consists of a database tier (the report engine and repository), the EBS Forms and web user interfaces, and webservice endpoints that serve the Excel add-ins. The architecture diagram in the Technical architecture chapter shows how the pieces connect.

2 Tutorial: your first Blitz Report

This tutorial creates a small supplier list report from scratch. It takes about fifteen minutes and touches every concept a report developer needs: SQL, a parameter with an anchor, an assignment and a first run. The following chapters describe each step’s options in full detail, and there is also a training video on creating reports.

1. Open the Blitz Report setup form (development access required) and create a new report named ‘My Supplier List’ in a category of your choice.

Opening the Blitz Report setup form from the run screen

2. Enter the report SQL. The literal 1=1 is the anchor where optional parameter filters will be injected:

select
aps.vendor_name supplier,
aps.segment1 supplier_number,
aps.creation_date
from
ap_suppliers aps
where
1=1
Tutorial report My Supplier List with its SQL

3. Add a parameter named ‘Supplier Name like’ with anchor 1=1 and the SQL text below. When the user enters a value, the condition is injected at the anchor; when the parameter is left empty, no filter is applied:

aps.vendor_name like :supplier_name
Supplier Name like parameter with the 1=1 anchor

4. Assign the report so users can see it, for example to your responsibility. Without an assignment, the report is visible to developers only.

Assigning the tutorial report to a responsibility

5. Run it: open the Blitz Report run screen, select ‘My Supplier List’, enter a name pattern such as A% and click Run. The output opens in Excel.

Running My Supplier List with a name pattern

6. Optionally create a template to reorder columns or add a pivot, and save it as the default layout for the report.

The tutorial report output in Excel

3 Report development


3.1 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 TypeReport SQLParameter SQL textRun-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

3.2 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. There is a training video available on advanced parameters, dynamic SQL, LOVs and parameter dependencies.

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.

Blitz Report parameters for dynamic pivot table SQL generation in Oracle EBS

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
))

3.3 Report header


Blitz Report Setup form SQL tab showing the SQL query with version and metadata

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.

Disabled

Defines whether a report is hidden from end users. When the Disabled flag is set, the report is removed from the user report list. This may be useful during the development and testing phase, or to hide specific seeded reports during a phased rollout. 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.

Blitz Report version history window listing prior versions of a report's SQL

Type

The Type field determines a report’s purpose and who can run or modify it:

  • Standard (Type left blank) — regular reports, available to all users with the appropriate assignments.
  • Protected — same as Standard, but editable only by users with the ‘System’ access profile. Use this for reports that should not be modified by developers, such as critical outbound interfaces.
  • System (no output) — reports that provide system functionality without producing user output, such as the Supply Chain Hub item search screen. Only users with the ‘System’ access profile can run or modify them.
  • Upload — Blitz Upload definitions used to load or update data in Oracle EBS.
  • Drilldown — reports used as drilldown targets from the ‘GL Financial Statement and Drilldown (FSG)’ report. They do not appear in the main report list and are launched only via drilldown links from FSG.
  • FSG — the Financial Statement Generator report that combines Oracle GL balances with Excel formatting.

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 the BIP 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. Naming convention for the copy written to the server output directory
  12. Reqest type for defining concurrent managers specialization rules
  13. Standby database name to run report on

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 Setup header with the Custom DB Package field used to run post-report PL/SQL

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

PL/SQL package specification declaring a Custom DB Package procedure called from Blitz Report
PL/SQL package body implementing the Custom DB Package procedure invoked by Blitz Report

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

SQL grant statement exposing a Custom DB Package to the Oracle EBS APPS schema for Blitz Report

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

Creating the APPS synonym for a Blitz Report Custom DB Package in Oracle EBS
Blitz Report Setup form showing the Custom DB Package field populated with a PL/SQL procedure name

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 File Name

Provides the same functionality as the Output File Name runtime option to default the output file name format on report level.

Server Output Directory

Provides the same functionality as the Server Output Directory runtime option to default the server output directory on report level. Saves a copy of the report output file in the specified directory on the application server, which can be any network folder mounted there. 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.

Report level defaults are validated in the same way as user entered values. If the Blitz Report Server Output Directory Access profile option restricts a user to the approved output locations, a report defaulting a directory outside that list fails for that user with a corresponding error message. Users with ‘Developer’ or ‘System’ access are not restricted.

Server File Name

Provides the same functionality as the Server File Name runtime option to default the naming convention for the copy written to the server output directory. Tokens can be used to create a file name 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 SQL tab with data access controls such as Lock SQL and Disable Access to DB

‘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

3.4 Parameters


Blitz Report Setup form Parameters tab listing the report's parameters in Oracle EBS

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 forms a where-clause restriction including 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 conditional insertion of different SQL text for the same parameter, depending on the parameter value entered by the user, using matching values. If you define a matching value, Blitz Report inserts the corresponding SQL text only if the user enters a parameter value that matches the specified 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 may select an optional ‘id’ column and must include the two columns ‘value’ and ‘description’. If ‘id’ is included, it is used to bind the parameter restriction for report execution, otherwise ‘value’ is used if there is not ‘id’ column selected. 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. Compared with the two Blitz Report specific types, LOV and LOV custom, they have the limitation that you cannot directly edit the LOV query from the Blitz Report form, as the value set would need to be maintained from the Oracle standard form.

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 include an optional ‘id’ column. 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

Locked

Parameter default values stored against a template can be marked as locked. This is mainly used for uploads, for example to fix a template’s Upload Mode so that it can only be used to update existing records. The parameter is then displayed greyed out on the run window and its value is enforced when the report is submitted, including submissions from the Excel add-in and through the API, so that the value cannot be bypassed. A locked value also overrides the user’s own saved parameter defaults.

Note: Locked values apply to business users only. Users with Blitz Report Access level ‘Developer’ or ‘System’ are not restricted by them.
Template Parameters tab with a Locked default value

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.

Here is an example of a logical expression forcing the user to enter a supplier or invoice date range restriction up to two years for specific operating units and responsibilities only:

:Supplier_Number is not null or
:Supplier is not null or
:invoice_date_to-:invoice_date_from<=530 or
(
fnd_global.resp_name not in ('Receivables, Vision Germany','Receivables Vision France') and
fnd_global.org_name<>'Vision Operations'
)

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. It is is also possible to use functions such as fnd_global.org_name, for example.

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.

Blitz Report Advanced Required Parameters restriction enforcing at-least-one parameter combinations

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 parameter LOV filtered by a parent parameter value
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
Blitz Report dynamic parameter SQL text example with lexical anchors for dynamic columns
Dynamic parameter SQL text example
Dynamic parameter SQL text example

3.5 Assignments


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
  • Function: make an upload available from the Oracle form function that allows updating the same data manually (used for uploads only)

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.

Optionally, an assignment at Application, Request Group, Responsibility, Form or Function level can be limited to group of users through the Assigned Users field.

When one or more users are entered, the report is granted only to those users who also match the assignment level, i.e. the two conditions are combined with AND rather than OR. This is useful, for example, to make an upload available to a specific group of users and only within the correct responsibility or operating unit context. Leaving the Users field empty keeps the assignment available to everyone matching the level, which is the default behavior. Note that this is different from the User level above, which includes or excludes a user across the entire site; the assigned users list instead narrows a single higher-level assignment.

Please note that assignments control report access only for normal users. 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.

For developers, Blitz Report shows by default all reports, regardless of the current login responsibility. Setting the Blitz Report Filter Reports by Responsibility profile option to ‘Yes’ allows showing only reports from the current login responsibility on the Run 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. During upgrades, you can choose which assignment levels are (re)loaded using the corresponding checkboxes on the upgrade screen, each stored in a profile option: Application, Request Group, Form and Function. Application, Request Group and Form are enabled by default, while Function (used for uploads) is optional and disabled by default. You can run report Blitz Report Assignments for a list of all assignments.

If you want to control the seeded assignments in detail, you can disable individual ones via Tools > Assignments. Manually disabled or modified default assignments are preserved during upgrades and are not changed by the automatic load.

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

Assignments can be loaded from Excel with the Blitz Report Assignment Upload.

3.6 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.

Blitz Report Setup form Setup tab showing report options such as layout and category

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

3.7 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.

Oracle EBS lookup values providing German translations for Blitz Report labels and categories
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’.

4 Upload development


Blitz Upload is available with Blitz Report which is fully integrated with Oracle E-Business Suite. It enables your IT team to easily create and edit Uploads where they can choose to use an API or directly insert records into an Interface table. Blitz Upload runs as a concurrent process and upon completion generates output file using Blitz Report. The output file automatically downloads and open in Excel.

With Blitz Upload, we created the most efficient and easy to use data upload solution for Oracle EBS. It leverages the reporting capabilities of Blitz Report to efficiently produce outputs while giving you a meaningful interpretation of the upload result.


A Blitz Upload consists of an SQL query defining the column structure of the Excel file for data entry, and three additional tabs that define Excel column validations, API processing and success and error reporting.

To create new Uploads, the Blitz Report Access profile option must be set to ‘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 upload are:

  1. Enter a report name, an optional description and set the type as Upload.
  2. Enter the main extraction SQL. This query is used to export existing data to be updated. For create only scenarios the SQL defines the column names and types for data entry in Excel.
  3. Setup Excel column validations. This tab allows setting up column validations through LOVs, defining default values or specifying required and read-only columns.
  4. Define the Upload API and mapping from the Excel file columns to the API parameters.
  5. Enter Success and Error SQLs for upload result reporting.
  6. Optionally define a post procedure and review the mapping between SQL columns post procedure API parameters.
  7. Test the upload by clicking the ‘Run’ button.
  8. Set up the user access rights.
Note: There are seeded example uploads which can be copied and modified to create new uploads: Blitz Upload Example (API), Blitz Upload Example (API with no parameters) and Blitz Upload Example (Interface Table)
Overview of the Blitz Upload creation steps from SQL design to PL/SQL API and Excel template
Blitz Upload workflow diagram showing how Excel data flows into Oracle EBS via the upload API

4.1 Upload types

An upload writes data to the database in one of three ways, depending on how its Upload API is defined. A seeded example upload is installed for each type and can be copied as a starting point for new developments: Blitz Upload Example (API), Blitz Upload Example (API without parameters) and Blitz Upload Example (Interface Table).

4.1.1 API with parameters (row by row)

The upload calls a PL/SQL procedure once for every uploaded row. The Excel columns are mapped to the procedure’s parameters on the Upload Parameters tab, and values of columns whose list of values maps display values to internal ids are passed as the id. The procedure validates the row, writes it through the standard Oracle API, and returns the row’s status and message, which are shown in the result file. Most shipped uploads use this type, for example the AR Customer Upload, which writes customer data through the standard TCA APIs. The main benefit of this type is that the upload framework does the row handling for you, in particular the automatic translation of display values to ids before each call.

4.1.2 API without parameters

If the upload procedure has no parameters, it is called just once per upload run instead of once for every row. The procedure reads the uploaded rows itself from the upload’s data view and updates each row’s status and message back into that view. This type is preferable when you want to loop through the uploaded data in the API package yourself rather than have the framework call you row by row, in particular when rows cannot be processed independently of each other: the ONT Order Upload and the OTL Timecard Upload, for example, process all rows of an order or timecard together. Note that the framework’s automatic value to id translation does not apply here: in the ONT Order Upload’s case, the Oracle standard order API provides such a display value to id translation itself, which is why this type was chosen for it.

4.1.3 Interface table

For this type, the upload object is a table name instead of a PL/SQL procedure: Blitz Report inserts new rows and updates existing rows in that table directly, with the Excel columns mapped to the table’s columns. As no PL/SQL code is required, this is the quickest way to upload spreadsheet data into custom tables. It can also be used to populate Oracle open interface tables, with a post procedure submitting the standard import concurrent program afterwards. The GL Journal Upload, for example, populates the GL interface table (through its API procedure) and then submits the Journal Import concurrent program from its post procedure. An optional delete condition can additionally remove matching existing rows from the table before the uploaded data is inserted, for example to replace previously loaded data.

4.2 Header


Blitz Upload Setup form header with upload name, type and category fields in Oracle EBS
Note: As all the setup fields have been explained in Blitz Report Developer Guide, this section focuses on the fields most relevant to Blitz Upload.

Name
Name uniquely identifies uploads. Names should be short and descriptive. Good practice is to prefix names with the appropriate Oracle EBS module short code.
Description
An optional description of maximum 4000 characters may be set up to assist users in understanding and using the upload.
Type
Type should be ‘Upload’.

4.3 SQL requirements


For API based uploads, the SQL query to retrieve the existing records from database, should always contain the columns action_, status_, message_ and modified_columns_ in the first four positions and in the same fashion as below:

null action_,
null status_,
null message_,
null modified_columns_,
Blitz Upload Setup form SQL tab showing the main SELECT query that defines Excel columns

For Interface Table based uploads, the SQL query should always contain the columns action_, status, message_, modified_columns_ and row_id_ columns in the first four positions and in the same fashion as below:

null action_,
null status_,
null message_,
null modified_columns_,
"table alias".rowid row_id_,
Blitz Upload main SQL mapping Excel columns to an Oracle EBS interface table for data loading

Most uploads also have an Upload Mode download parameter using the seeded Blitz Upload Mode list of values. It controls whether existing records are downloaded into the template: in Create mode the template is empty for entering new records only, while in Create, Update mode the SQL also downloads the existing records for updating. This is implemented as a WHERE clause condition on the download SQL, which returns no rows unless the selected mode includes updating:

:p_upload_mode like '%'||xxen_upload.action_update

4.4 Upload data view

Blitz Report automatically generates an upload specific database view for every upload, shown in the Data View field on the SQL tab of the setup form. It is a view of the generic xxen_upload_data table, which holds the uploaded Excel data during upload processing, or for longer if the Blitz Upload Data Retention Days profile option is set. The view exposes the uploaded values in the upload’s column structure, together with the framework columns carrying each row’s action, status and message.

The data view is used in several places: API procedures without parameters loop through it to process the uploaded rows, the Error and Success SQLs select from it to build the result file, and during debugging it can be queried directly to inspect the uploaded data of a past run.

4.5 Upload columns


The Upload Columns tab lists all available SQL columns derived from the main report SQL and allows you to define additional validation functionality in Excel, which includes:

  • Data type validations.
  • List of Values validations through SQL queries.
  • Adding Value to Id queries to convert display to id values before passing them to upload API parameters.
  • Defaulting column values in the Excel. This includes dynamic defaulting, for example by using an SQL query, dependent on other column values.
  • Comments which are shown when hovering over the column name header in the Excel file.
  • Specifying required columns.
  • Defining read only columns which stops flagging records for update when these columns are updated.
  • Enable automatic hiding of columns which are to be used for internal processing of the upload.
  • Setting up columns for Group Validation, to reject all records with the same column value in case of validation failures.

Column Name

SQL column names are auto populated in the Column Name.

Type

Blitz Upload column Type field selecting text, number, date or LOV for an Excel column

Type is auto populated based on the data type of the SQL column. Additionally, it can be changed and is used to enforce the data type validation in the excel. This can also be used to define a list of values against the column.

List of values can be used in a similar way as LOVs in Blitz Report

Note: The LOV query can contain report parameter reference identified by “:$flex$.” or report column reference identified by “:$column$.” to establish dependencies, example:

select
msiv.description value,
msiv.description description
from
mtl_system_items_vl msiv,
financials_system_params_all fspa,
hr_all_organization_units_vl haouv
where
haouv.name=:$flex$.operating_unit and
fspa.org_id=haouv.organization_id and
msiv.segment1=:$column$.item and
msiv.organization_id=fspa.inventory_organization_id

Value to Id Query

Blitz Upload Value to Id Query converting a display value entered in Excel to an Oracle ID at upload time

A Value to Id SQL query can be defined if the LOV query cannot be used for Value to Id conversion for performance reasons. The SQL query is required to have Id and Value columns.

Default Value

Blitz Upload column Default Value expression prefilling an Excel cell during template generation

An actual value can be provided, or an SQL query can be defined to derive the value which is defaulted against the column in the excel file.

Comments

Blitz Upload column Comments field adding a tooltip comment to the Excel template column header

An actual value can be provided, or an SQL query can be defined to derive the comments to displayed against the column in the excel header record.

Required

The required box can be checked for mandatory columns to ensure records are not marked for processing in the excel file till all the required columns are populated.

Read Only

The read only box can be checked for columns which cannot be updated to make them read-only in the excel file.

Hidden

In case there are internally used columns which need not be shown, the hidden box can be checked to make the columns hidden in the excel file.

Group Validation

Uploaded records are validated on the server using the SQL queries defined in their column LoVs. If a record fails validation, it may be necessary to prevent other related records in the same file from being processed further. In such cases, Group Validation can be enabled on the relevant columns to group records together for validation.

Read Only columns protect downloaded values from being changed in Excel, but they do not prevent entry on new rows, so a column can be immutable on update while still settable on record creation. Hidden columns are not visible in the Excel template and typically carry internal ids of the downloaded records, so the upload procedure can identify the exact record to update even when the visible business key changes.

4.5.1 Descriptive flexfield columns

Uploads can maintain descriptive flexfield attributes alongside the regular columns. The context column and each attribute column are defined as custom lists of values calling xxen_util.dff_attribute_lov, which returns the valid values of the segment for the row’s context, passing the sibling attribute values through :$column$ references so that dependent value sets resolve correctly. Attribute columns of value set segments validate against their value list, while segments without a value set allow free text entry. The download SQL shows the stored values in display form using xxen_util.display_flexfield_value, and the upload procedure translates the display values back to the stored ids by calling xxen_fnd_upload.validate_dff_attributes before passing them to the Oracle API. A dynamic column translation rule renames the generic attribute column headers to the configured segment prompts. The AR Customer Upload is a complete example of this pattern.

4.5.2 Attachment columns

Uploads can also create Oracle attachments on the records they process. The download SQL exposes the reserved attachment columns attachment_category_, attachment_title_, attachment_description_, attachment_type_, attachment_content_ and attachment_file_id_ for data entry, and the Success SQL calls xxen_upload.check_and_add_attachment, which creates the attachment on the target record if it does not exist yet, for example in the GL Journal Upload:

xxen_upload.check_and_add_attachment(
p_function_name=>'GLXJEENT',
p_function_type=>'O',
p_category_name=>xu.attachment_category_,
p_entity_name=>'GL_JE_HEADERS',
p_data_type=>xu.attachment_type_,
p_title=>xu.attachment_title_,
p_description=>xu.attachment_description_,
p_text=>xu.attachment_content_,
p_file_id=>xu.attachment_file_id_,
p_pk1_value=>gjb.je_batch_id,
p_pk2_value=>gjh.je_header_id
) attachment_content_

The function name and entity name determine on which Oracle screen the created attachment is visible. The user side of entering attachment data in the template is described in the User Guide chapter Attachments.

4.5.3 Template column defaults

The Upload Columns tab defines the behaviour of an upload for all of its users. Read-only columns, frozen panes and default values can in addition be defined per template, on the columns of a layout template. This allows the same upload to be offered in several controlled variants without changing the upload definition itself, for example an update-only variant.

  • Read-Only – protects the column in the workbook. Together with a single Default Value the column is fixed to that value; together with a semicolon separated list the column’s list of values is reduced to the allowed values.
  • Freeze – marks the column at which the panes of the generated Excel file are frozen.
  • Default Value – the value entered into the column of the generated workbook. A single value pre-fills the column. A semicolon separated list, for example ‘Create;Update’, defines a set of allowed values of which the first one is used as the default. A value starting with ‘select’ is executed as a SQL statement to derive the default dynamically.
Note: SQL default values can only be entered by users with Blitz Report Access level ‘Developer’ or ‘System’. Business users can select from and edit fixed values, but cannot create or change a SQL default value.
Note: These properties are set on the columns of a template, in the Templates window. They are not the same as the Default Value and Read Only settings on the Upload Columns tab of the setup window, which belong to the upload itself and therefore apply to all of its templates.
Template columns with Read-Only, Freeze and Default Value

4.6 Upload API


Blitz Upload Setup form specifying the PL/SQL API procedure that processes each uploaded row

Type

Type determines if the upload will use an API or an Interface table.

Create Only

If the upload does not support updating existing records, then this checkbox needs to be ticked.

Name

Name will list down the procedures or interface tables available in the database based on the Type selected.

Note: If using an API then a custom wrapper procedure needs to be created with the below required parameters:

action_ in varchar2
status_ out varchar2
message_ out varchar2
PL/SQL example of a Blitz Upload API procedure processing uploaded row data into Oracle EBS
NameTypeData TypeHow to use
action_invarchar2Input values passed by the upload framework are: xxen_upload.action_create, xxen_upload.action_update
status_outvarchar2This is to be populated in the wrapper procedure based on the processing outcome, for error records populate: xxen_upload.status_error, for success records populate: xxen_upload.status_success
message_outvarchar2This is to be populated in the wrapper procedure based on the processing outcome, this will appear in the excel output generated after upload processing.

Refer this PL SQL package for usage example: XXEN_UPLOAD_EXAMPLE_API.zip

4.6.1 Upload parameters

Parameters are auto populated on selection of the API or the Interface table.

Blitz Upload Setup API Parameters tab mapping Excel columns to PL/SQL procedure parameters

Parameter Name

Parameter Names are auto populated on selection of the API, in case of Interface table the table column names are populated.

In/Out

In/Out is auto populated on selection of API, indicates if the API parameter is of type ‘in’, ’out’ or ‘in/out’.

Type

Type is auto populated with the data type of the API parameter or Interface table column.

Column Name

Report SQL columns are automatically mapped against the API parameters or the Interface table columns and populated in the Column Name on selection of the API or Interface table.

Note: The auto mapping needs to be reviewed and corrections made if required.

Id or Value

Id or Value to be passed to the API parameter based on the LOV query defined against the mapped SQL column. By default, it’s populated as Id in case the LOV query contains Id column.

4.6.2 Post procedure

Optionally define a post procedure in case a post process must be executed after the primary upload processing, example: submit standard import interface concurrent request after completion of data upload in the interface table.

Blitz Upload Setup post-procedure field calling a PL/SQL block after all rows are processed
PL/SQL example of a Blitz Upload post-procedure running cleanup and summary logic after upload

Choose between the available PL SQL procedures, and on selection it auto populates the parameters like the upload parameters.

4.6.3 Excel validation

Blitz Upload Excel Validation SQL field defining cell-level validation rules enforced in the template

Excel Validation can be used to execute validations for the records directly on the server from the excel when the file is saved. The call to the validation PL SQL function can be entered with the function parameters mapped to the SQL columns.

Note: The validation function should return a message only in case of validation failure otherwise it should return null.

4.7 Upload results

The Upload Results SQL need to be defined to be able to display the success and error records after upload processing.

Blitz Upload Success SQL field returning the result rows displayed after a successful upload

The Error and Success SQLs are automatically defaulted and contain placeholders for defining the join conditions. The default Error SQL usually works as is, whereas the Success SQL needs to be reviewed and amended with the correct join conditions by unchecking the Default checkbox: it selects the successfully processed records back from the Oracle tables, so it must join the uploaded rows to these tables by their business key columns.

Blitz Upload Data view listing uploaded rows with their status, messages and audit fields

Data View: This is an auto-generated database view which displays the data uploaded by the user and can be used in the Result SQLs to select the uploaded data. It has the same column structure as the report SQL and also shows the status and message returned by the API for the uploaded records.

Note: There are pre-built functions which should be used in the Result SQL’s text when working with ‘status_’ column.

  • Functions returning status constants: xxen_upload.status_new, xxen_upload.status_error, xxen_upload.status_success
  • Function returning status constant’s meaning: xxen_upload.status_meaning, example: xxen_upload.status_meaning(xxen_upload.status_success)

4.8 Debugging uploads

By default, the uploaded Excel data is only kept in the xxen_upload_data table while the upload is being processed. To debug an upload, set the Blitz Upload Data Retention Days profile option to a value such as 10 days, so the uploaded data of past runs is retained for inspection.

The upload and result report log files contain an initialization statement, which can be executed in a SQL tool to reproduce the run’s session context:

Init text: begin fnd_global.apps_initialize(1318,50553,101); mo_global.init('S'); xxen_upload.initialize_run(493,608); end;

After executing it, selecting from the upload’s data view returns the uploaded rows of that run, including each row’s status and message. The log file also shows the actual API call performed for each row, and with the Blitz Report Debug profile option set to Yes it includes the full generated processing code.

The Blitz Upload History report lists the upload runs performed on the system, and the Blitz Upload Data report shows the uploaded data of past runs with each row’s status and message.

5 Security

This chapter describes how access to Blitz Report and to the reported data is controlled: the assignments that decide which reports a user sees, the assignment options for uploads, the access levels that decide what a user can do, the data security that decides what data a report returns, and the licensing.

5.1 Report assignments

Assignments decide which reports a user can see and run. A report can be assigned at site, application, request group, responsibility, user, form or function level, with include and exclude rules. Request group assignments reach every responsibility using that request group, and application assignments reach every responsibility owned by the application, which makes them the most common levels for shipped content. Form and function assignments show a report when the user works in the corresponding Oracle form.

5.2 Upload security

Uploads can be assigned at the same levels as reports, for example to specific users only, or to specific users in certain responsibilities only. Because uploads modify data, the default upload assignments provided by Enginatics, which customers can opt to include during upgrades, are restricted to function level: each upload is assigned only to form functions that allow updating the same data manually, so a user who only has query access to an Oracle form does not gain the ability to change that form’s data through an upload.

Upload assigned at function level

Two further controls apply per template and are mainly used for uploads. The Restrict flag on a template’s sharing limits the shared user or responsibility to the restricted templates of that upload, and template parameter default values can be Locked so that they cannot be changed on the run window or overridden at submission, for example to fix an upload’s Upload Mode so that it can only be used to update existing records. Both are enforced for business users only: the access levels ‘Developer’ and ‘System’ are exempt, so a developer always sees all templates and can always change parameter values.

5.3 Template security


A template restriction is a control the report developer places on the template’s users, and it is deliberately separate from template ownership. An owner with ‘User’ or ‘User Admin’ access may change what the template contains, but never the restrictions placed on it: only the access levels ‘Developer’ and ‘System’ can set or remove one. Note that the Blitz Report Template Access profile option set to ‘Super User’ grants full access to other users’ templates, but it does not grant the right to change a restriction.

Five template properties are treated as restrictions:

PropertyWhereEffect
Restrict on a sharing entrySharing tabPins the shared user or responsibility to the restricted templates of that report or upload
The restricted sharing entry itselfSharing tabCannot be changed or removed, so the pinned set cannot be widened
Locked on a parameter defaultParameters tabMakes the template level default mandatory: read only on the run window and enforced when the report is submitted
Read-Only on a columnColumn list of an upload templateTurns the column’s Default Value into an allowed values restriction rather than a suggestion
Default Value of a read only columnColumn list of an upload templateA single value fixes the column, a semicolon separated list defines the set of values the user may choose from

Two further points follow from this. Clearing the template parameter defaults from the Tools menu never clears locked ones, and the menu entry is only offered while there is something a user is allowed to clear. And a template that carries any restriction can only be deleted by a developer, because deleting it would remove the restriction with it.

Restricted template sharing
Scenario 1: the developer keeps ownership

The developer builds the template, restricts the sharing to the intended users or responsibilities, and keeps ownership. The users are not the owner, so they can only run the template exactly as it was built: the columns the developer selected, with the values the developer permitted. Use this where the report or upload has to be identical for everyone, for example an upload that may only ever update one field of existing records.

Restricted template sharing
Scenario 2: the users maintain the template themselves

The developer builds the template, locks the parameter defaults and the read only column values, and then sets the Owner to the user or to their responsibility. The users can now add and remove columns and look after the template themselves, while the locked parameter defaults, the restricted sharing entries, the read only flags and the allowed value lists stay developer territory: they are deactivated in the template window for anyone below ‘Developer’ access. Use this where a team needs to adapt the layout of an upload without being able to widen what it may write.

Locked template parameter default

5.4 Access levels and user profiles


Blitz Report provides the following levels of security:

  • The Blitz Report Access profile option 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’.
  • Templates can be restricted to specific users or responsibilities, and their parameter default values can be locked, so that a report or upload is only run with a controlled layout and with controlled parameter values. See Upload security.
  • 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. For reports that require additional protection (such as critical outbound interfaces), you can set the report type 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, the Enginatics default assignments for uploads are not loaded automatically: customers can opt to include them during upgrades, or assign the uploads themselves as required.

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

FunctionalityAccess Profile
UserUser AdminDeveloperSystem
Create modify or delete categoriesnoyesyesyes
Edit licensing informationnonoyesyes
Run reports (Standard or Protected)yes1yesyesyes
Run reports (System)nononoyes
Upload datayes1yes1yes1yes
Assign reports (Standard or Protected)noyesyesyes
Assign reports (System)nononono
Assign uploadsnononoyes
Create modify or delete reports (Standard)nonoyesyes
Create modify or delete reports (Protected or System)nononoyes
Create modify or delete uploadsnononoyes
Create modify or delete column translationsnonoyesyes
Create modify or delete templatesyes2yes2yesyes

1. Users can only see and run assigned reports and uploads.
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.

5.5 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.
AP Invoices Blitz Report using an Operating Unit parameter to enforce MOAC data access security
  • 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

Where a report should instead follow the standard Oracle EBS access restrictions automatically, the corresponding security predicates can be added to the report SQL directly. For operating unit secured data, the operating units accessible to the user’s responsibility are available in mo_glob_org_access_tmp:

aia.org_id in (select mgoat.organization_id from mo_glob_org_access_tmp mgoat)

With this condition in place, an optional Operating Unit parameter can narrow the output further, while leaving it blank shows all operating units the user’s responsibility has access to. For inventory organization secured data, the organizations accessible to the current responsibility are available in org_access_view:

mp.organization_id in
(select oav.organization_id from org_access_view oav
where oav.resp_application_id=fnd_global.resp_appl_id and oav.responsibility_id=fnd_global.resp_id)

5.6 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

The Virtual Private Database policies are applied and removed with the concurrent programs ‘Blitz Report Update VPD Policies’ and ‘Blitz Report Remove VPD Policies’, see the Administration reference.

5.7 License Key


Blitz Report Setup > Tools > License Key

Enter the company name and license key information.

Blitz Report License Key prompt in the Tools menu when no license is installed
Entering a new Blitz Report License Key into the Oracle EBS License Key dialog
Blitz Report License Key dialog confirming a successfully installed license

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).

5.8 User license assignment


The access to Blitz Report functionality and licenses is controlled by the Blitz Report Access profile option. With this profile option, licenses can be assigned automatically, or to individual responsibilities or users only. The different access roles and license assignment options are explained in this video.

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.
  • Keep the Blitz Report Access profile option setting to ‘User’ on site level, which is set by default during the first 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 to individual users only. In this case, remove the Blitz Report Access profile option value ‘User’ from site level, and set it up for individual users as required.

You can use the Blitz Report Access Upload to maintain the profile option values, for example if you have a larger number of users to maintain, or if you would like to delegate this task to a user, who does not have access to the System Administrator responsibility or System Profile Values form.

If you assign Blitz Report access to a limited number of users, you would typically want to hide the Blitz Report menu entry for other users, who do not have access to the tool. If you remove the Blitz Report Access profile option value from site level, the Blitz Report menu entry is automatically hidden from the Forms navigation menu and only visible for the Blitz Report users. This automated menu entry hiding is done through the CUSTOM.pll, and it can only be done in Forms, but not on the OAF pages. In case you would like to completely hide the Blitz Report menu entry also from the OAF pages, you can can run the Blitz Report Update Menu Entries concurrent program without a menu entry prompt. If you choose this setup, Blitz Report can only be run from the Excel icon in the top menu of the Oracle Forms navigation.

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 as running Blitz Report in separate custom responsibilities would have 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 drill down functionality from Oracle standard forms to Blitz Report.
  5. Uploads cannot be linked directly to Oracle standard forms.

6 Tools menu


6.1 LOVs


Defining a reusable LOV in the Blitz Report Tools menu for use across multiple reports
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.

Blitz Report LOV version history showing past SQL revisions of a List of Values definition

6.2 Assignments


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

Blitz Report assignment levels

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

6.3 Categories


Creating a new category in the Blitz Report setup form to organize reports by function or module

Categories can be defined to help users find reports, or to migrate specific reports between environments though the export and import options.

6.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 a new version of Blitz Report is installed.

Note: Assignments and category assignments are not copied.
Blitz Report Copy Report dialog duplicating an existing report definition with a new name

6.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 a new version of Blitz Report is installed.

Blitz Report copy LOV

6.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 Export menu options

The 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
  • Assignments

When choosing one of the Report export options, you can use checkboxes to decide which related object information you would like to include in the exported XML file:

  • LOVs: All list of value definitions used by parameters of the exported reports. Use this option if you have new or changed list of value definitions related to the parameters of the exported reports (parameter type LOV, not LOV Custom or LOV Oracle), and you would like to include these in the export.
  • Categories: All category definitions of the exported reports. Use this option if you have reports assigned to a category and would like to create that category automatically in the destination environment.
  • Assignments: Includes all report assignments in the export.
  • Templates: Includes all templates in the export, together with their column default values, read only and freeze settings, their locked parameter default values and their restrictions.
  • Columns: Includes optional multi language column translation and number format settings. This option should only be used if you really have translations or column specific number formats to migrate. If you have a large number of reports, this option could slow down the export significantly, as the database needs to parse all exported report SQLs to identify the included column names.

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 generate an XML file for migration of all reports starting with a specific text, for example FND%, choose ‘Report by Search pattern’ and enter that text in the form.

Blitz Report Export by 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.

Enginatics Blitz Report Library page listing downloadable report categories for Oracle EBS

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

Selecting a category in the Enginatics Blitz Report Library to browse available standard reports

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

Downloading a standard Blitz Report XML from the Enginatics Blitz Report Library for Oracle EBS

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', 'Templates', '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', 'Templates', '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'
    )
    ,'OUT_FILE_LOC',lower(xxen_report.space_to_underscore(c.report_name))||'.xml',nls_charset_id('AL32UTF8'));
  end loop;
end;
/

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.

6.7 Import


The Import menu option loads Blitz Report definitions from XML files, either generated via export or downloaded from the Blitz Report library, and imports reports developed in other technologies such as BI Publisher or Oracle Discoverer. It is described in detail in chapter 7 Importing and migrating reports.

6.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.

Uploading a Blitz Report SQL file larger than 32K characters via the Oracle EBS Generic File Manager

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

Cancel confirmation dialog when uploading a large Blitz Report SQL file in Oracle EBS

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.

Blitz Report SQL tab showing a SQL query bigger than 32K characters uploaded via the Tools menu

6.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.

Blitz Report Column Translations screen managing multi-language column header translations
Note: Column translations and number formats are global, which means that they apply to all reports in the system. If you would like to set a number format for a column in one specific report only, you would need to make sure that the column name is unique to that report.

6.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.

6.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

6.12 License Key


The License Key menu option opens the license key window to enter the company name and license key information and to review the number of active users. It is described in detail in section 5.7 License Key.

6.13 Mass Change


Blitz Report Setup > Tools > Mass Change

The mass change functionality allows to update SQL text or List of Values for all reports.

Blitz Report mass change
  • Use the check boxes to decide which data you would like to update.
  • For report SQL and LOV query updates, you can add an optional change comment.
  • Use the Preview button to see a list of changed objects, before applying the changes.

6.14 Sensitivity Labels

Organizations using Microsoft Purview Information Protection can require every Office document to carry a sensitivity label. Excel shows an ADD SENSITIVITY LABEL banner on any file which does not have one, and users have to pick a label before they can edit it, on every report output they open.

Blitz Report can write your own label into the Excel files it generates, so that the prompt does not appear.

Registering a label

Sensitivity labels are defined in your Microsoft 365 tenant and are not visible to Oracle EBS, so Blitz Report reads a label from a file which already carries one:

  • Open Tools > Sensitivity Labels
  • Press Scan label from file and upload any Excel file which was labelled in your tenant. It does not have to be a Blitz Report output, any labelled workbook will do.
  • The label is registered with its name, its identifier and your tenant identifier
  • Tick Enabled to make the label available

A file carries exactly one label, so scan one file for each label you want to offer.

Label names

Microsoft stores only the internal label name in the file, which is not necessarily the name your users see in the Excel label picker. Where the two differ, enter the name they know in the Description field and it is shown in place of the internal name.

Applying a label

Set the Blitz Report Sensitivity Label profile option to label all generated files. Like any profile option it can be set at site, application, responsibility or user level.

An individual report can override it with the Sensitivity Label field on its definition, for example to mark the output of a payroll report more strictly than everything else.

Automatic discovery

Labelled workbooks submitted through Blitz Upload register their label automatically as well. Automatically discovered labels are added disabled, so nothing is applied until you enable them in this window.

Limitations

  • Labels which apply encryption are not supported. Blitz Report writes the label information only, it cannot encrypt the generated file, and such a file cannot be scanned either.
  • Content marking, the header, footer or watermark text which some labels add, is not written. Only the label itself is stored in the file.
  • CSV and TSV output cannot carry a label, as these formats have nowhere to store it.

6.15 Upgrade


Blitz Report can be upgraded directly from the setup window via Tools > Upgrade. This menu is available to users with the Blitz Report Access profile option set to ‘System’.

Blitz Report upgrade options

Two options are available:

  • Upgrade to latest version – starts the ‘Blitz Report Upgrade’ concurrent program to automatically download and install the latest available Blitz Report version. Ensure the Email field contains a valid address before starting, as it is required to authorize the download from www.enginatics.com.
  • Upload specific version – allows uploading a previously downloaded installation file. Useful for environments without internet access or for upgrading to a specific previously tested version.

The checkboxes select which default report and upload assignments are loaded during the upgrade, at Application, Request Group, Form and Function (uploads) level. Each checkbox corresponds to a profile option, so the selection is remembered for the next upgrade. Function level is disabled by default, since uploads modify data, and manually disabled or modified assignments are preserved and not changed during upgrades.

Both options start the upgrade concurrent program, which automatically disconnects active Blitz Report sessions and sets the Blitz Report Maintenance Mode profile option to prevent access during the upgrade. Close the Blitz Report form immediately after submitting the upgrade, otherwise the disconnection will terminate your Forms session.

For detailed instructions including manual upgrade via terminal session and additional guidelines for multi-node environments, see the Upgrade section of the Installation Guide.

7 Importing and migrating reports

Blitz Report imports existing report definitions from a wide range of sources, so that reporting content built in other tools does not need to be redeveloped by hand. Report definitions themselves are moved between instances as XML files, and ready-made content can be installed from the Blitz Report library.

For the Discoverer migration, the end-to-end process is described in the blog posts Discoverer replacement with Blitz Report and Oracle Discoverer replacement – importing worksheets into Blitz Report.


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

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.

Blitz Report Import screen XML Upload button used to upload a report definition XML file

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.

Uploading a Blitz Report XML file through the Oracle EBS Generic File Manager dialog

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

Completed Blitz Report XML import showing the uploaded file ID and filename in Oracle EBS

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

Blitz Report XML upload dialog selecting an exported report XML for import into Oracle EBS

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.

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.

Blitz Report created from an imported Oracle BI Publisher report definition

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%.

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.

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.

Parameter definitions from a Discoverer Worksheet imported into Blitz Report

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 %) .

Oracle Discoverer analysis reports listed before being imported as Blitz 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 re-run 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.

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 re-run the import (e.g. in case of errors), you can use script mass_delete_discoverer_reports.sql to remove all imported Discoverer reports again.

7.6 Discoverer import prerequisites


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 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.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_INSTANCEDiscovererDiscoverer_asinst_1utilapplypreferences.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
Blitz Report Discoverer import parameter screen showing output format options
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. Open the Windows registry editor.

Blitz Report Discoverer workbook import parameters selecting the source workbook

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 its value is set to ‘1’.

Blitz Report Discoverer import parameters filtering which worksheets to import

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

Blitz Report Discoverer import parameters controlling layout and column mapping
Blitz Report Discoverer import advanced parameters for parameter conversion

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.

Oracle Discoverer administrator collecting statistics on End User Layer objects before Blitz Report import
Register eul_trigger$post_save_document function

The Discoverer Worksheet import option of 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;
Importing the Oracle Discoverer EUL_TRIGGER$POST_SAVE_DOCUMENT function for workbook integration

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

Updating the Oracle Discoverer EUL_TRIGGER function display name to lowercase for activation

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).

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;

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.

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.

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.

7.10 Oracle Reports (RDF)

The ‘Blitz Report RDF Import’ concurrent program converts Oracle Reports files: the report’s data model SQL and its concurrent program parameters, value sets and defaults become a Blitz Report with equivalent parameters.

Oracle Reports RDF import

7.11 SQL Server Reporting Services

The ‘Blitz Report SSRS Import’ concurrent program imports SQL Server Reporting Services report definitions.

SSRS import

7.12 Custom Reports Converter

The Blitz Report Custom Reports Converter gathers a customer’s custom concurrent programs with their execution sources (RDF, BI Publisher, host or SQL) and all custom database dependencies into one package, which is then used to migrate the custom reports to Blitz Reports.

Custom Reports Converter parameters on the run screen
Custom Reports Converter
Gather status after uploading the converter selection
The gathered conversion package with per-program folders

7.13 Oracle FSG and GL Wand

Oracle FSG report definitions and GL Wand / Spreadsheet Server workbooks are converted by the GL Financial Statement and Drilldown (FSG) converter, described in the FSG chapter of the User Guide.

8 APIs and integration


8.1 Export


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

8.2 Import


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

8.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-14 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 arguments15 onwards.

declare
l_request_id number;
begin
  xxen_report_ebs.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, --Server Output Directory
  argument13 =>null, --Server File Name
  argument14 =>null, --Organization Code
  argument15 =>'Vision Operations', --Parameter1
  argument16 =>'Customer', --Parameter2
  argument17 =>'04-MAY-2007' --Parameter3
  );
  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_request_id number;
begin
  xxen_report_ebs.apps_initialize(p_user_name=>'ENGINATICS', p_responsibility_key=>'RECEIVABLES_VISION_OPERATIONS', p_application_short_name=>'AR');
  xxen_api.set_parameter_value_(p_parameter_name=>'Operating Unit', p_value=>'Vision Operations', p_report_name=>'AP Suppliers');
  xxen_api.set_runtime_option(p_runtime_option_name=>'TEMPLATE_NAME', p_value=>'Pivot template');
  l_error_message:=xxen_api.report_submit_concurrent_(p_report_name=>'AP Suppliers', x_request_id=>l_request_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_FILE_NAME
SERVER_OUTPUT_DIRECTORY
SERVER_FILE_NAME
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_ebs.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;

Opening reports from custom forms

Using the above PLSQL API returning a BLOB, You can open a blitz report directly from a custom form, for example in a when-button-pressed trigger. Blitz Report uses this approach, for example, when pressing the preview button on the on the mass change window.

The file download is done through procedure xxen_utils.download_file, which is included in the XXEN.pll library, so you would need to attach this library to your custom form to use this functionality.

Here is a forms code example:

declare
l_run_id number:=xxen_api.create_run_id_('XXSP Bid Analysis');
begin
  if :rfq_header.rfq_number is not null then
    xxen_api.set_parameter_value_(p_parameter_name=>'RFQ Number',p_value=>:rfq_header.rfq_number,p_run_id=>l_run_id);
    if :rfq_line.rfq_line_number is not null then
      xxen_api.set_parameter_value_(p_parameter_name=>'RFQ Line Number',p_value=>:rfq_line.rfq_line_number,p_run_id=>l_run_id);
    end if;
    xxen_api.set_runtime_option(p_runtime_option_name=>'TEMPLATE_NAME',p_value=>xxen_api.default_template_(p_report_name=>'XXSP Bid Analysis'),p_run_id=>l_run_id);
    xxen_utils.download_file(xxen_api.report_file_id(l_run_id));
  end if;
end;

Submitting a Blitz Upload from PLSQL

An upload file can also be submitted programmatically, for example from a custom integration process: load the Excel file into Oracle’s fnd_lobs table and call xxen_upload.submit_upload_process, which starts the upload concurrent program and returns an error message, or null on success.

declare
l_request_id number;
l_error varchar2(4000);
begin
  l_error:=xxen_upload.submit_upload_process(
  p_report_name=>'GL Journal Upload',
  p_template_name=>null,
  p_file_id=>:file_id, --fnd_lobs file_id of the Excel file
  x_request_id=>l_request_id
  );
end;

For recurring file based integrations without coding, the upload concurrent program can also pick up files from a server directory on a schedule, see Scheduled uploads as an inbound interface in the User Guide.

8.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’:

Example Blitz Report SQL using the server time zone DB function to convert timestamps

Client timezone derived from profile value ‘Client Timezone’:

Example Blitz Report SQL using the client time zone DB function to display user-local times

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 statementResult
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 statementResult
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 statementResult
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 SYSADMIN (System Administrator).

  • Input parameter: User Name
  • Result: User Description
Example Blitz Report SQL converting Oracle EBS user names to full names via a DB function

Example:

SQL statementResult
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 statementResult
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 statementResult
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"
p_display_mode=>:dff_display --Display mode bound to the report's DFF Display parameter: null/'V'=value only, 'C'=value with description in one column, 'S'=value and description in separate columns. The default for the DFF Display parameter is read from the Blitz Report DFF Display profile option.
) dff_column_text
from dual

XXEN_UTIL.MEANING (p_lookup_code in varchar2, p_lookup_type in varchar2, p_application_id in varchar2)

Translates a lookup code into the user visible, translated meaning. Use this function instead of joining lookup tables such as fnd_lookup_values directly.

select xxen_util.meaning(ooha.freight_terms_code,'FREIGHT_TERMS',660) freight_terms from oe_order_headers_all ooha

XXEN_UTIL.LOOKUP_CODE (p_meaning in varchar2, p_lookup_type in varchar2, p_application_id in varchar2)

The reverse of xxen_util.meaning: translates a user visible meaning back into the lookup code, for example to compare a parameter value entered as a translated meaning against a code column.

select xxen_util.lookup_code('Yes','YES_NO',0) from dual --returns: Y

XXEN_UTIL.YES (p_lookup_code in varchar2)

Returns the translated meaning ‘Yes’ for lookup code Y and null for anything else. This is the standard way to show flag columns in reports: rows with the flag set show ‘Yes’ and all other rows stay blank instead of showing a wall of ‘No’ values.

select xxen_util.yes(aps.hold_all_payments_flag) hold_all_payments from ap_suppliers aps

XXEN_UTIL.CONTAINS (p_parameter_value in varchar2, p_column_value in varchar2)

Returns Y if the column value is one of the values of a multi-select parameter value list. It is used in dependent lists of values whose parent parameter has multiple values enabled, where a direct equality comparison would not work.

(:$flex$.Ledger is null or xxen_util.contains(:$flex$.Ledger,gl.ledger_id)='Y')

XXEN_UTIL.ROWGEN (p_rows in number)

Table function returning the numbers 1 to p_rows as rows, used as a row generator, for example to split a delimited string into one row per element.

select regexp_substr('A;B;C','[^;]+',1,rowgen.column_value) element from table(xxen_util.rowgen(regexp_count('A;B;C','[^;]+'))) rowgen

XXEN_UTIL.DISPLAY_FLEXFIELD_VALUE (p_application_id in number, p_descriptive_flexfield_name in varchar2, p_context_code in varchar2, p_column_name in varchar2, p_rowid in rowid, p_value in varchar2)

Returns the display value of a single descriptive flexfield segment, translating stored value set ids into their visible values. Always pass the stored column value in p_value so the function does not have to re-query the base table by rowid; the rowid is still needed to resolve dependent value sets.

select xxen_util.display_flexfield_value(140,'FA_ADDITIONS',fab.attribute_category_code,'ATTRIBUTE1',fab.rowid,fab.attribute1) from fa_additions_b fab

9 Administration reference

This chapter is the administrator’s reference for the components that Blitz Report installs into Oracle E-Business Suite. Setup instructions are in the Installation Guide; this chapter lists what exists and what it is for.

9.1 Concurrent programs

Blitz Report ships the following concurrent programs:

ProgramPurpose
Blitz ReportHost program that executes report runs and generates the output files.
Blitz UploadHost program that processes Blitz Upload files.
Blitz Report BI Publisher ImportImports BI Publisher reports as Blitz Reports.
Blitz Report RDF ImportImports Oracle Reports (.rdf) as Blitz Reports.
Blitz Report SSRS ImportImports SQL Server Reporting Services reports as Blitz Reports.
Blitz Report Discoverer ImportImports Oracle Discoverer worksheets and folders as Blitz Reports.
Blitz Report Custom Reports Converter GatherGathers custom report definitions and their database dependencies for migration.
Blitz Report Update Menu EntriesAdds the Blitz Report menu entries to the EBS menus, see the Installation Guide.
Blitz Report Create ManagerCreates a dedicated concurrent manager for Blitz Report requests, see the Installation Guide.
Blitz Report MonitorMonitors Blitz Report request processing, see the Installation Guide.
Blitz Report UpgradeRuns the automated upgrade to the latest Blitz Report version, see the Installation Guide.
Blitz Report Maintain Multilingual TablesMaintains the translation tables for multi-language installations.
Blitz Report Update GL IndexesMaintains optional GL indexes for reporting performance, see the Installation Guide.
Blitz Report Update VPD PoliciesApplies Virtual Private Database policies for sensitive data, see the Security chapter.
Blitz Report Remove VPD PoliciesRemoves the Virtual Private Database policies.
Blitz Report Compile fnd_webfileRecompiles the customized FND_WEBFILE packages, for example after Oracle patching.
Supply Chain Hub: Set WIP Requirement Operations Closed FlagSupply Chain Hub maintenance for discrete manufacturing, see the Installation Guide.
Supply Chain Hub: Update Item DFF Columns in Items GridAdds item descriptive flexfield columns to the Supply Chain Hub items grid, see the Installation Guide.

9.2 Profile options

All Blitz Report profile options are documented in the Profile options chapter.

10 Profile options


The Blitz Report Access profile option controls access to Blitz Report. The site-level default ‘User’ is set during installation and works for most users. Only set it to a higher level (e.g. ‘Developer’) for users who need to create or modify reports.

All other profile options are optional and work best left blank for most installations. Only set a value when you have a specific requirement — the defaults are designed to work well out of the box.

Profile optionDescriptionDefault if not set
Blitz Report AccessControls access to Blitz Report.

User: run assigned reports or uploads only

User Admin: access and run all reports, create or modify report 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 CSV File DelimiterDelimiting character in Blitz Report CSV output files,
Blitz Report DebugSet to ‘Yes’ to write additional debug information, for example in the upload processing logs.No
Blitz Report Default Email AddressDefault email address for Blitz Reports
Blitz Report DFF DisplaySets the default display mode for DFF (descriptive flexfield) attribute columns.
Value: value only
Value: Description: concatenated value and description in one column
Value, Description: value and description in separate columns
Leave blank to hide DFF columns. Can be overridden per report run via the DFF Display parameter.
No DFF display
Blitz Report Disable Column TranslationsSet 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 TrackingDisables 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 SecurityThis 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 SubmissionAfter 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 WindowDisables 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 EULSet’s the default Discoverer end user layer in case there is more than one, for execution of DIS analysis reportsMost 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 BindsWhen set to ‘Yes’, Blitz Report automatically replaces literals with binds during Discoverer importNo
Blitz Report Discoverer Import LOV Access History DaysNumber of access history days for the Discoverer worksheet import LOVshow 90 days of history
Blitz Report Discoverer Import Preserve Original SQLSet to ‘Yes’ to turn off Blitz Report’s additional enhancements to imported Discoverer SQLs to make the import more robust (but have the imported SQLs less ‘pretty’)No
Blitz Report Discoverer Import Report Name PrefixPrefix for imported Discoverer reports
Blitz Report Email Attachment Filename Length LimitTruncates report attachment filenames to the specified limit for mail servers with limitations1000 characters
Blitz Report Email Attachment Multibyte FilenamesWhen 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 Body MessageMessage name for Blitz Report outbound emails bodies. Message names must start with XXEN_REPORT_EMAIL_BODY%.XXEN_REPORT_EMAIL_BODY
Blitz Report Email Subject MessageMessage name for Blitz Report outbound emails subjects. Message names must start with XXEN_REPORT_EMAIL_SUBJECT%.XXEN_REPORT_EMAIL_SUBJECT
Blitz Report File Name ConventionDefines the format for Blitz Report output filenames to include either report name, template name or both. The default output filename is ‘Report Name – Template Name’Report Name – Template Name
Blitz Report Filter Reports by ResponsibilityYes: 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 shown.

‘Yes’ for users with standard user access, ‘No’ for developers
Blitz Report From Email AddressEmail 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 Include SQL in LogWhen set to ‘No’, the report SQL is not included to the Blitz Report log file.Yes
Blitz Report Include SQL in XLSX OutputWhen 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 DaysNumber 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 Application Assignments during UpgradesWhen set to ‘Yes’, the Blitz Report default assignments at Application level are loaded during upgrades.No
Blitz Report Load Default Form Assignments during UpgradesWhen set to ‘Yes’, the Blitz Report default assignments at Form level are loaded during upgrades.No
Blitz Report Load Default Function Assignments during UpgradesWhen set to ‘Yes’, the Blitz Report default Function-level assignments for uploads are loaded during upgrades. As uploads modify data, this is an opt-in setting that is disabled by default.No
Blitz Report Load Default Request Group Assignments during UpgradesWhen set to ‘Yes’, the Blitz Report default assignments at Request Group level are loaded during upgrades.No
Blitz Report Log Retention Days ErrorNumber 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 StandardNumber 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 SystemNumber of days that Blitz Report log data for successful system type report runs is kept. This profile option is designed to prevent excessive log data from Supply Chain Hub searches (tracked as system type runs), which can otherwise grow into the millions of rows over time.100
Blitz Report LOV History DaysNumber 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 Maintenance ModeSet 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.No
Blitz Report Output Button Refresh IntervalBlitz Report output button refresh interval in seconds. If set to zero, no automatic refresh is done.1
Blitz Report Output Filename Length LimitBlitz Report output file name full path length limit to avoid errors when running FNDCPPUR concurrent program.160
Blitz Report Output FormatBlitz Report output file format (CSV, TSV or XLSX)XLSX
Blitz Report Row LimitDefault 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 Sensitivity LabelMicrosoft Purview sensitivity label stamped into the Excel files Blitz Report generates, so that users are not prompted to label them before editing.

Labels are registered under Tools > Sensitivity Labels by scanning an Excel file which was already labelled in your tenant, and then enabling it. Only enabled labels are listed here.

A sensitivity label set on an individual report overrides this profile option.

No sensitivity label is applied
Blitz Report Server Output Directory AccessControls if users can write a copy of the report output to a directory on the application server, through the Server Output Directory and Server File Name runtime options.

Unrestricted: Both runtime options are shown and any directory can be entered

Restricted: Both runtime options are shown, but the directory has to be selected from the approved entries of the Blitz Report Output Locations lookup, which key users maintain themselves

The restriction is enforced on report submission as well, so it also applies to the Excel add-in, the API and re-runs of scheduled requests. Users with Blitz Report Access level ‘Developer’ or ‘System’ are not restricted.

Both runtime options are hidden. Writing report output to a server directory is only available for ‘Developer’ and ‘System’ access.
Blitz Report Show All TemplatesSet to ‘Yes’ to show all templates for all reports and not just the ones of the currently selected report.No
Blitz Report Show Hidden ParametersAllows Developers to show hidden parameters for debugging purposes, or to store default hidden parameter values against templates. Default values stored against a template can also be locked, so that they cannot be changed on the run window.No
Blitz Report Show Log Instead of OutputSet to ‘Yes’ to open the logfile automatically instead of the report output for debugging purposes.No
Blitz Report Show Tooltip HelpEnable or disable tooltip help displayYes
Blitz Report Show User DescriptionWhen 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_nameYes
Blitz Report Skip Column Translations during UpgradesWhen set to ‘Yes’, column translation imports are skipped during Blitz Report upgrades. Use this to keep English-only column headers and parameter names.No
Blitz Report SMTP HostBlitz Report SMTP Host to use for Blitz Report advanced email delivery
Blitz Report SMTP PortBlitz Report SMTP Port to use for Blitz Report advanced email delivery
Blitz Report SMTP use SSLBlitz Report SMTP use SSL for Blitz Report advanced email deliveryNo
Blitz Report SSO EnabledSet to ‘Yes’ to allow server connections from Blitz Upload and FSG excel files with SSO (Single Sign-on) enabled EBS instances.No
Blitz Report Start TabAllows developers to directly open the specified start tab on the Blitz Report setup window when opening the form.SQL
Blitz Report Suppress Empty File DeliveryFor scheduled Blitz Reports, delivery is suppressed if the report is empty. This applies both to Oracle standard’s delivery options and to the copy written through the Server Output Directory runtime option. If set to ‘No’, also empty files are delivered for scheduled Blitz ReportsYes
Blitz Report Target DatabaseAllows running blitz reports on a standby database. Specify a TNS descriptor defined in $TNS_ADMIN/tnsnames.ora on the apps server.
Blitz Report Template AccessControls 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, modify other owner’s templates, or change a template’s owner. The owner can be changed to a different user or to a responsibility, in which case all users of that responsibility can modify the template. Users with Blitz Report Access level Developer or System can change template owners as well. Template restrictions and locked parameter default values are not affected by this profile option: only the Blitz Report Access levels ‘Developer’ and ‘System’ are exempt from them.

Private and shared
Blitz Report Template Excel Upload Size LimitSize limit in megabytes above which a warning message is shown, if a user uploads a larger excel template file.5 MB
Blitz Report Time Limit in minutesDefault maximum execution time limit in minutesno limit
Blitz Report Trace LevelTrace level for the Blitz Report database session. If the value is null then the trace is off.
Blitz Report Use Advanced Email DeliverySet to “Yes” to use Blitz Report’s advanced email delivery instead of the standard Oracle EBS delivery option.No
Blitz Report Use Ledger SecurityAllows activating or deactivating ledger security. Many CAC inventory related reports, for example, only use inventory org security by default. Setting this profile to ‘Yes’ would also restrict by ledger access set.No
Blitz Report Use Operating Unit SecurityAllows activating or deactivating operating unit security. Many CAC inventory related reports, for example, only use inventory org security by default. Setting this profile to ‘Yes’ would also restrict by operating unit.No
Blitz Report VPD Policy RuleAllows setting up access to sensitive data protected through Blitz Report VPD policiesNo access
Blitz Report Webservice Connection TypeOnly set for non-ORDS installations. Set to ISG for Integrated SOA Gateway or MOD_PLSQL for Apache HTTP Server. Leave blank for ORDS (default).ORDS
Blitz Report Webservice Maximum Response SizeMaximum response size of a webservice in MB.20 MB
Blitz Report Webservice ORDS URLORDS base URL including context root and schema alias, ending with /. Example: https://ords-server:8080/ords/xxen/. Leave blank to auto-derive from the FND: APEX URL profile, falling back to the APPS_SERVLET_AGENT host on port 8443. Only set this profile for a reverse proxy or other non-standard setup.Auto-derived from the FND: APEX URL profile, or the APPS_SERVLET_AGENT host on port 8443
Blitz Report XLSX Column Header ColorHexadecimal code e.g. EAEFF5 for the column header background color in Blitz Report excel spreadsheets.eaeff5
Blitz Report XLSX Column Width ModeDefines 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 PercentageAllows adjusting the automatically calculated column width, in case the cell content does not fit the width on certain client screen resolution100
Blitz Report XLSX Date FormatDate 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 FontBlitz Report XLSX output file fontCalibri
Blitz Report XLSX Font SizeBlitz Report XLSX output file font size10
Blitz Report XLSX Max Column WidthMaximum column width for Blitz Report XLSX output files60
Blitz Report XLSX Min Column WidthMinimum column width for Blitz Report XLSX output files2
Blitz Report XLSX Number FormatNumeric column format string for Blitz Report XLSX output filesGeneral
Blitz Report XLSX OrientationPage layout orientation for Blitz Report XLSX output filesLandscape
Blitz Report XLSX Sheet FooterFooter in Blitz Report XLSX sheets
Blitz Report XLSX Sheet HeaderHeader in Blitz Report XLSX sheets, displayed before the report namereport name only
Blitz Report XLSX Sheet Row LimitMaximum 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 FormatWhen 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-18No
Blitz FSG Drilldown Exclude Reversal JournalsSet to ‘Yes’ to exclude reversed journal pairs (the original and its reversal) from the GL Journals (Drilldown) report opened via FSG balance drilldown. Leave blank to keep both sides visible.No
Blitz FSG Drilldown Report GBReport Name for GL Balance drilldown.GL Balances (Drilldown)
Blitz FSG Drilldown Report GB2Report Name for GL Balance drilldown (Date/Source/Category).GL Journals (Drilldown)
Blitz FSG Drilldown Report GFJReport Name for GL Full Journal drilldown.GL Journals (Drilldown)
Blitz FSG Drilldown Report GJReport Name for GL Journal drilldown.GL Journals (Drilldown)
Blitz FSG Drilldown Report GJAReport Name for GL Journal with Attachments drilldown.GL Journals (Drilldown)
Blitz FSG Drilldown Report SDReport Name for Subledger details drilldown.GL Account Analysis (Drilldown)
Blitz FSG Drilldown Template GBTemplate Name for GL Balance drilldown.Balance Drilldown
Blitz FSG Drilldown Template GB2Template Name for GL Balance drilldown (Date/Source/Category).Balance Drilldown
Blitz FSG Drilldown Template GFJTemplate Name for GL Full Journal drilldown.GL Full Journal Drilldown
Blitz FSG Drilldown Template GJTemplate Name for GL Journal drilldown.GL Journal Drilldown
Blitz FSG Drilldown Template GJATemplate Name for GL Journal with Attachments drilldown.GL Journal Drilldown (Attachment)
Blitz FSG Drilldown Template SDTemplate Name for Subledger details drilldown.FSG Subgledger Details
Blitz FSG Initial Batch SizeInitial number of FSG functions sent in the first webservice call. The framework adaptively grows the batch up to the Blitz FSG Maximum Batch Size, aiming for the Blitz FSG Target Batch Duration per call. Defaults to 1000 (mod_plsql, ISG) or 2000 (ORDS). Lower this as a workaround when the webservice POST body exceeds the application server’s request size limit; the preferred fix is to raise the server’s POST body limit (see Installation Guide troubleshooting).2000
Blitz FSG Maximum Batch SizeMaximum number of FSG functions that may be sent in a single webservice call. Caps the adaptive batch growth so each POST stays within the server’s request size and timeout limits. Defaults to 1200 (mod_plsql / 11i), 10000 (ISG) or 20000 (ORDS). Lower this as a workaround when the webservice POST body exceeds the application server’s request size limit; the preferred fix is to raise the server’s POST body limit (see Installation Guide troubleshooting).20000
Blitz FSG Target Batch DurationTarget duration, in seconds, per FSG webservice call. The framework measures throughput after each call and sizes the next batch to fit within this duration, up to the Blitz FSG Maximum Batch Size.120
Blitz Upload Custom Sheet ParsingWhen set to ‘Yes’, the upload uses Enginatic’s custom code instead of Oracle’s buildin xml functions to parse the uploaded Excel workbook.No
Blitz Upload Data Retention DaysNumber of days to keep data in table xxen_upload_data. This profile can be set to a non zero value for debugging purpose. Default is zero or immediate deletion during the upload process.0
Blitz Upload Maximum Request Payload SizeMaximum payload size for data upload webservice requests in MB0.4 MB
Blitz Upload Maximum RowsMaximum 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
Blitz Upload Round to Decimal PlacesNumber of decimal places used for rounding number values during data upload processing.5
Supply Chain Hub Aggregate Sales Order ReservationsAggregate Sales Order Reservations into the originating Sales Order Line.No
Supply Chain Hub Calculate PriceCalculate Selling Price from Price List. If yes, a call to the Pricing Engine will be made to determine the selling price of the item, displayed in the Item Details Tab.Yes
Supply Chain Hub Default ASCP InstanceDefault ASCP instance to use when connected to a decentralized ASCP environment.
Supply Chain Hub Default ASCP UserDefault User Name to use in a decentralized ASCP instance for Releasing Planned Orders.
Supply Chain Hub Demand Price ListPrice list for price display on the item details tab.
Supply Chain Hub Demand Recent Item LimitMaximum number of items kept in the recent item list.100
Supply Chain Hub Drilldown after ReleaseDrilldown to Work Order after Planned Order Release/Reschedule/Cancel Action. Only applies to MRP Release to Work Orders.Yes
Supply Chain Hub Enable ReleaseEnable Release of Planned Orders from Supply Chain Hub.Yes
Supply Chain Hub Enable Reschedule and Cancel ActionsEnable Reschedule and Cancel Actions. Only applicable to ASCP. Allows schedule in/schedule out/cancel recommendations to be actioned from Supply Chain Hub via the Release Button or right-click menu.Yes
Supply Chain Hub Exclude Complete Work OrdersExclude Complete Work Orders from Supply/Demand.No
Supply Chain Hub Exclude Inventory Master OrganizationsExclude Inventory Master Organizations from the Organizations List of Values.Yes
Supply Chain Hub Forecast Filter Blitz ReportName of the Blitz Report that controls the Forecast Tab filter functionality.XXEN_SCHUB_FORECAST_FILTER
Supply Chain Hub InstalledControls whether Supply Chain Hub is installed during Blitz Report upgrades. Set to Yes or No at Site level to skip the installation prompt. See Installation Guide for details.(auto-detected)
Supply Chain Hub Item Attachment CategoryCategory for attachment title and description display in the Item Details Tab. Leave blank to show all categories.
Supply Chain Hub Item Custom Extension Blitz ReportName of the Blitz Report that controls derivation of additional customer specific Item Data.XXEN_SCHUB_ITEM_CUSTOM_QUERY
Supply Chain Hub Item Filter Blitz ReportName of the Blitz Report that controls the item filter functionality.XXEN_SCHUB_ITEM_FILTER
Supply Chain Hub Item Search Blitz ReportName of the Blitz Report that controls the item search functionality.XXEN_SCHUB_ITEM_SEARCH
Supply Chain Hub Open WIP Operations and Components in Update ModeWhen set to yes, the Oracle standard Operations and Components forms open in update instead of read only mode from the Discrete Jobs form.No
Supply Chain Hub Plan Actions Filter Blitz ReportName of the Blitz Report that controls the Plan Actions Tab filter functionality.XXEN_SCHUB_PLAN_ACTIONS_FILTER
Supply Chain Hub Show KPIs in Item Details TabShow Item KPI Quantities in the Item Detail Tab. Generally only disabled if performance is an issue.Yes
Supply Chain Hub Show KPIs in Item Search TabShow Item KPI Quantities in the Item Search Tab. Generally only disabled if performance is an issue.Yes
Supply Chain Hub Show Release ButtonShow the Release button in the Supply/Demand Tab. If No, the release action is accessible as a menu option in the right-click menu after selecting Planned Orders.No
Supply Chain Hub Show Tooltip HelpEnable or disable tooltip help display for Supply Chain Hub.Yes
Supply Chain Hub Supply/Demand Filter Blitz ReportName of the Blitz Report that controls the Supply/Demand Tab filter functionality.XXEN_SCHUB_SUPPLY_DEMAND_FILTER
Supply Chain Hub Use MRP for Planning SourceTells Supply Chain Hub to use MRP instead of ASCP as the planning source.No (ASCP)
Supply Chain Hub Use Purchasing Buyer Work CenterUse Purchasing Buyer Work Center for Drilldowns instead of the standard Purchasing Forms.No
Supply Chain Hub Use Quick Sales Orders FormUse Quick Sales Orders Form for Drilldowns instead of the Orders Workbench.No

11 Technical architecture


This chapter describes how Blitz Report integrates with Oracle E-Business Suite end-to-end: the user-facing components, the transport layer used by the Excel clients, the database packages that execute reports and uploads, and the concurrent-processing infrastructure that produces output files. It is intended as a single reference for security, infrastructure and architecture reviews.

11.1 Overview

Blitz Report runs entirely inside the customer’s Oracle E-Business Suite environment. There is no SaaS component, no external service, and no network egress to Enginatics. All code, all data, all session state and all output files reside on the customer’s own database and application servers.

The product has four tiers, and every request follows a complete submit → generate → deliver round trip across them:

  1. Client tier — the user interface that initiates a report or upload. Five entry points are supported: the Oracle EBS Forms-based XXEN_REPORTS form, an Oracle Application Framework (OAF) self-service page, the Blitz Report Excel Add-in, the Blitz Upload template, and the Blitz FSG template.
  2. Transport tier — HTTPS, in two directions: the three Excel-based clients submit requests through one of ORDS, ISG or MOD_PLSQL (mutually exclusive per installation), and the generated output file is delivered back to every client through the standard EBS HTTP server — the same channel as the EBS "View Output" link.
  3. Database tier — the PL/SQL packages that own all business logic: XXEN_WEBSERVICES, XXEN_REPORT, XXEN_API, XXEN_UPLOAD, XXEN_FSG and XXEN_REPORT_OAF, plus the EBS data and setup objects they read.
  4. Application tier — the EBS concurrent-processing layer (Concurrent Manager / FNDLIBR) that runs report and upload concurrent programs and writes the resulting XLSX, XLSM or CSV file to $APPLCSF/out and fnd_lobs, ready for the EBS HTTP server to download to the client.

11.2 Architecture diagram

The diagram below shows the components of each tier and how data flows between them. Five entry points (Forms, OAF, Excel Add-in, Blitz Upload, Blitz FSG) reach the database through different combinations of three transport channels: the in-EBS PL/SQL / JDBC connection used by Forms and OAF, the HTTPS web service transport (ORDS / ISG / MOD_PLSQL) used by the Excel clients for synchronous PL/SQL calls, and the EBS HTTP server used for file transfer in both directions. Section 7.6 walks through the end-to-end flow for each entry point.

  • Solid blue arrows are PL/SQL / JDBC calls inside the EBS application server (Forms and OAF to XXEN_API / XXEN_REPORT_OAF; engines to Concurrent Manager and EBS data tables).
  • Dotted blue arrows are HTTPS calls from a desktop Excel client (Add-in, Upload, FSG) through the configured web service transport (ORDS / ISG / MOD_PLSQL). These carry synchronous PL/SQL calls only — report data for the Add-in, list-of-values and validation for Blitz Upload, balance and drilldown for Blitz FSG.
  • Orange arrow is the Blitz Upload file upload: the entire XLSM workbook is sent over HTTPS to fnd_lobs via the standard EBS file servlet FNDGFM, then processed server-side by the Blitz Upload concurrent program.
  • Green arrows are the output file delivery path: any file generated by the Concurrent Manager (report output, upload template, upload result, FSG initial workbook) is downloaded to the user over HTTPS by the EBS HTTP server (FND_WEBFILE) — the same mechanism as the EBS "View Output" link — or sent as an email attachment via UTL_SMTP.
Blitz Report end-to-end architecture across client, transport, database and application tiers

11.3 User interfaces

EBS Forms (XXEN_REPORTS form)

The custom XXEN_REPORTS Oracle Forms module is the in-EBS entry point for users on Forms-based responsibilities. It runs inside the standard EBS Forms server and calls Blitz Report PL/SQL directly through the Forms JDBC connection — no HTTP layer is involved. Authentication is the existing EBS session.

OAF self-service page

Users on responsibilities that have replaced the Forms session with the OAF self-service framework reach Blitz Report through an OAF page that calls XXEN_REPORT_OAF. As with Forms, the call path is JDBC inside the EBS application server; authentication is the existing EBS session.

Excel (XLSX / XLSM / CSV output)

The most common way users consume Blitz Report is through the Excel file produced by the report concurrent program. Every report run delivers an XLSX, XLSM (when macros are needed) or CSV file via the EBS HTTP server’s "View Output" link, and the user opens it in their existing desktop Excel — no Blitz Report client software is installed. This is the default consumption path for anyone who only needs to look at, sort or chart report data; the Excel Add-in below is only needed when the user wants to drive Blitz Report from inside Excel.

Excel Add-in (Blitz Report.xlam)

The Excel Add-in is a signed VBA workbook (Blitz Report.xlam) distributed to end-user desktops. It allows users to browse, parameterize and run reports directly from Excel. It calls the database via the transport tier described in section 7.4.

Blitz Upload (UploadTemplate.xlsm)

The Blitz Upload template is a signed VBA workbook (UploadTemplate.xlsm) that allows mass data entry into Oracle EBS using validated Excel sheets. The upload data file (the entire XLSM workbook) is transferred to the server via the EBS file servlet FNDGFM; the web service transport is used only for in-Excel list-of-values and validation while the user is editing the template.

Blitz FSG (Default.xlsm with the balance() formula)

The Blitz FSG template is a signed VBA workbook (Default.xlsm) that allows finance users to build Excel-based financial statements with a custom balance() formula. The formula pulls GL period balances from the server via the web service transport on each cell recalculation, and supports drill-down to journal detail and subledger transaction detail.

11.4 Transport layer

The three Excel-based clients reach the database through one of three HTTPS transports for synchronous PL/SQL data calls. The active transport is selected per installation by the profile option Blitz Report Webservice Connection Type; only one is used at a time, and all three call the same back-end PL/SQL.

ORDS — recommended (any EBS version)

Oracle REST Data Services exposes XXEN_WEBSERVICES as a set of REST endpoints under /ords/xxen/xxen_webservices/*. Each endpoint is a POST handler whose body is dispatched to a wrapper procedure in XXEN_WEBSERVICES_ORDS, which then calls the corresponding routine in XXEN_WEBSERVICES. Authentication uses OAuth2 with the client_credentials grant; the OAuth2 client is created at install time and protected by an ORDS privilege bound to the xxen_webservices role. ORDS can run on the same host as EBS, on a separate application server, or in Oracle Database itself; the URL is configured by the Blitz Report Webservice ORDS URL profile option.

ORDS is the default for new installations because it is supported on every EBS release, runs in standard Oracle infrastructure, and uses modern OAuth2 security.

ISG — SOAP / REST (EBS 12.2+)

Oracle Integrated SOA Gateway exposes XXEN_WEBSERVICES as SOAP and REST web services using the @rep:scope public annotations on the package spec. ISG uses the EBS-managed Oracle WebLogic / SOA Gateway infrastructure and authenticates against the EBS HTTP server with the existing EBS user / responsibility model. ISG is available on EBS 12.2 and higher.

MOD_PLSQL — Apache mod_plsql (EBS 11i / R12.1)

For older EBS releases that pre-date ISG, the legacy Oracle HTTP Server mod_plsql module dispatches requests directly to a set of *_modplsql procedures in XXEN_WEBSERVICES. These procedures accept owa.vc_arr name/value arrays and return JSON through htp.print. Authentication is HTTP Basic, validated by XXEN_WEBSERVICES.authenticate against the EBS user database.

Selecting a transport

The choice of transport is driven by the customer’s EBS release and infrastructure preferences. ORDS is recommended where supported. Existing installations on ISG or MOD_PLSQL are fully supported and continue to work unchanged. Switching transports is a configuration change — no client software needs to be re-distributed because the Excel Add-in, Upload and FSG clients all read the active transport from the Blitz Report Webservice Connection Type profile option at session start.

File transfer to and from the client (output downloads, Blitz Upload data files going up) is independent of the chosen web service transport — it always goes through the standard EBS HTTP server using FND_WEBFILE (downloads) and FNDGFM (uploads and downloads).

11.5 Database tier

All business logic lives in PL/SQL packages owned by the APPS schema. The key packages are:

  • XXEN_WEBSERVICES — single entry point for all HTTPS clients. Authenticates the request, initialises the EBS session (fnd_global.apps_initialize, mo_global.init), and dispatches to one of the engines below. All three transports (ORDS, ISG, MOD_PLSQL) ultimately call procedures in this package.
  • XXEN_WEBSERVICES_ORDS — thin wrapper used only by ORDS endpoints. It unpacks the JSON body and forwards the call to XXEN_WEBSERVICES.
  • XXEN_REPORT — the report execution engine. Parses parameter binds, runs the report SQL, and produces the XLSX (or XLSM, for upload templates and FSG) or CSV output. Submitted as a concurrent program by the Concurrent Manager.
  • XXEN_API — the public PL/SQL API used by Forms, custom integrations and customer-written PL/SQL. Documented in chapter 5 of this guide.
  • XXEN_UPLOAD — the upload framework. Reads the uploaded XLSM workbook from fnd_lobs, validates the rows server-side, and applies them to the EBS data via the customer-defined upload procedure for that report.
  • XXEN_FSG — the FSG balance and drill-down engine. Implements the balance() formula, segment filtering, drill-down to journal detail and drill-down to subledger transaction detail.
  • XXEN_REPORT_OAF — OAF integration layer used by the OAF self-service page.

11.6 Flow patterns by entry point

Each of the five entry points uses a different combination of the tiers above. The key distinctions are which channel actually carries the data — the synchronous web services (ORDS / ISG / MOD_PLSQL) return PL/SQL data directly to the caller, the EBS HTTP server transfers files (downloads via FND_WEBFILE, uploads and downloads via FNDGFM), and the Concurrent Manager runs server-side report and upload jobs — and which of those channels each entry point uses.

a) Forms and OAF report run

  1. The user clicks Run in the Blitz Report Forms module (XXEN_REPORTS) or in the OAF self-service page.
  2. The Forms server / OAF page calls XXEN_API / XXEN_REPORT_OAF directly over the existing EBS database connection (no HTTP) and submits a concurrent request.
  3. The Concurrent Manager (FNDLIBR) runs XXEN_REPORT, which queries the EBS data and writes the generated XLSX or CSV file to $APPLCSF/out and fnd_lobs.
  4. The user clicks View Output on the concurrent request and the file is streamed back over HTTPS by the EBS HTTP server through FND_WEBFILE / FND_WEBFILEPUB — exactly the same mechanism used for any other EBS concurrent request output.

b) Excel Add-in (synchronous, no Concurrent Manager)

  1. The user opens Excel and uses the Blitz Report ribbon to choose a report (or refreshes a worksheet that contains a Blitz Report function).
  2. The VBA code in Blitz Report.xlam issues an HTTPS request through the configured web service transport (ORDS, ISG or MOD_PLSQL) to XXEN_WEBSERVICES.
  3. XXEN_REPORT runs synchronously inside that PL/SQL call, queries the EBS data, and returns the result rows as JSON in the same HTTP response.
  4. The Excel Add-in writes the rows directly into the Excel sheet.

The Concurrent Manager is not involved in the Add-in flow. There is no output file written to $APPLCSF/out; the data is held only in the user’s Excel session.

c) Blitz Upload

Blitz Upload is the main end-user entry point that sends a file to the server. It is a four-step pattern:

(Several setup and administration operations also upload files through the same FNDGFM channel — Excel layout templates, XML report/upload definition imports, product upgrade installation files, and Discoverer worksheet .eex imports — but those are infrequent setup tasks rather than runtime user activity, so they share the orange arrow above without warranting a separate flow pattern.)

  1. Generate template — from the Blitz Report Forms module (or the equivalent Excel ribbon command), the user submits a Blitz Report concurrent request for a report defined as type Upload. The Concurrent Manager runs XXEN_REPORT, which generates the upload template as an XLSM workbook (with embedded VBA macros for in-Excel editing support). The template can be empty (for create-only uploads) or pre-populated with the existing rows the user wants to edit, depending on the parameters chosen. The XLSM is delivered back as a normal "View Output" download through the EBS HTTP server.
  2. Edit in Excel — the user opens the XLSM in desktop Excel and modifies the data. While editing, the embedded VBA uses the configured web service transport (ORDS / ISG / MOD_PLSQL) to call XXEN_WEBSERVICES for in-cell list-of-values lookups and field-level validation. The web service transport is never used to transfer the data being uploaded — it only supports interactive editing.
  3. Submit upload — the user clicks the Upload button on the Blitz Report form. The entire XLSM workbook is uploaded over HTTPS to fnd_lobs via the EBS FNDGFM file servlet, and a Blitz Upload concurrent request is then submitted. The Blitz Upload concurrent program (XXEN_UPLOAD) reads the workbook from fnd_lobs and processes the rows server-side. Uploading the whole file in one transfer is what allows Blitz Upload to handle very large data volumes far faster than per-row web-service approaches.
  4. Result file — once the upload is complete, the upload concurrent program submits a follow-up Blitz Report concurrent request that runs XXEN_REPORT against the same upload-type report with success / error SQL applied. The output is again an XLSM workbook — identical in structure to the template — so that the user can review per-row success / error status and, where rows failed, correct the data in Excel (with full LOV and validation support) and re-upload it through FNDGFM.

d) Blitz FSG

FSG combines a server-side generation step with a long-lived in-Excel refresh model:

  1. Initial generation — the user submits an FSG report concurrent request. The Concurrent Manager runs XXEN_REPORT / XXEN_FSG which produces an XLSM containing embedded balance() and drilldown formulas (one formula per balance cell). The file is delivered through the EBS HTTP server in the usual way.
  2. In-Excel refresh — once the user opens the XLSM in Excel, every balance() formula and every drilldown is a separate VBA call through the configured web service transport (ORDS / ISG / MOD_PLSQL) into XXEN_FSG, which returns the current balance, journal detail or subledger transaction detail directly in the HTTP response. The user can refresh the workbook for new period balances without re-running the concurrent program.

What every pattern has in common

All four patterns share three architectural properties:

  • All run inside the customer’s EBS environment — database, application server, HTTP server, Concurrent Manager and SMTP gateway. No data leaves the customer environment, and Enginatics has no runtime presence on the request path.
  • All file transfer (template downloads, output downloads, the Blitz Upload data file going up to the server) goes through the standard EBS HTTP server — the same channel as the EBS "View Output" link. The web service transport (ORDS / ISG / MOD_PLSQL) carries only synchronous PL/SQL data calls, never files.
  • All authentication is anchored on the existing EBS user and responsibility model (see section 7.7 below).

11.7 Security model

Authentication and authorization are anchored on the existing EBS user and responsibility model:

  • For Forms and OAF entry points, the existing EBS session is the authentication credential.
  • For ORDS, the OAuth2 client_credentials grant authenticates the client; the request body carries the EBS user / responsibility / application that the call should run as, which is validated against the EBS user database before any business logic runs.
  • For ISG, authentication is delegated to the standard ISG / EBS HTTP server stack.
  • For MOD_PLSQL, HTTP Basic credentials are validated against the EBS user database by XXEN_WEBSERVICES.authenticate.

Once authenticated, every request runs under an EBS-initialized session — user, responsibility, operating unit and ledger context are set exactly as for an interactive Forms or OAF user. Data visibility is therefore controlled by the existing MOAC, ledger security and FGA policies on the underlying tables.

Report visibility is controlled by Blitz Report’s own assignments layer rather than by EBS request groups. EBS request groups cannot be used here because every Blitz Report runs under the same concurrent program (XXEN_REPORT), and Blitz Report also needs finer granularity than request groups can express (for example, assigning individual reports to individual users or responsibilities, with separate edit rights). Out of default assignmentst assignments delivered with Blitz Report mirror the security boundaries of the standard EBS login responsibilities — a user logged in under a GL responsibility sees the GL reports, an AP user sees the AP reports, and so on — so the model is familiar to administrators without requiring any extra setup. Assignments can then be tightened or extended on a per-customer basis through the Blitz Report Forms module.

No data is sent outside the customer environment. No session state, no report definitions, and no concurrent-program output are stored or proxied on Enginatics-owned infrastructure.

11.8 Deployment topology

A typical Blitz Report deployment co-locates all components on the customer’s existing EBS estate:

  • EBS database — hosts all Blitz Report PL/SQL, metadata tables and content (report definitions, LOVs, translations).
  • EBS application server — hosts the Concurrent Manager, the Forms and OAF servers, and (when MOD_PLSQL or ISG is used) the HTTP listener.
  • ORDS — runs in Oracle WebLogic, in Tomcat / a standalone Java process, or inside the database itself. Most customers install ORDS on the existing EBS application tier; the diagram above represents that topology.
  • End-user desktops — the only customer-side client artifact is the signed Excel Add-in / Upload / FSG workbook.

The installation script (install.sh) and the DBA ORDS Configuration Validation report verify that the chosen transport is correctly wired between the application and database tiers.

11.9 Third-party libraries

Blitz Report ships a small set of permissively-licensed third-party Java libraries on the EBS application tier to support PDF output of report results. They are bundled inside the install archive under $XXEN_TOP/bin/xlsx2pdf/lib/ and used only by the Xlsx2Pdf conversion tool that runs as part of the Blitz Report concurrent program when a user selects PDF as the output format. No other component of Blitz Report depends on them.

The current set:

  • Apache POI 3.17 — Apache License 2.0. Used to stream-read the generated XLSX workbook for conversion. Three JARs: poi-3.17.jar, poi-ooxml-3.17.jar, poi-ooxml-schemas-3.17.jar.
  • Apache XMLBeans 3.1.0 — Apache License 2.0. POI dependency for OOXML schema binding.
  • Apache Commons Codec 1.15 — Apache License 2.0. POI dependency.
  • Apache Commons Collections 4.2 — Apache License 2.0. POI dependency.
  • curvesapi 1.06 — BSD-style permissive license. POI dependency for chart curve rendering.
  • iText 2.1.7 — LGPL 2.1. The last LGPL-licensed iText release. Used to render the PDF document.

Why these specific versions

The versions are pinned to the most recent ones that remain compatible with Java 7. Blitz Report supports EBS releases as far back as 11i and R12.1.3, where the bundled JDK is Java 6 or Java 7. Apache POI 4.x and onwards, XMLBeans 4.x and onwards, and the iText successor OpenPDF all require Java 8. Pinning to POI 3.17 / iText 2.1.7 is therefore a deliberate compatibility choice, not a stale dependency — Blitz Report cannot move to newer versions without dropping support for older EBS environments. On EBS releases that ship with Java 8 or later (R12.2.x), the bundled libraries continue to work without change because Java preserves binary backward compatibility, so a single artifact set covers all supported EBS releases.

Verifying the bundled JARs

The JARs shipped under $XXEN_TOP/bin/xlsx2pdf/lib/ are unmodified upstream binaries from Maven Central. Customers who want to verify this independently can obtain the published SHA-1 checksums from the Apache Software Foundation’s repository at https://repo1.maven.org/maven2/ — for example org/apache/poi/poi/3.17/poi-3.17.jar.sha1 — and compare against the JARs in the install. The trust anchor in this case is the Apache release infrastructure, not the Blitz Report install archive, which gives an independent path for confirming that the artifacts have not been modified in transit.

License compliance

All bundled libraries are under permissive licenses (Apache 2.0, LGPL 2.1, BSD-style). None impose copyleft on Blitz Report or on the customer’s code. The original copyright notices and license texts ship inside each JAR file under META-INF/ as required by their licenses. The LGPL-licensed iText 2.1.7 source is publicly available from the same Maven Central coordinates that publish the binary.

Updates and security patches

Updates to the bundled libraries ship with the corresponding Blitz Report release; there is no in-place update mechanism on the customer side. A customer who needs to apply a security patch out of band can replace the JAR files in $XXEN_TOP/bin/xlsx2pdf/lib/ and re-run setup.sh in the same directory to recompile Xlsx2Pdf.java against the new library version, provided the replacement JAR remains binary-compatible with the converter source and with Java 7.

12 Tips and tricks


12.1 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 its type to ‘Protected’.

12.2 Writing report output to a server directory


Blitz Report can write a copy of the report output to a directory on the application server, e.g. by scheduling a report and writing the output file in XLSX or CSV format to a network folder, where it can be picked up as an outbound interface or read by other reporting tools.

The location of these files is controlled by the Server Output Directory runtime option, which can also be defaulted per report in the report definition. Any network folder mounted on the application server can be used as the destination. Which users may set it, and whether they can type a directory freely or have to select one of the approved output locations, is governed by the Blitz Report Server Output Directory Access profile option.

If a scheduled report does not retrieve any data, no file is written to the directory, so a downstream interface never has to deal with empty files. If you do want empty files to be written as well, set the profile option Blitz Report Suppress Empty File Delivery to ‘No’.

The Server File Name runtime option defines the template of the file name, and allows, for example, to overwrite an existing XLSX file with refreshed data by a scheduled Blitz Report concurrent request.

Setting this runtime option 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 gets refreshed with current data every 30 minutes.

Please refer to the Server File Name runtime option description to understand rules for building file name templates using tokens.

Operating system directory containing Blitz Report CSV files generated for data warehouse loading

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

12.3 MS Excel blocked macros warning

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

SECURITY RISK Microsoft has blocked macros from running because the source of this file is untrusted.

Excel blocked macros warning shown when opening Blitz Report output with macros disabled

To fix it please add the EBS url to the trusted sites or ask your system administrator to do it. The required steps may differ depending on your operating system version. The below screenshots show the steps on Windows 11. To access the required configuration screen please type ‘Internet Options’ in the Windows search box.

Windows Internet Options Security tab with the Trusted Sites zone selected for Blitz Report configuration
Adding the Oracle EBS server URL to the Windows Trusted Sites zone so Blitz Report downloads work

Find out more