Showing posts with label forms. Show all posts
Showing posts with label forms. Show all posts

Tuesday, July 22, 2014

Make EBS R12 Compatible for Mac OS X v10.9.x with Safari Browser (as well as for Windows Client PC also)

We have requirement to open forms of our EBS R12 (12.1.3) Production Instance on Mac OS X v10.9 Client PC with their Safari Browser but it should be still compatible with Windows OS.

To implement this, we have followed below Metalink Note IDs,
  • Recommended Browsers for Oracle E-Business Suite Release 12 (Doc ID 389422.1)
  • Deploying JRE (Native Plug-in) for Windows Clients in Oracle E-Business Suite Release 12 (Doc ID 393931.1)
  • Upgrading OracleAS 10g Forms and Reports in Oracle E-Business Suite Release 12 (Doc ID 437878.1)
  • Using JDK 7.0 Latest Update with Oracle E-Business Suite Release 12.0 and 12.1 (Doc ID 1467892.1)

1) Issues Faced While Applying OPatch for 10g AS 10.1.2.3,


OPATCH_JAVA_ERROR=CHECKCONFLICT: OPATCH CANNOT PROCESS OVERLAY PATCHES BECAUSE OF NO OUI SUPPORT. PLEASE TAKE LATEST OUI 10.1 PATCHSET FROM "MY ORACLE SUPPORT" AND TRY AGAIN.
Solution: http://manishnashikkar.blogspot.in/2014/07/opatchjavaerrorcheckconflict-opatch.html

2) Issue faced while opening form in Windows :

Unsigned Entry in Resource Error

java.lang.SecurityException: com.sun.deploy.net.JARSigningException: Found unsigned entry in resource: http://server1.example.com:10403/OA_JAVA/oracle/apps/fnd/jar/fndforms.jar 

Workaround : 

If you are unable to upgrade your JDK at this time, you can workaround this issue by turning off Java caching through the Java Control Panel on the desktop:
Java Control Panel -> General (tab) -> Settings (button) -> Keep Temporary Files on the Computer (Uncheck)

Solution :

1. Upgrade the JDK version of your application tier node by following the appropriate document below: 
  • Using Latest Java 6.0 Update With Oracle E-Business Suite Release 12 (Document 455492.1)
  • Using JDK 7.0 Latest Update with Oracle E-Business Suite Release 12.0 and 12.1 (Document 1467892.1)
2. Regenerate the jar files using the 'force' option through adadmin.


Wednesday, August 7, 2013

Script to find Apache, Java, JRE, Forms version for Oracle E-Business Suite R12

The below script collects Apache, Java, Client JRE, Forms, Perl, PL/SQL versions and Forms communication mode. (Only for R12 and do not run on 11i Instance)

Before running the script ensure that you have sourced the environment file APPS<SID>_host.env from $APPL_TOP after logging into the system as applmgr user, otherwise the script will not run successfully


