Thursday, January 21, 2021

Make Interactive Grid work like Excel or Google Sheets in Oracle APEX

Interactive grid (IG) is arguably one of the best components available in newer versions of Oracle APEX. IG is an awesome blend of a form and an interactive report that lets users view the data in IR format as well as make DML operations (CRUD) to the dataset.


By default, user needs to explicitly click the Save button after each change made in the IG...but what if you want to make IG behave like an online excel or google sheet where all the changes are automatically saved ?


We can certainly do this by incorporating below changes. Lets see the steps -


1. First, assign a static ID to your Interactive Grid e.g. ig_test


2. Now, lets create a Dynamic Action on this IG and set event details as below -

Event - Change

Selection Type - Region

Region - <IG region>


3. For the True event of this DA, select Action as Execute JavaScript Code -


4. Enter below JS code. Note - Here we've used static ID of our IG (ig_test) to invoke Save action.

apex.region( "ig_test" ).widget().interactiveGrid( "getActions" ).invoke( "save" );


5. Save and run the application.

Now, as soon as you make any modifications to the data and navigate to the next item by tabbing out or with a mouse click, you'll see the changes are automatically saved and standard 'Changes saved' message is shown.


By implementing this solution, users don't have to click Save button every time they make any changes in Interactive Grid and it delivers an experience that's very close to Excel online or Google Sheets.

Share:

Wednesday, January 6, 2021

Deployment process for OAF controller classes in R12.2.x

 - When it comes to deployment of OAF classes, R12.2.x moves away from conventional Oracle Applications Server setup to Weblogic server and jar concept comes into the picture.

- Here are the steps to follow to deploy controller classes in 12.2 –

1. Move the controller class file to the desired product top under JAVA_TOP

(e.g. $JAVA_TOP/oracle/apps/xxcustom/oracle/apps/icx/por/req/webui)


2. Attach extended controller to OAF page via personalization


3. Generate the product jar file. This can be done by running ‘adcgnjar’ utility in UNIX.

This needs WebLogic credentials so DBA team needs to perform below task -


Run adcgnjar utility and regenerate product jar file (customall.jar) for <product> (e.g. XXAP)

adcgnjar generates and signs a file named customall.jar file containing the custom Java and BC4J code and extensions. The customall.jar file resides on $JAVA_TOP as indicated by CLASSPATH.


It internally performs the following steps:

- Creates a temporary custom.zip file that contains all the directories under $JAVA_TOP except the oracle, META-INF, and policies directories.

- Generates and signs the customall.jar file with the contents of the custom.zip file.

- Deletes the temporary custom.zip file.

4. Bounce oacore and apache server, as needed.


Please note, since introduction to WebLogic in 12.2, adcgnjar utility and oacore bounce require WebLogic password, hence usually DBA team performs these two tasks.

Share:

Friday, December 11, 2020

Creating and maintaining Custom Tables in R12.2.x

 1. To create a custom table in custom schema – XXCUSTOM

CREATE TABLE XXCUSTOM.TABLE_NAME (COL1 NUMBER,….);


2. To generate editioning view and synonym for the table execute below script


exec AD_ZD_TABLE.UPGRADE('XXCUSTOM','TABLE_NAME');


This will create two new objects:


(i) An editioned view (having # in the end) in XXCUSTOM schema (e.g. XXCUSTOM.TABLE_NAME#)

(ii) A synonym (same as table_name) in APPS schema (APPS.TABLE_NAME)


3. If you alter the table definition in future then after running the alter table command, run below script to regenerate the editioning view and sync the table changes -


exec AD_ZD_TABLE.PATCH('XXCUSTOM','TABLE_NAME');


4. To see the objects across all editions, please query all_objects_ae or user_objects_ae


SELECT * FROM all_objects_ae WHERE OBJECT_NAME like 'TABLE_NAME%';


5. To issue Grants/Revokes use below commands (Please request DBA team to execute below commands):


Connect to XXCUSTOM schema and run below commands -

grant <grant> on XXCUSTOM.TABLE_NAME to APPS WITH GRANT OPTION;


grant <grant> on XXCUSTOM.TABLE_NAME# to APPS WITH GRANT OPTION;


Connect to APPS and run below commands to perform Grant or Revoke operations –

execute APPS.AD_ZD.GRANT_PRIVS('<grant>','TABLE_NAME','<SCHEMA_RECEIVING_GRANT');


execute

APPS.AD_ZD.REVOKE_PRIVS('<grant>', 'TABLE_NAME','SCHEMA_TOBE_REVOKED');


Share:

Sunday, November 15, 2020

Creating Materialized Views in R12.2.x

- In 12.1.3 where we create a materialized views with simple CREATE statement but in 12.2.x, we need to do below steps –


- Create a logical view

- Use ad_zd_mview upgrade script to create a materialized view.

- Oracle internally creates required edition materialized view.


e.g.

- Create a logical view. Basically, create a normal view but suffixed by the #

CREATE OR REPLACE VIEW APPS.XYZ_VIEW_NAME# AS

<query>;


- Upgrade to materialized view. The first parameter is the schema name and second is the view name without #


BEGIN

AD_ZD_MVIEW.UPGRADE('APPS', 'XYZ_VIEW_NAME');

END;


- Verify all components


SELECT * FROM dba_objects WHERE object_name LIKE 'XYZ_VIEW_NAME%';


You should see below 3 components


- XYZ_VIEW_NAME# : LOGICAL VIEW

- XYZ_VIEW_NAME : TABLE

- XYZ_VIEW_NAME : MATERIALIZED VIEW


To access the materialized view just query on XYZ_VIEW_NAME (without # suffix)

SELECT * FROM XYZ_VIEW_NAME;


Share: