R12.2 Apps DBA. Powered by Blogger.

Oracle Forms in Applications FAQ

No comments :
    What are the components of the standalone Oracle Forms product?
    The standalone Oracle Forms product is composed of the following:
    Forms Builder - this program is used to create and modify Forms modules.
    Forms Compiler - this program is used to generate your FMX files.
    Forms Runtime - this program is the engine that runs your Form logic when you form is deployed in client/server.
    Forms Metric Server - this program is used in Forms load balancing.
    Forms Metric Client - this program is used in Forms load balancing.
    Forms CGI - this program dynamically generates the applet html that defines your form.
    Forms Server - this program listens for Forms Runtime engine requests.
    Forms Web Runtime - this program is the engine that runs your Form logic when your form is deployed over the web.
    What are the actual executables called?
    These are the various Forms component names on Unix and Windows:
    Unix               Windows
    Forms Builder f60desm ifbld60.exe
    Forms Compiler/Generator f60gen/f60genm ifcmp60.exe
    Forms Runtime f60run/f60runm ifrun60.exe
    Forms Metric Server d2ls60 d2ls60.exe
    Forms Metric Client d2lc60 d2lc60.exe
    Forms CGI f60cgi ifcgi60.exe
    Forms Server f60srvm ifsrv60.exe
    Forms Web Runtime f60webm ifweb60.exe
    Is there a difference between the standalone and Apps Forms product?
    Technology and components wise it is the same except for some executables (f60webmx); configuration files (appsweb.cfg,etc.) and the directory locations for both.
      Is that really all there is to it?
    Well, there are some more subtle differences. In standalone Forms we create the client by loading f60all.jar or f60all_jinit. In apps Forms we load a lot more, you can find a list of these files in the archive= section of your appsweb.cfg. Also since apps Forms is only supported to run from Jinitiator and not native browser mode, cab files (f60all.cab) is not used unlike in standalone Forms.
     What is f60webmx?
    The f60webmx is your web forms runtime executable, similar to f60webm except that it has Apps specific user exits linked into it.
        How can you recreate the f60webmx executable?
    To do this you issue the following command:
    adrelink force=y "fnd f60webmx"
      What are some of the related Forms/Apps files?
    adfmcctl.sh - located in $COMMON_TOP/admin/scripts, this script starts and stops the Forms Metric Client for your Apps instance; it uses the Forms d2lc60 executable to accomplish this.
    adfmsctl.sh - located in $COMMON_TOP/admin/scripts, this script starts and stop the Forms Metric Server for our Apps instance; it uses the Forms d2ls60 executable to accomplish this.
    adfrmctl.sh - located in $COMMON_TOP/admin/scripts, this script starts and stops the Forms Server Listener; similar to and actually calls the f60ctl found in $ORACLE_HOME/6iserver/bin of IAS.
    appsweb.cfg - located in $OA_HTML/html/bin, this file defines parameter values used by the Forms Web CGI, similar to formsweb.cfg found in $ORACLE_HOME/6iserver/forms60/server of IAS.
    appsbase.html - located in $OA_HTML/<language>, this is the default HTML file for starting an applet using Jinitiator, similar to basejini.htm found in $ORACLE_HOME/forms60/server of IAS.
    d2lc60.txt - located in $COMMON_TOP/admin/install, this is the Forms metric client log file.
    d2ls60.txt - located in $COMMON_TOP/admin/install, this is the Forms metric server log file.
    f60svrm.txt - located in $COMMON_TOP/admin/install, this is the adfrmctl.sh log file. This is not the same as the Forms server log file which not only logs startup and shutdown info but also client connectivity (which client IP is associated with which f60webm process) and debug stack trace info.
    OracleApplications.dat - located in $JAVA_TOP/oracle/apps/fnd/formsClient, among other things this file determines the path Apps uses to find their icons; its similar to and supplements registry.dat found in $ORACLE_HOME/forms60/server of IAS.
     Is Forms Builder installed with Apps on Unix and Windows?
    Yes it is. Unlike standalone Forms that installs the Forms Builder only as part of the IAS product suite on Unix. On Windows platforms you would have to install the IDS product suite to get Forms Builder.
      What is a Forms Builder node?
    A Forms Builder node refers to the leaves and branches of its Object Navigator. The Object Navigator provides a hierarchical display of the objects in a Form modules.
    +Forms
       +Module
       +Trigger
       +Alerts
       +Attached Libraries
       +Data Blocks
       +Canvases
       +Editors
       +LOVs
       +Object Groups
       +Parameters
       +Pop Up Menus
       +Program Units
       +Property Classes
       +Record Groups
       +Reports
       +Visual Attributes
       +Windows
    +Menu
    +PL/SQL Libraries
    +Object Libraries
    +Built-In Packages
    +Database Objects
    Objects are grouped under their respective nodes. For example, all of the windows defined in a form module appear under the Windows node; all the LOVs defined in the form module appearunder the LOVs node and all the program units appear under the Program Units node.  It is important to familiarize yourself with this in case you need to navigate within an Apps form during the course of debugging a problem.
    Where can you find Forms/Applications certification information for Apps?
    Go to http://metalink.oracle.com:
       - click on ?Product Lifecycle? ? ?Certifications?.
    - click on ?View Certifications by Product?.
    - select your ?Product Group? as ?E-Business suite?.
    - select your ?Product? as ?E-Business suite?.
    - select your ?Platform Selection?.
    - check the ?E-Business Suite Versions? and check ?Certified combinations only?.
    - under the ?Applications Tier Certifications? table click on the ?other? column.
    Where can you find Forms/Jinitiator certification information for Apps?
    Same as # 5
    Where can you find Forms patch set information for Apps?
    Note 125767.1 Upgrading Developer 6i with Oracle Applications 11i is your best source for this info.
    Is there a difference between the standalone and Apps Forms patch set?
    No there is not. The patch sets are identical but Apps requires an interoperability patch (I/O patch) and pre/post patches to be applied along with the Forms patch set.
    What is the ICX: Forms Launcher system profile option for?
    This profile option is used by the Self Service Web Applications Personal Home Page (also known as ICX) to determine the base URL needed to launch an application, which in this case is a Forms application.
    What should ICX: Forms Launcher be set to?
    ?ICX: Forms Launcher? is set to ?http://machine_name:port/dev60cgi/f60cgi?. In Apps release 11i you can add some parameters to this URL to enable some Forms features like tracing.
    What is FORMS60_CATCHTERM?
    FORMS60_CATCHTERM is an environment setting that enables (value = 1 by default) or disables (value = 0) the Forms abnormal termination handler which catches middle tier crashes and cleans up by removing temp files, closing db connections and writing diagnostic info to the dump file or the forms server log file.
    The Forms signal handler can be disabled to troubleshoot spinning/hanging f60webmx processes.
    What is FORMS60_TIMEOUT?
    FORMS60_TIMEOUT is an environment setting that determines the maximmum idle time (in minutes) before f60webmx shutsdown.  Note that it will only terminate an idle middle tier process, i.e. one which is waiting for the "next message" from the client. If the middle tier process is running a transaction or waiting for a query to complete it will not have take effect.
     How do you enable Forms Runtime Diagnostics (FRD) in Apps?
    To enable Forms Runtime Diagnostics (FRD):
     - login to Apps as sysadmin
    - click on Profile/System
    - query ICX%FORMS%LAUNCHER
    - add the following to the end of its value at user level:
    ?record=collect&log=/tmp/forms_frd.log
    Note that like any Apps profiles you can do this on various levels e.g. site, user, etc. so that you target your FRD accordingly. Also be aware that FRD incurs significant overhead to Apps processing so disable it when not in use.
    How do you disable direct Forms access through the http://host:port/dev60cgi/f60cgi URL?
    You can do this by using the mod_rewrite (the Swiss Army Knife of URL manipulation :) engine of the Apache server. In your httpd.conf file add the following lines at the end:
    RewriteEngine on
    RewriteCond %{QUERY_STRING} !NLS_LANG
    RewriteRule ^/dev60cgi/f60cgi$ http://www.oracle.com
    You'll have to tighten up the code somewhat but here I am taking advantage of the fact that the URL for accessing Apps directly and through the personal home page are not exactly the same i.e. if the URL does not have certain parameters in it then I redirect the user to a different web page of my choice.
    How do you get a Stack Trace?
    To generate a stack trace for Forms:
    - set environment variable $FORMS60_CATCHTERM=0
    - stop the Forms server
    - backup file f60webmx
    - make sure you are signed in as the user who owns f60webmx executable, then run this command to relink this executable with debug symbols:
    adrelink.sh force=y ranlib=y link_debug=y "fnd f60webmx"
    - restart the Forms server
    - reproduce the issue
    - check for a new core file with corresponding timestamp in $FORMS60_TRACE_PATH or $PWD or $FND_TOP/bin directory
    References:
    Note 353805.1 How To Generate A Stack Trace For Forms With Applications 11i
    Note 1812.1 TECH: Getting a Stack Trace from a CORE file
 Architecture
     Is HTTP connection mode supported in Apps?
    Not at this time. There are plans to bring HTTP support back to Apps but it is currently undergoing certification and it would most likely only be supported when using the Forms servlet. Most of the issues have to deal with how to make the various Apps environment settings available to the listener. Bug 1992211 keeps track of this issue.
    Is Forms listener servlet supported in Apps?
    No its not. Forms listener servlet is currently not supported in Apps.
    Do you have to be on a specific Forms patch set to use Forms listener servlet?
    For standalone Forms, this feature has been there since patch set 4 and certified against patch set 5. For Apps, a minimum of patch set 6 will be required and it will only work for environments with a single node web forms tier.
    Are there any changes to the Forms product components when in Forms listener servlet?
    Yes. With Forms Listener Servlet certain Forms components are replaced:
    Forms CGI - Forms Servlet (FormsServlet.class)
    Forms Server - Forms Listener Servlet (ListenerServlet.class)
    How is Forms load balancing accomplished?
    Currently Forms load balancing is done through proprietary programs called Metric Server and Metric Clients. The Metric clients are setup on machines with a corresponding Forms server and they constantly report to a Metric Server their load situation. The Metric Server then uses this information to decide which machine to pass a request to run a web form. Note 148516.1 Load Balancing in 11i Note 148155.1 Load balancing implementation and trouble shooting in 11.5.x using metric server are good sources for more info.
    How is Forms load balancing accomplished with Forms listener servlet?
    Forms servlet is now available for use with eBusiness Suite. Load balancing is enabled using the capability of the HTTP server (Oracle HTTP powered by Apache.) Reference: Note 201340.1 Using Forms Listener Servlet with Oracle Applications 11i
    How to set up Forms to work through a firewall?
    In the current Form Services architecture a firewall needs be configured to allow traffic on 2 ports. The listener port of the Oracle HTTP server (usually port 80 or 8002) and the Forms Listener/Server (usually 9000). The Oracle HTTP server handles the initial request, authentication to the server, and presents a list of responsibilities for the end user to choose from. Self Service applications will continue to use only this listener, but if a core application is invoked, the client makes a request to the Forms Listener that then creates a new Forms Server Runtime process. The Oracle HTTP server port will allow http traffic e.g. requests for help files, requests to the TCF servlet, etc. The Forms Listener/Server port will allow socket or https traffic. In the new Forms Servlet architecture the only port that needs to be open is the Oracle HTTP server.