# +===========================================================================+
# | FILENAME
# | Instancedetails_R12.sh
# |
# | DESCRIPTION
# |   This script can be used to collect Apache, Jserv, Forms, Jinitiator and  
# |   Perl version in E-Business suite R12
# |
# | PLATFORM
# | Unix Generic, Linux, HP-UX,IBM AIX, Sunsolaris 
# |
# | NOTES
# |   Before running the script ensure that you have sourced the environment 
# |   by running APPS<SID>_host.env file from $APPL_TOP.  
# |
# | HISTORY
# |   Version 1.0
# +===========================================================================+
#
(
echo "Script Started "
date
## The script shows output on screen and creates file named hostname_date.txt file in current ## directory
## Collect the Apache version
echo "*****Apache Version*****"
$IAS_ORACLE_HOME/Apache/Apache/bin/httpd -v
echo " "
## Collect perl version
echo "*****perl version******"
$IAS_ORACLE_HOME/perl/bin/perl -v|grep built
echo " "
## Collect Java version
echo "******Java Version******"
sh -c "`awk -F= '$1 ~ /^JSERVJAVA.*$/ {print $2}' $ADMIN_SCRIPTS_HOME/java.sh` -version;"
echo " "
## Collect client JRE version
echo "*****Client JRE version*****"
cat $FORMS_WEB_CONFIG_FILE|grep sun_plugin_version| cut -c 1-35
echo " "
## Collect Forms version
echo "*****Forms Version*****"
$ORACLE_HOME/bin/frmcmp_batch|grep Forms| grep Version
echo " "
## Collect PL/SQL Version
echo "*****PL/SQL Version****"
$ORACLE_HOME/bin/frmcmp_batch|grep PL/SQL|grep Version
echo " "
## Collect Forms communication mode
echo "****Forms Communication Mode****"
cat $FORMS_WEB_CONFIG_FILE|grep serverURL=
echo "If the serverURL parameter has no value then Forms is implemented in socket mode else it is servlet"
echo " "
echo "Script Completed Successfully and it has generated the file  zz`hostname`_`date +%m%d%y.%H%M`.txt file in current directory"
echo "Script completed "
date
) 2>&1 | tee zz`hostname`_`date +%m%d%y.%H%M`.txt
###
### END OF SCRIPT
###



=================== Output =========================

[applmgr@ebs1 ~]$ . /u01/app/oracle/EBS/apps/apps_st/appl/APPSEBS_ebs1.env

[applmgr@ebs1 ~]$ sh InstanceDetails.sh
Script Started
Thu Jan 19 22:30:14 IST 2012
*****Apache Version*****
Server version: Oracle-Application-Server-10g/10.1.3.4.0 Oracle-HTTP-Server
Server built:   Jul  7 2008 14:58:00

*****perl version******
This is perl, v5.8.3 built for i686-linux-thread-multi

******Java Version******
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode)

*****Client JRE version*****
sun_plugin_version=1.6.0_07

*****Forms Version*****
Forms 10.1 (Form Compiler) Version 10.1.2.3.0 (Production)

*****PL/SQL Version****
PL/SQL Version 10.1.0.5.0 (Production)

****Forms Communication Mode****
serverURL=/forms/lservlet
If the serverURL parameter has no value then Forms is implemented in socket mode else it is servlet

Script Completed Successfully and it has generated the file  zzebs1.oracle.com_011912.2230.txt file in current directory
Script completed
Thu Jan 19 22:30:15 IST 2012
 



Cheers !!!

Saturday, March 23, 2013

Tuning JVM heap size in E-business Suite


