Friday, January 9, 2015

EBS 12.2 -- form compile FRM-18108 and custom synchronization driver file

You may encounter FRM-18108 while compiling fmb files in EBS 12.2 or 12.1

FRM-18108: Failed to load the following objects.

Source Module:APPSTAND.fmb
  Source Object: STANDARD_FOLDER
Source Module:APPSTAND
  Source Object: STANDARD_PC_AND_VA
Source Module:APPSTAND
  Source Object: STANDARD_TOOLBAR
Source Module:APPSTAND
  Source Object: STANDARD_CALENDAR

This issue is actually an expected one. 
It is caused by FORMS_PATH environment variable or we can also say the issue caused by the form file to be compiled is not in the right place. An errornous deployment action ...

Normally, when you login your Application server with your Application OS user (lets say applmgr) and source your environment file (using for example in 12.2 -> . EBSapps.env run ), you will have FORMS_PATH set something like the following;

/apps/fs1/EBSapps/appl/au/12.0.0/resource:/apps/fs1/EBSapps/appl/au/12.0.0/resource/stub

As you see above, there are $AU_TOP/resource and $AU_TOP/resource/stub directories.. 
This is by design and the environment file is not incomplete.
On the other hand, if you want to build or compile some forms , you need to add an extra directory which stores the standard forms inside..
This directory is $AU_TOP/forms/YOUR_LANGUAGE
So if you want to compile a US form.
You need to set your FORMS_PATH before invoking your forms compiler as follows;
export FORMS_PATH=$FORMS_PATH:$AU_TOP/forms/US

Or if you want to compile a NLS form (for example turkish)
Then you have to set your FORMS_PATH as follows;
export FORMS_PATH=$FORMS_PATH:$AU_TOP/forms/TR

Alternatively , you can copy your fmb file to the $AU_TOP/forms/"your_LANG" directory and execute frmcmp_batch to compile your fmb file.. Note that: your current directory should be $AU_TOP/forms/your_LANG in this case.

You need to add $AU_TOP/forms/LANG(US or any other lang dir)  to your FORMS_PATH variable , only when compiling or building form files.
There is no need to add $AU_TOP/forms/LANG(US or any other lang dir) in the standard environment file ,as the needed standart things are already included in the fmx files during the compile phase.
This method is the method that Oracle suggests..

Lastly , here is the statement of Oracle about compiling forms in EBS 12.2

All the form .fmb files are staged under $AU_TOP/forms/<LANG>, for example, $AU_TOP/forms/US. The compiled forms (.fmx files) are staged under $PROD_TOP/forms/<LANG>, for example, $FND_TOP/forms/US.

In the case of custom forms created by a customer, the .fmb files are staged under $AU_TOP/forms/US. The compiled forms (fmx files) are staged under lt;CUSTOM>_TOP/forms/US.

One last thing, if your form is a custom one then; you should add entries for all your custom files to the custom synchronization driver file located at $APPL_TOP_NE/ad/custom/adop_sync.drv (%s_ne_base%/EBSapps/appl/ad/custom/adop_sync.drv). The adop utility uses this driver file to synchronize files between the run file system and the patch file system.
Add your entries in the section marked by the '#Begin Customization' and '#End Customization' comments.
When adding your entries, follow the syntax of the examples provided in the %s_adtop%/admin/template/adop_sync_drv.tmp template file. For example, if you have custom java class files under the $JAVA_TOP/<Company identifier>/* directory, and if all the files under this directory need to be synchronized between the patch file system and the run file system, then add the following entry in the custom synchronization driver file:
rsync -zr %s_current_base%/EBSapps/comn/java/classes/<Company identifier> %s_other_base%/EBSapps/comn/java/classes

You can use context variables in the entries you add. The syntax for a context variable is: %s_sample_var%
Any paths you include in your entries should be specified relative to s_current_base and s_other_base.

No comments :

Post a Comment