Issues
    What is this Forms ?Cancel-Query? issue with Apps?
    Being able to cancel a long running query was a much sought after feature in Apps both for queries against data blocks and LOVs. The feature was first introduced in Forms patch set 3 but it subsequently broke many other functionalities. Patch set 9 finally fixes all of these. Note 138159.1 Canceling Long Running Queries in Oracle Applications 11i is your best source for this info.
    Why are some Forms files (appsweb.cfg,appsbase.html,etc.) duplicated across an Apps install?
    This is because of the way patching is done in Apps. All patches are initially copied to their corresponding products in the $APPL_TOP directory, because some of these files are accessed by an external process they will also be copied to directories outside $APPL_TOP where they can be easily accessed by external processes. Make sure that any changes you make to one copy propagate to all its duplicates.
    How do you generate Apps Forms modules or FMB files?
    Oftentimes as part of upgrading Forms or modifying a Form module or applying a patch modifying a Form module, you would encounter an issue that would necessitate manually regenerating the Forms module executable or FMX file. To do this you issue the following command:
    f60gen module=form_name.fmb userid=apps/apps output_file=form_name.fmx module_type=form batch=yes compile_all=special
    How do you generate Apps Forms library modules or PLL files?
    To do this you issue the following command:
    f60gen module=library_name.pll userid=apps/apps module_type=library batch=yes compile_all=special
    How do you generate Apps Forms menu modules or MMB files?
    Note that there is only one menu for Apps so it is rare that you need to regenerate the menu. To do this you issue the following command:
    f60gen module=FNDMENU.mmb userid=apps/apps output_file=FNDMENU.mmx module_type=menu batch=yes compile_all=special
    When do you have to regenerate your Apps Forms modules?
    There are many occassions when you have to regenerate (recreate the FMX) your Apps forms or when your Apps forms are regenerated, some are true some are not:
    After an operating system upgrade? False
    After a database upgrade? False
    After applying a Developer patch? False.
    After applying an I/O patch? True.
    After applying an Apps patch? True, but only if there is a g driver involved.
    What is compile_all=special?
    For standalone Forms the only valid values for compile_all are ?yes? and ?no?. compile_all=special is similar except that it doesn't attempt to update the source files.
    What do you do with a PL/SQL Error 302 and PL/SQL Error 306 when generating a Form module?
    This is a generic error message saying your form has attempted to call a program unit, which can be a package (Apps encapsulates all function and procedure calls within packages); a function or a procedure that it cannot find.
    Why? Maybe its not defined in the Form itself. Maybe its not defined in the database.  Maybe you?ve misspelled it.  The error itself will provide clues for you to debug the where and why of this problem.  Here is a typical error that you might get when generating a form:
    Compiling WHEN-BUTTON-PRESSED trigger on SUBMIT_REQUEST item in DEPT data block...
    ompilation error on WHEN-BUTTON-PRESSED trigger on SUBMIT_REQUEST item in DEPT data block: PL/SQL ERROR 302 at line 4, column 25 component 'SUBMIT_REQUES' must be declared
    PL/SQL ERROR 0 at line 4, column 3 Statement ignored
    WHEN-BUTTON-PRESSED is a name of a forms trigger in the form. SUBMIT_REQUEST is the name of a forms item, in this case a button. DEPT is the name of a data block in the form. So far this tells us that the errant code is in a WHEN-BUTTON-PRESSED trigger attached to a SUBMIT-REQUEST button attached to the DEPT data block and it?s on line 4 column 25 of that trigger.
    Once you open the form in Forms Builder you can easily track down this trigger and see that the there was a misspelling in the name of the function call (SUBMIT_REQUES is missing a T at the end). The code is as follows:
    DECLARE
      req_id NUMBER;
    BEGIN
      req_id := FND_REQUEST.SUBMIT_REQUES(?FND?,?FMDMGEN?,?Message File?,
                                         ?01-NOV-02 00:00:00',FALSE,'x');
    END;
    Note that the package can reside in the Form under the ?Program Units? node; or as a Forms library attached to the form or as a stored object in the database.
    What is the sequence in which Forms resolves program unit calls?
    Forms will attempt to resolve a program unit call in the following sequence:
    Program Units node
    Forms Library
    Database
    This will give you an idea on where first to look for broken packages in your hunt for the broken package. Oftentimes you might have to dig to the nth level to find the broken root package that has cascaded its problem up to the package where you currently see it. Either your amazing PL/SQL skills will find the problem for you or you can call Oracle Support and use their amazing PL/SQL skills. On occasion the problem in your package is already fixed in a later release.
    What do you do when you find the root broken package?
    First you have to determine the files that created the package body and spec.  To do this you either:
    Start Forms Builder (f60desm).
    Connect to the database as apps/apps.
    Expand the ?Database Objects? node.
    Expand the ?APPS? schema node.
    Expand the ?Stored Program Units?node.
    Locate your package spec and body.
    Double click on the icon besides it.
    Or
    Login to SQL*Plus as APPS/APPS.
    Locate your package spec and body.
    How do you get the latest package release?
    SQL> select name,type,text from user_source where name ='FND_REQUEST' and line < 3
    NAME            TYPE         TEXT
    --------------- ------------ --------------------------------------------------------
    FND_REQUEST     PACKAGE      package FND_REQUEST AUTHID CURRENT_USER as
    ND_REQUEST      PACKAGE      /* $Header: AFCPREQS.pls 115.4 2000/02/29 11:51:08 $ */ FND_REQUEST     PACKAGE BODY package body FND_REQUEST as
    FND_REQUEST     PACKAGE BODY /* $Header: AFCPREQB.pls 115.27 2001/07/28 09:35:16 $ */
    What we?re looking for is the name and version number (AFCPREQS.pls 115.4 and AFCPREQB.pls 115.27) of the files that create the package.  Support will then determine if it?s advisable to apply the latest release of those files.
    What is the FORMS60_CATCHTERM issue in Apps?
    There was an issue where spinning f60webmx processes are spawned when the Forms abnormal termination handler is enabled.   Disabling this handler (or FORMS60_CATCHTERM=0) works around the problem and it is also fixed in Forms v6.0.8.12. This is Bug 1367619,Bug 1394311 and Bug 1396450, where the only way to really confirm this is your issue is to generate a stack trace from the spinning f60webmx and compare your results with the bug. Note that not all spinning f60webmx problems are identical.
    What is the AlertBundle issue?
    Often times in your jinitiator console, apache error_log and your jserv_log files, you will see the following errors which shouldn't be any cause for concern:
    GET /OA_JAVA/oracle/ewt/alert/resource/AlertBundle_en_US.class HTTP/1.0" 404 328
    GET /OA_JAVA/oracle/ewt/alert/resource/AlertBundle_en.class HTTP/1.0" 404 325
    The AlertBundle class is part of the Forms EWT and it is used for alerts amongst other things. The search order for it is:
    AlertBundle_<language>_<region> e.g. AlertBundle_en_US.class (English for United States translated Alert bundle)
    AlertBundle_ e.g. AlertBundle_en.class (English for all regions translated Alert bundle)
    AlertBundle e.g. AlertBundle.class (English by default)
    In the latest 6i patchset the language and region should be derived from NLS_LANG on the middle tier.
 User Interface
    How do you change the background color of a required item in Apps?
    Change the $OA_JAVA/oracle/apps/fnd/formsClient/OracleApplications.dat file and change the RGB value for app.ui.requiredFieldVABGColor. To turn off the color of the required item you can either change the value of app.ui.requiredFieldVA from true to false (note that this is what the OracleApplications2.dat is for, a requirement for the ADA). You have to restart Jinitiator for this to take effect.
    How can you affect the look and feel of your Apps forms?
    You can alter the interface look and feel of Apps forms by changing the values of the following variables in the appsweb.cfg file:
    lookAndFeel=Oracle (or generic)
    colorScheme=blue or (teal, titanium, red, khaki, blue, olive, purple)
    background=no
    readonlyBackground=automatic
    The FND.D patch will allow control of some of these settings through the system profile:
    Java Look and Feel=Oracle (or generic)
    Java Color Scheme=blue (or teal, titanium, red, khaki, blue, olive, purple)
Customization
    Is customizing Apps Forms supported?
    Customizing Apps forms can mean many things. Here are some interpretations and whether they are supported or not:
    Do you support issues encountered when customizing seed or Apps products forms? Only if it pertains to standalone Forms functionality.
    Do you support issues encountered when running customized seed or Apps product forms? No.
    Do you support issues encountered when customizing Apps template forms? Only if it pertains to standalone Forms functionality.
    Do you support issues encountered when running customized Apps template forms? Only if it pertains to standalone Forms functionality.
    Do you support issues encountered when integrating customized Apps template forms with Apps? Yes.
    What if you really want to customize Apps forms?
    Apps strives to be a very complete product. It presents you with features that preclude the necessity of customizing or building new forms. On top of this it has the added functionality of being able to do internal customization of its forms through the use of flex fields, but if this isn?t enough then the following manuals should help you accomplish this Oracle Applications Developer's Guide (A75545-02) and Oracle Applications User Interface Standards for Forms-Based (A75395-01).
    How do you integrate custom forms with Apps?
    Note 70276.1 HOW TO INTEGRATE APPLICATIONS RELEASE 11 WITH CUSTOM APPLICATIONS would be a good source of info, official documentation can be found in Chapter 2 of the Oracle Applications Developer's Guide (A75545-02).
    Can you save Form modules (FMB, MMB, PLL) into the database?
    Yes and no. Yes if its standalone and no if its part of Apps, this is because Apps forms are structured so that their dependent modules are all stored as files. In Forms 9i (not yet released) you will not be able to store Forms modules in the database altogether.
    Where can you find the source Forms modules for Apps?
    Apps places all its source (FMB) files in the $AU_TOP/forms/<language> directory whereas the FMX files reside in their respective $PRODUCT_TOP/forms/<language> directory. On the other hand, all menu (MMB, MMX) and library (PLL and PLX) files are copied to the $AU_TOP/resource directory.
    How can you find the version of Forms in Apps?
    Once you are in an Apps form ...
    click on Help
    click on About Oracle Applications
    ... from the top level menu. The information is under the Forms Server section.
    How can you find the version and name of the form you are currently on in Apps?
    Same as #6 except that the information is under the Current Form section. The Form Name corresponds to the FMB and FMX file for that form.  The Form Version corresponds to the release level of that form.
    How can you confirm the version of the FMX or FMB file?
    Oftentimes, once you determine the version and name of the current form you want to peek into the internal workings of the actual form itself. To ensure that you are peeking at the right release of the FMB file you can do the following:
    $adident Header FNDSCSGN.fmb
    If you do this on the machine where Apps is installed it should be as simple as starting Forms Builder and opening the form.
    If you simply copy the form over to a a machine that does not have Apps installed, you will run into is a lot of FRM-18108: "Failed to load the following objects" errors.  This is because an Apps form is usually dependent on a host of other forms, libaries and menus.
    If you want to open the TEMPLATE.fmb form, make sure you have the following forms, libraries, copied over as well from the $AU_TOP/forms/<language> and $AU_TOP/resource directories:
    APPSTAND.fmb
    APPCORE.pll
    APPCORE2.pll
    APPDAYPK.pll
    CUSTOM.pll
    FNDSQF.pll
    GHR.pll
    GLOBE.pll
    GSM.pll
    JA.pll
    JE.pll
    JL.pll
    VERT.pll
    OPM.pll
    PQH_GEN.pll
    PSA.pll
    PSAC.pll
    PSB.pll
    IGILUTIL.pll
    IGILUTIL2.pll
    How can I open an Apps form in Forms Builder?
    If you want to open a product specific form, make sure you have all its associated forms and libraries copied over.
Since it is quite difficult to pinpoint exactly what this is, its best to just copy over the entire contents of $AU_TOP/forms/<language> and $AU_TOP/resource.

No comments :

Post a Comment

Note: only a member of this blog may post a comment.