Introduction:
Many time we face the performance issue in e-business suite, specially in mid-tier. And most of the time the issue is memory. JVM fall short of memory. This post will demonstrate you about how to increase the JVM memory in middle tier.
If some one ask you a question as an APPS DBA, where will you change if you want to change the memory sizing in middle tier. Without even thinking we should say CONTEXT FILE. Thats right !!! Every thing in middle tier is controlled by CONTEXT FILE.
E-Business suite has some standard values for JVM memory that it set when you clone the instance. You can see the memory values in CONTEXT FILE as given below.
Checking the current memory sizing for mid-tier
We have following variables defined in CONTEXT FILE which defines the memory allocation to different components of application.
s_forms_jvm_start_options -> For defining memory allocation for forms.
We will have 2 elements defined for forms: forms_jvm_start_options and forms_jvm_stop_options
1
2
3
4
</pre>
<forms_jvm_start_options oa_var="s_forms_jvm_start_options">-server -verbose:gc -Xmx256M -Xms64M -XX:MaxPermSize=128M -XX:NewRatio=2 -XX:+PrintGCTimeStamps -XX:+UseTLAB -XX:+UseParallelGC -XX:ParallelGCThreads=2 -Djava.security.policy=$ORACLE_HOME/j2ee/oacore/config/java2.policy -Djava.awt.headless=true -Dhttp.webdir.enable=false -Doracle.security.jazn.config=/slot/ems1883/appmgr/inst/apps/ma1st210_rws60051rems/ora/10.1.3/j2ee/forms/config/jazn.xml</forms_jvm_start_options>
<forms_jvm_stop_options oa_var="s_forms_jvm_stop_options">-server -verbose:gc -Xmx256M -Xms64M -XX:MaxPermSize=128M -XX:NewRatio=2 -XX:+PrintGCTimeStamps -XX:+UseTLAB -XX:+UseParallelGC -XX:ParallelGCThreads=2 -Djava.security.policy=$ORACLE_HOME/j2ee/oacore/config/java2.policy -Djava.awt.headless=true -Dhttp.webdir.enable=false</forms_jvm_stop_options>
<pre>
-Xmx256M -> this mean maximum heap size is 256MB
-Xms64M  -> this mean initial heap size is 64MB
-XX:MaxPermSize -> specifies the the maximum size for the permanent generation heap
Similarly we have the following variables as well for oacore and oafm, each having start_options and stop_options
s_oacore_jvm_start_options -> For defining memory allocation for oacore.
s_oafm_jvm_start_options   -> For defining memory allocation for oafm.
The above setup if for increasing the JVM size for 1 JVM. You can also increase the number of JVM processes as well.
-bash-3.00$ grep nproc $CONTEXT_FILE
<frmsrv_nprocs oa_var=”s_frmsrv_nprocs”>1</frmsrv_nprocs>
<forms_nprocs oa_var=”s_forms_nprocs”>2</forms_nprocs>
<oacore_nprocs oa_var=”s_oacore_nprocs”>2</oacore_nprocs>
<oafm_nprocs oa_var=”s_oafm_nprocs”>1</oafm_nprocs>
If you see here we have nproc (number of JVM processes) defined for each of the component. We can even change number of JVM processes for each component. How to change these settings … keep reading !!!
Changing the JVM memory size
When you are changing the memory size, once cannot just increase the memory size. One needs to check what is the current physical memory available on this system. System I mean to say the host. Also one should see, how many environments are running on that host. Depending on these factors, you need to come up with memory available to your host.
Example in my case I have a host with 8GB RAM. I have 2 environments available on this host. So that gives me 4GB RAM for each instance (Assuming that both the instances are of similar type).
So out of 4GM of physical RAM memory, I will need 1GB for database (my SGA_TARGET is set to 1G).
We are now left with 3GB of RAM memory. Most of the issues and processing goes with oacore. So its a good idea to concentrate more on oacore and then on forms.
We can set -Xmx for s_oacore_jvm_start_options to 1024 and -Xms & -XX:MaxPermSize to 256M. That mean 1 JVM process for oacore will not consume 1G memory. We have defined 2 processes for oacore (s_oacore_nprocs parameter). So for oacore we have allocated 2G memory. We are not left with 1G memory.
Forms having max heap size (-Xmx256M) 256MB and 2 processes defined for the same. Thats makes 512MB if memory for forms. So remaining 512MB can be allocated to oafm process.
Exmaple s_oacore_jvm_start_options will look as given below.
1
2
3
</pre>
<oacore_jvm_start_options oa_var="s_oacore_jvm_start_options">-server -verbose:gc -Xmx1024M -Xms256M -XX:MaxPermSize=256M -XX:NewRatio=2  -XX:+PrintGCTimeStamps -XX:+UseTLAB -XX:+UseParallelGC  -XX:ParallelGCThreads=2  -Dcom.sun.management.jmxremote -Djava.security.policy=$ORACLE_HOME/j2ee/oacore/config/java2.policy -Djava.awt.headless=true -Dhttp.webdir.enable=false -Doracle.security.jazn.config=/slot/ems1636/appmgr/inst/apps/tkr12r3d_rws60029rems/ora/10.1.3/j2ee/oacore/config/jazn.xml</oacore_jvm_start_options>
<pre>
Once you make the changes in context file, run autoconfig. This will configure the memory sizing for mid-tier.
References:
Metalink note ID: 362851.1, 567551.1 & 472781.1

Thursday, March 14, 2013

FRM-92101 - Oracle EBS


             

The Above Picture is what you see When you are trying to get access to any forms/Screen in oracle EBS if you check the Logs ( $LOG_HOME ) :
formsweb: Forms session exception stack trace:

oracle.forms.engine.RunformException: Forms session failed during startup: no response from runtime proce
rpm -ivh openmotif21-2.1.30-11
ss
at oracle.forms.servlet.RunformProcess.connect(Unknown Source)
at oracle.forms.servlet.RunformProcess.dataToRunform(Unknown Source)
at oracle.forms.servlet.RunformSession.dataToRunform(Unknown Source)
at oracle.forms.servlet.ListenerServlet.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

The Solution is Simple Just Install The below Package from Oracle Site Here , Don't forget Choose the right one regarding to your OS, And Use the below command (by root):

# rpm -ivh openmotif21-2.1.30-11


Cheers !!!

Friday, March 1, 2013

Working on CUSTOM.pll with an example

Requirement: change the Executable field into uppercase within the Concurrent Program Executable screen

Follow these steps to make the Executable field uppercase using CUSTOM.pll:

1.    Enable show custom events: Log in to the Application Developer responsibility and enable Show Custom Events. Check the blog post for enabling custom events:

Custom events can be enabled through the below navigation:
Once you enable show custom events, oracle will display the name of each and every event that can be trapped using CUSTOM.pll. Using this technique, you can identify the custom event that you need to trap to achieve the desired result.


2.    Gather information: A message box will appear when this form is opened, indicating that the form name is FNDCPMPE, the block name is FND_EXECUTABLES, the field name is USER_EXECUTABLE_NAME, and the event name is WHEN-NEW-FORM-INSTANCE. Note down the names of these components as these will be required in programming CUSTOM.pll. To double-check the name of field, navigate to the Executable field and use the Help/Diagnostics/Examine menu to see the name.

3.    Write code in CUSTOM.pll: Open Oracle Forms Builder, highlight PL/SQL Libraries, and navigate from the menu to File | Open. Open the CUSTOM.pll file and expand the nodes. Within the node Attached Libraries, you will see FNDSQF and APPCORE2. Write your logic in a procedure called event, using the following sample syntax:

procedure event(event_name varchar2) is
form_name varchar2(30) := name_in('system.current_form');
block_name varchar2(30) := name_in('system.cursor_block');
begin
if form_name='FNDCPMPE' then
if event_name='WHEN-NEW-FORM-INSTANCE' then
app_item_property2.set_property('FND_EXECUTABLES.USER_EXECUTABLE_NAME',CASE_RESTRICTION, UPPERCASE);
end if;
end if;
end event;

OR you can even write your extensions in a package.event(event_name) and call this procedure in package body of custom.event.

After making the programming changes to CUSTOM.pll, scroll down to the bottom of the package body Custom and make these changes to the version history of CUSTOM.pll:

This code should appear as a sublisting under #3fdrcsid('$Header: CUSTOM.pld 120.1 2009/03/03 18:43:00 appldev ship $');

4.    Transfer CUSTOM.pll to $AU_TOP/resource: Log in to the forms server and change the directory to $AU_TOP/resource. Ensure you have a backup of CUSTOM.pll either in the source control system or on the file system. Next, transfer CUSTOM.pll from your desktop to $AU_TOP/resource.

5.    Generate CUSTOM.pll: Use the command frmcmp_batch, replacing the apps password with the relevant value on your system. After running this command, CUSTOM.plx will be created in $AU_TOP/resource:

cd $AU_TOP/resource
##For R12 use frmcmp_batch
frmcmp_batch module=CUSTOM.pll userid=apps/appspassword output_
file=./CUSTOM.plx compile_all=special module_type=LIBRARY
batch=yes
##For 11i Use f60gen command as shown below
f60gen module=CUSTOM.pll userid=apps/appspassword output_file=./
CUSTOM.plx module_type=LIBRARY

6.    Test your changes: Log out and log back in to the Concurrent Program Executable screen. You will notice that it is no longer possible to enter the concurrent program executable name using lowercase letters.

----------------------------------------------------  Concepts ----------------------------------------------------

Using the Custom Library

Customizing Oracle E-Business Suite with the CUSTOM Library

The CUSTOM library allows extension of Oracle E-Business Suite without modification of Oracle E-Business Suite code. You can use the CUSTOM library for customizations such as Zoom (such as moving to another form and querying up specific records), enforcing business rules (for example, vendor name must be in uppercase letters), and disabling fields that do not apply for your site.
You write code in the CUSTOM library, within the procedure shells that are provided. All logic must branch based on the form and block for which you want it to run. Oracle E-Business Suite sends events to the CUSTOM library. Your custom code can take effect based on these events.
Important: The CUSTOM library is provided for the exclusive use of Oracle E-Business Suite customers. The Oracle E-Business Suite products do not supply any predefined logic in the CUSTOM library other than the procedure shells described here.

Writing Code for the CUSTOM Library

The CUSTOM library is an Oracle Forms Developer PL/SQL library. It allows you to take full advantage of all the capabilities of Oracle Forms Developer, and integrate your code directly with Oracle E-Business Suite without making changes to Oracle E-Business Suite code.
The as-shipped CUSTOM library is located in the AU_TOP/resource directory (or platform equivalent). Place the CUSTOM library you modify in the AU_TOP/resource directory in order for your code to take effect.
After you write code in the CUSTOM procedures, compile and generate the library using Oracle Forms. Then place this library into $AU_TOP/resource directory (or platform equivalent). Subsequent invocations of Oracle E-Business Suite will then run this new code.
Warning: If there is a .plx (compiled code only) for a library, Oracle Forms Developer always uses the .plx over the .pll. Therefore, either delete the .plx file (so your code runs directly from the .pll file) or create your own .plx file using the Oracle Forms compiler. Using the .plx file will provide better preformance than using the .pll file. Depending on your operating system, a .plx may not be created when you compile and save using the Oracle Forms Developer. Form Builder. In this case, you must generate the library using the Oracle Forms Developer compiler from the command line (using the parameter COMPILE_ALL set to Yes).


Coding Considerations and Restrictions

Be aware of the open form environment in which Oracle E-Business Suite operates. Also, each running form has its own database connection.
The following considerations and restrictions apply to the CUSTOM library and any libraries you attach to CUSTOM:
  • You cannot use any SQL in the library. However, you can use a record group to issue SELECT statements, and you can use calls to stored procedures for any other DML operations such as updates, inserts, or deletes.
  • Oracle Forms global variables in your code are visible to all running forms.

Altering Oracle E-Business Suite Code

Frequently you need to know the names of blocks and items within Oracle E-Business Suite forms for your CUSTOM logic. You should use the Examine feature available on the Help->Diagnostics menu while running the form of interest; it will give you easy access to all object names. You should not open Oracle E-Business Suite forms in the Oracle Forms Developer to learn this information.
You should exercise caution when changing any properties or values of items in the form from which CUSTOM logic is invoked. The CUSTOM library is intended to be a mechanism to augment Oracle code with your own. Using the CUSTOM library to alter Oracle code at runtime may bypass important validation logic and may jeopardize the integrity of your data. You should thoroughly test all logic you add to the CUSTOM library before using it in a production environment.


References: http://docs.oracle.com/cd/E18727_01/doc.121/e12897/T302934T458265.htm