Jan 23, 2025

Useful Workflow Commands

 


WFLOAD apps/columbus789 0 Y DOWNLOAD APEXP_FINDEV.wft APEXP



Locations:


$PO_TOP/patch/115/import/US/porpocha.wft

$PO_TOP/patch/115/import/US/poxwfpag.wft

$PO_TOP/patch/115/import/US/poappame.wft


Actions:


porpocha.wft - Updated ACCESS_LEVEL from 20 to 0

poxwfpag.wft - Updated ACCESS_LEVEL from 20 to 0

poappame.wft - Updated ACCESS_LEVEL from 20 to 0


Command/Results should be:


$FND_TOP/bin/WFLOAD apps/apps_password 0 Y UPLOAD $PO_TOP/patch/115/import/US/porpocha.wft

$FND_TOP/bin/WFLOAD apps/apps_password 0 Y UPLOAD $PO_TOP/patch/115/import/US/poxwfpag.wft

$FND_TOP/bin/WFLOAD apps/apps_password 0 Y UPLOAD $PO_TOP/patch/115/import/US/poappame.wft


WFLOAD apps/columbus789 0 Y DOWNLOAD /u02/migrate/nagaraj/files/workflow/porpocha.wft porpocha


WFLOAD apps/columbus789 0 Y DOWNLOAD /u02/migrate/nagaraj/files/workflow/poxwfpag.wft poxwfpag


WFLOAD apps/columbus789 0 Y DOWNLOAD /u02/migrate/nagaraj/files/workflow/poappame.wft poappame




/u01/applmgr/fs1/EBSapps/appl/po/12.0.0/patch/115/import/US


cp porpocha.wft /u02/migrate/nagaraj/files/workflow


cp poxwfpag.wft /u02/migrate/nagaraj/files/workflow


cp poappame.wft /u02/migrate/nagaraj/files/workflow


cp poxwfnot.wft /u02/migrate/nagaraj/files/workflow




$FND_TOP/bin/WFLOAD apps/columbus789 0 Y UPLOAD /u01/applmgr/fs1/EBSapps/appl/po/12.0.0/patch/115/import/US/porpocha.wft


$FND_TOP/bin/WFLOAD apps/columbus789 0 Y UPLOAD /u01/applmgr/fs1/EBSapps/appl/po/12.0.0/patch/115/import/US/poxwfpag.wft


$FND_TOP/bin/WFLOAD apps/columbus789 0 Y FORCE /u01/applmgr/fs1/EBSapps/appl/po/12.0.0/patch/115/import/US/poappame.wft


$FND_TOP/bin/WFLOAD apps/columbus789 0 Y UPLOAD /u01/applmgr/fs1/EBSapps/appl/po/12.0.0/patch/115/import/US/poxwfnot.wft



WFLOAD apps/columbus789 0 Y FORCE /u02/migrate/nagaraj/files/workflow/access/poxwfnot.wft

Script to add employee as buyer in Purchasing

 DECLARE

   l_agent_id          NUMBER;

   l_employee_number   VARCHAR2 (20) := 120273;

   l_buyer_rowid       VARCHAR2 (100);

BEGIN

   BEGIN

      SELECT person_id

        INTO l_agent_id

        FROM apps.per_all_people_f f

       WHERE employee_number = l_employee_number;

   EXCEPTION

      WHEN OTHERS

      THEN

         DBMS_OUTPUT.put_line (   'Unable to find Agent ID for '

                               || l_employee_number

                               || SQLERRM

                              );

   END;


   apps.po_agents_pkg.insert_row (x_rowid                    => l_buyer_rowid,

                                  x_agent_id                 => l_agent_id,

                                  x_last_update_date         => SYSDATE,

                                  x_last_updated_by          => 0,

                                  x_last_update_login        => 0,

                                  x_creation_date            => SYSDATE,

                                  x_created_by               => 0,

                                  x_location_id              => NULL,

                                  x_category_id              => NULL,

                                  x_authorization_limit      => NULL,

                                  x_start_date_active        => SYSDATE,

                                  x_end_date_active          => NULL,

                                  x_attribute_category       => NULL,

                                  x_attribute1               => NULL,

                                  x_attribute2               => NULL,

                                  x_attribute3               => NULL,

                                  x_attribute4               => NULL,

                                  x_attribute5               => NULL,

                                  x_attribute6               => NULL,

                                  x_attribute7               => NULL,

                                  x_attribute8               => NULL,

                                  x_attribute9               => NULL,

                                  x_attribute10              => NULL,

                                  x_attribute11              => NULL,

                                  x_attribute12              => NULL,

                                  x_attribute13              => NULL,

                                  x_attribute14              => NULL,

                                  x_attribute15              => NULL

                                 );

   COMMIT;

   DBMS_OUTPUT.put_line ('Setup as a buyer ' || l_employee_number);

EXCEPTION

   WHEN OTHERS

   THEN

      DBMS_OUTPUT.put_line ('Error in Setting up as Buyer ' || SQLERRM);

END;

Force LTR to print right aligned in BI Report

 <fo:bidi-override direction="ltr" unicode-bidi="bidi-override"><?format-number:<column name>;'###,###,##0.00'?></fo:bidi-override>

<fo:bidi-override direction="ltr" unicode-bidi="bidi-override"></fo:bidi-override>

<fo:bidi-override direction="ltr" unicode-bidi="bidi-override"><?TASK_NUMBER?></fo:bidi-override>

Download Concurrent Program LDT File

 Download Concurrent Programs:


FNDLOAD apps/matrix O Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct XX_CUSTOM_CP.ldt PROGRAM APPLICATION_SHORT_NAME="XXCUST" CONCURRENT_PROGRAM_NAME="XX_CONCURRENT_PROGRAM"



FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afcpprog.lct XX_CUSTOM_CP.ldt - WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE

Add Responsibility to the user via Script

 



DECLARE

   v_user_name             VARCHAR2 (30)  := '&user_name';

   v_responsibility_name   VARCHAR2 (100) := '&responsibility_name';

   v_application_name      VARCHAR2 (100) := NULL;

   v_responsibility_key    VARCHAR2 (100) := NULL;

   v_security_group        VARCHAR2 (100) := NULL;

   v_description           VARCHAR2 (100) := NULL;

BEGIN

   SELECT fa.application_short_name, fr.responsibility_key,

          fsg.security_group_key, frt.description

     INTO v_application_name, v_responsibility_key,

          v_security_group, v_description

     FROM apps.fnd_responsibility fr,

          fnd_application fa,

          fnd_security_groups fsg,

          fnd_responsibility_tl frt

    WHERE frt.responsibility_name = v_responsibility_name

      AND frt.LANGUAGE = USERENV ('LANG')

      AND frt.responsibility_id = fr.responsibility_id

      AND fr.application_id = fa.application_id

      AND fr.data_group_id = fsg.security_group_id;


   fnd_user_pkg.addresp (username            => v_user_name,

                         resp_app            => v_application_name,

                         resp_key            => v_responsibility_key,

                         security_group      => v_security_group,

                         description         => v_description,

                         start_date          => SYSDATE,

                         end_date            => NULL

                        );

   COMMIT;

   DBMS_OUTPUT.put_line(   'Responsiblity '

                         || v_responsibility_name

                         || ' is attached to the user '

                         || v_user_name

                         || ' Successfully'

                        );

EXCEPTION

   WHEN OTHERS

   THEN

      DBMS_OUTPUT.put_line

                         (   'Unable to attach responsibility to user due to'

                          || SQLCODE

                          || ' '

                          || SUBSTR (SQLERRM, 1, 100)

                         );


END;

/

Materialized Views in 12.2.X

 There are two steps to create Materialized Views in 12.2

  1. Create Logical View
  2. Upgrade to Materialized View
Create Logical View
CREATE OR REPLACE <Custom Schema>.XXBLOG_CREATE_LOGICAL_MV#
AS
<SELECT Statement>;


Upgrade Logical View to Materialized View
exec ad_zd_mview.upgrade('<custom schema>', 'XXBLOG_CREATE_LOGICAL_MV');

How to check if the Materialized Views got created properly in 12.2
SELECT object_type, object_name
FROM dba_objects
WHERE object_name like 'XXBLOG_CREATE_LOGICAL_MV%';

-- 4 rows Selected

These 4 Rows get created in the process for
  1. Logical View (Ending with '#') in Custom Schema
  2. Materialized View in Custom Schema
  3. Table in Custom Schema
  4. Synonym in APPS

Create mview gives the following error when the mview definition query refers to editioned function:
ORA-38818: illegal reference to editioned object %.%



12.2 E-Business Suite Upgrade Of Custom Materialized Views Fails Due To Changes Required For 12.2 ADOP Editioned Objects (Doc ID 2205375.1)
ORA-38818: Illegal Reference To Editioned Object When Creating Materialized View (Doc ID 1556379.1)
    How to Refresh Materialized Views:
    exec DBMS_MVIEW.REFRESH('XXBLOG_HOWTOREFRESH_MV', method => '?',  atomic_refresh => FALSE, out_of_place => TRUE);


    Parameters in detail:
    Refresh Method
    ParameterDescription
    COMPLETECRefreshes by recalculating the defining query of the materialized view.
    FASTFRefreshes by incrementally applying changes to the materialized view.
    For local materialized views, it chooses the refresh method which is estimated by optimizer to be most efficient. The refresh methods considered are log-based FAST and FAST_PCT.
    FAST_PCTPRefreshes by recomputing the rows in the materialized view affected by changed partitions in the detail tables.
    FORCE?Attempts a fast refresh. If that is not possible, it does a complete refresh.
    For local materialized views, it chooses the refresh method which is estimated by optimizer to be most efficient. The refresh methods considered are log based FAST, FAST_PCT, and COMPLETE.


    Out-of-place refresh: It uses outside tables during refresh as opposed to the existing "in-place" refresh that directly applies changes to the materialized view container table. Out-of-place refresh is particularly effective when handling situations with large amounts of data changes, where conventional DML statements do not scale well.

    May 16, 2020

    PRC: Generate Revenue Accounting Events(PATTGL) ends with ORA-01732 Error

    When working with PA Accounting, the standard program "PRC: Generate Revenue Accounting Events" failed with the Error - ORA-01732

    To fix the above error, we have 2 recommendations

    Recommendation 1:

    Update the init.ora parameter to a value of 'False':
    This can be done by editing the init.ora file which typically requires bouncing the database when completed.
    (Option 1 requires DB bounce)

    Recommendation 2:

    Modify the session by running this SQL -- alter system set optimizer_secure_view_merging = false;
    (NO DATABASE BOUNCE REQUIRED for Option 2)

    Query to check the DB Parameter value,

    select * from v$parameter where name like '%optimizer_secure_view_merging%';

    Value: FALSE




    Jan 2, 2020

    Journal entry cannot be reversed as its not transferred to GL (Error in xla_DataFixes_Pub.Reverse_Journal_entries)

    When working with Accounts Payable Trial Balance Report (ATBR) and you're getting the error while reversing the journal though Online Accounting then follow the below steps,

    Error:

    Journal entry cannot be reversed as its not transferred to General Ledger.
    "-: XLA-95103: An internal error occurred. Please inform your system administrator or support representative that:

    An internal error has occurred in the program xla.plsql.xla_datafixes_pub.reverse_journal_entries. Journal entry cannot be reversed as its not transferred to General Ledger.."

    l_Return_Status = U

    Undo_Accounting : Error in xla_DataFixes_Pub.Reverse_Journal_entries
    :FND?FND_AS_UNEXPECTED_ERROR?N?PKG_NAME?xla.plsql.xla_datafixes_pub?N?PROCEDURE_NAME?reverse_journal_entries?N?ERROR_TEXT?ORA-20001: -: XLA-95103: An internal error occurred. Please inform your system administrator or support representative 

    Step 1 : Check the current version of the file xlajedfp.pkb using the below string

    strings -a $XLA_TOP/patch/115/sql/xlajedfp.pkb |grep '$Header'

    (Login to APP Tier and execute the command under the Application Manager Access)

    If it is less then the header version /* $Header: xlajedfp.pkb 120.14.12020000.11 2015/01/19 07:07:32 tasrivas ship $ */ then 

    Step 2: kindly apply the below patch based on the EBS version 

    For R12.1.x: xlajedfp.pkb 120.1.12010000.25
    For R12.2.x: xlajedfp.pkb 120.14.12020000.11

    Note: Before applying the patch kindly verify the patch is applied or not in your database using the query,

    select ad_patch.is_patch_applied('R12',-1,19793092) from dual; 
    NOT_APPLIED

    Step 3: After Patch applied, re-confirm the header string and make sure its matches with updated one,

    strings -a $XLA_TOP/patch/115/sql/xlajedfp.pkb |grep '$Header'

    After patch applied, the patch verification will return the code EXPLICIT

    select ad_patch.is_patch_applied('R12',-1,19793092) from dual; 
    EXPLICIT


    Dec 26, 2019

    Oracle SQL-PLAN based on SQL query

    To generate the cost for the query based on single table or a group of table pls follow the below syntax in TOAD / SQL Developer,

    Step 1:

    EXPLAIN PLAN FOR
    select * from ap_suppliers;

    Result =>
    Explained.

    Step 2:

    select plan_table_output from table(dbms_xplan.display('plan_table',null,'basic'));

     Result =>
    ------------------------------------------
    | Id  | Operation         | Name         |
    ------------------------------------------
    |   0 | SELECT STATEMENT  |              |
    |   1 |  TABLE ACCESS FULL| AP_SUPPLIERS |
    ------------------------------------------

    Step 3:

    select plan_table_output from table(dbms_xplan.display_cursor(null,null,'basic'));

     Result =>

    EXPLAINED SQL STATEMENT:
    ------------------------
    select plan_table_output from table(dbms_xplan.display('plan_table',null
    ,'basic'))

    Plan hash value: 2137789089

    -----------------------------------------------------
    | Id  | Operation                         | Name    |
    -----------------------------------------------------
    |   0 | SELECT STATEMENT                  |         |
    |   1 |  COLLECTION ITERATOR PICKLER FETCH| DISPLAY |
    -----------------------------------------------------

    Nov 26, 2019

    How to Find the exact Error line in SQL Scripts using DBMS_UTILITY.FORMAT_ERROR_BACKTRACE

    If you encounter any error in SQL file and many of the times the error console never display the correct line number where the actual error exist. Instead it will display the wrong lines and which will re-route us in somewhere !!!

    To avoid this we have an standard API DBMS_UTILITY.FORMAT_ERROR_BACKTRACE and this show the correct line number where our real issue exist !

    Sample Script:

    DECLARE

    err_code NUMBER;
    err_msg  VARCHAR2(240);

    BEGIN

    {
    ...
    .....
    Logic of the Program
    ...
    .....
    }

    EXCEPTION
         WHEN OTHERS THEN

          ROLLBACK;

    err_code := SQLCODE;
    err_msg  := SQLERRM;

    FND_FILE.PUT_LINE(fnd_file.LOG,err_code||'->'||err_msg);
    FND_FILE.PUT_LINE(fnd_file.LOG,DBMS_UTILITY.FORMAT_ERROR_STACK);
    FND_FILE.PUT_LINE(fnd_file.LOG,DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);

    END;
    /

    Note: If your SQL scripts contains commented lines like /* */ or -- or REM then kindly ignore those lines and start your count from actual SQL script starts

    Ex: SQL Code 

    REM Script Name
    -- Development Script version 1.0
    /* 
    Comments 1
    Comments 2
    */

    Declare

    Line 1
    Line 2

    BEGIN

    Line 3
    Line 4

    Exception 
    When Others then 

    Line 5

    END;

    Total Lines:  23 but actual script contains only 16

    Kindly Ignore the comment lines (i.e) first 6 lines and then consider the remaining lines for the error findings


    Oct 31, 2019

    Oracle Branding Logo Change


    Oracle Branding Logo Change



    Step 1 : Place the XXX.Png file under $OA_MEDIA directory in App Tier.
    Step 2 : Query the Profile & Change the value . 
                  System Administrator > Profile - System.
                  Query profile "Corporate Branding Image for Oracle Applications"
                  Change the SITE level value to the name of the custom image file { XX_CUSTOM_LOGO.jpg }
    Step 3 :  Clear the Cache From Functional Administrator.



    Oct 17, 2019

    TOAD TNS Entry Issue

    TOAD for Oracle 9 or TOAD 10 – 64-bit Windows – ORA-12154: could not resolve the connect identifier specified or ORA-6413: connection not open

    I recently downloaded the new 10.x version of TOAD and could not connect to my databases. Still running TOAD 9.x, no problem. This really threw me off for a minute, so I thought I would share the resolution.
    You are likely running a 64-bit Windows OS and have installed TOAD into C:\Program Files (x86)\....
    I simply copied over my entire Quest Software directory from C:\Program Files (x86)\... to C:\Program Files\..., and restarted the TOAD.exe. Everything is working great, without having to reinstall anything.

    Sep 26, 2019

    OAF Attachment Page with AK Entity

    To display the content of attachments in OAF, we need to follow the below approach in JDevloper as well in EBS Application

    Step 1: Create the AK Entity for the attachment section and map it to the right database table with Primary column

    Responsibility: AK Html Forms
    Navigation: AK Entities





    Step 2: Under the Page development in JDevloper, create the region and attachment item with type 'attachmentLink'

    Create a Region with 'defaultSingleColumn' and create a sub-item with type 'attachmentLink' and map the correct VO in the View Instance. Add the attachment Prompt and Link Text for user convenience.




    Step 3: Create the Primary Key and Category Map under the entity map section for attaching the item with AK entities.


    Step 4: Tag the correct Primary Key column in the View Attribute column for linking the content with FND_ATTACHED_DOCUMENTS table.

    Note: All the uploaded content will be stored in FND ATTACHED DOCUMENTS table with the mapped primary column crId.

     Category is mentioned as MISC (Miscellaneous) under the categoryMap for the uploaded content.















    Step 5: Validate the OAF page and result will be displayed like below for the Attachment Section,


















    Page Controller to capture the raised attachment events,

        if ("oaAddAttachment".equals(pageContext.getParameter(EVENT_PARAM)) ||
         "oaUpdateAttachment".equals(pageContext.getParameter(EVENT_PARAM)) ||
         "oaDeleteAttachment".equals(pageContext.getParameter(EVENT_PARAM)) ||
         "oaViewAttachment".equals(pageContext.getParameter(EVENT_PARAM)) )

    {

    System.out.println("Attachment Event Raised");
         
    }

    Sep 24, 2019

    OAF Setup for DB and APP Connection

    All the custom page can be developed and tested in our work system with the help of JDeveloper before deploying it to the Oracle Application. But still it need access to Application and DB in order to avoid the unnecessary error while deploying the custom page in the E-Business Suite.

    For developing any custom page we need both DB as well APP connection detail string in order to fetch the database objects and application infra for the proper deployment. If the custom development runs well in JDeveloper then it will surely works well in the Application side too.. !!!


    A. Database Connection setup

    Enter the following details in the DB Setup

    Navigation: JDevloper (Tools --> Project Properties --> Oracle Application --> Database Connection)

    Step 1: Enter the Database name (Naming Convention can be anything and not related to DB TNS entry)



    Step 2: Enter the DB Username and Password


    Step 3: Enter the DB Host name, Port and SID as per your DB TNS entry


    Step 4: Test the connection and make sure it return the status "SUCCESS"



    B. Application Setup for the Login User with DBC file

    Keep the DBC file under the path "jdevhome\jdev\dbc_files\secure"



    Make sure the FND user have the correct responsibility attached before mapping it in the APP setup

    Enter the following details in the APP Setup

    Navigation: JDevloper (Tools --> Project Properties --> Oracle Application --> Runtime Connection)

    Step 1: Place the DBC file under the specified path as mentioned above and BROWSE and map it under the 'DBC File Name'

    Step 2: Enter the Username and Pwd with right Application Short name and Responsibility Key.


    DBC file in JDeveloper Tool

    How to get the DBC file from APP Server to use it in JDeveloper Tool

    Step 1: Login to APP Server and go to $INST_TOP

    cd $INST_TOP/appl/fnd/12.0.0.0/secure

    ls -ltr

    -rw-------. 1 applmgr dba 827 Jul 10 06:13 DEV.dbc

    Step 2: Permission will be limited for other users other than application manager, so cat the file and save it

    cat DEV.dbc

    Copy the content and save it with .dbc extension

    Step 3: JDevloper Path for DBC connection

    If once saved the file, place it under jdevhome\jdev\dbc_files\secure

    If all 3 steps done, try playing with OAF Page !!!

    OAF Controller Functions

    1. Deriving Various Bean values

    a. messageStyledText

    OAMessageStyledTextBean lvariable = (OAMessageStyledTextBean)webBean.findChildRecursive("column1");

    b. messageTextInput

    OAMessageTextInputBean lvariable = (OAMessageTextInputBean)webBean.findChildRecursive("column1");

    c. messageChoice

    OAMessageChoiceBean lvariable = (OAMessageChoiceBean)webBean.findChildRecursive("column1");

    d. messageLovInput

    OAMessageLovInputBean lvariable = (OAMessageLovInputBean)webBean.findChildRecursive("column1");

    e. submitButton

    OASubmitButtonBean lvariableSubmitButton = (OASubmitButtonBean)webBean.findChildRecursive("submitButton1");

    f. button

    OAButtonBean lvariableButton = (OAButtonBean )webBean.findChildRecursive("button1");

    2. To commit the database transactions

    getTransaction().commit();

    3. To discard the database transactions

    getTransaction().rollback();

    4. To Forward a page from one screen to another

    if (pageContext.getParameter("nextPage")!=null) {

          pageContext.forwardImmediately("OA.jsp?page=/oracle/apps/fnd/framework/newpage/webui/xxSearchPG",
                                               null,
                                               OAWebBeanConstants.KEEP_MENU_CONTEXT,
                                               null,
                                               params,
                                               true, // retain AM
                                               OAWebBeanConstants.ADD_BREAD_CRUMB_NO);
         

        }

    5. To initiate an Application Module (AM)

    xxSearchAMImpl am = (xxSearchAMImpl)pageContext.getApplicationModule(webBean);
     
    am.invokeMethod("apply");

    6. To put a session value

    pageContext.putSessionValue("currentPage","Page1");

    7. To get a session value

    String variableNew = (String)pageContext.getSessionValue("variableOld");

    8. To hide a button/submit button using the Render property

    OASubmitButtonBean SaveVariable = (OASubmitButtonBean)webBean.findChildRecursive("button1");

    SaveVariable.setRendered(false);

    SaveVariable.setRendered(true);

    9. Forming Dynamic Parameter in Controller

    HashMap params = new HashMap(1);
    params.put("PageMode","CREATE");

          if ( pageContext.getParameter("PageMode")!=null && pageContext.getParameter("PageMode").equals("CREATE")  )

           {
         
    System.out.println("Page for Create Action");

     am.invokeMethod("createRecord");

    //Set Parameter value for PageMode back to Original State.
                 
               HashMap params = new HashMap(1);
               params.put("PageMode","NULL");
             
             }

    Oracle Application Framework Developer and Personalization Guide

    URL to find the OAF Developer and Personalization Guide for the version R12.2

    Oracle Application Framework Developer Guide:

    Oracle Application Framework Developer's Guide, Release 12.2.4 (Doc ID 1676216.1)




    Oracle Application Framework Personalization Guide:

    https://docs.oracle.com/cd/E26401_01/doc.122/e22031.pdf





    Sep 23, 2019

    Table Events | OAF Page

    Table events are HTTP requests that are trapped and processed by OA Framework and handled during the processFormRequest phase.



    1. EVENT_PARAM - indicates the event generated by a web bean (a table, in this case).


    2. GOTO_EVENT - when 'Next' or 'Previous' navigation links are selected


    3. SORT_EVENT - when a column header is selected to sort that column


    4. HIDE_EVENT - when the 'Hide' link of a detail disclosure is selected


    5. SHOW_EVENT - when the 'Show' link of a detail disclosure is selected


    6. ADD_ROWS_EVENT - when the 'Add Another Row' button is selected


    7. UPDATE_EVENT - when the total row 'Recalculate' button is selected


    8. VALUE_PARAM - indicates a value that is relevant to a particular event: When a detail disclosure Hide/Show is selected, the value parameter contains the row index corresponding to the row whose Hide/Show was selected. When the 'Next' or 'Previous' link of table navigation bar is selected, the value parameter contains the index of the first row of the current range. For example, when the row range 1-10 is displayed, the value is 1 and when the row range 11-20 is displayed, the value is


    9. SIZE_PARAM - indicates the number of rows currently displayed in the table (relevant only to the navigation event).


    10. STATE_PARAM - indicates the current sort state (ascending or descending) of the column on which sorting is invoked (relevant only for the sort event).



    Hide a mandatory field | OAF Page

    If the business wants to hide a field in the seeded page, you can do it by personalizing the page and set Rendered property to false.
    But this solution will not help you if the field is marked as mandatory by the seeded page.

    The reasons are Mandatory Validations are usually done at the EO level. Hence even if you hide the mandatory field, the validation would still happen at the server. If the column has not null constraint in the table, it will throw a database error.


    How to solve this ?

    You can fix this by setting a default value for the mandatory field.

    Extend the controller and set the value in the process Request() method. This is the safest way to default the value to the mandatory field.

    After defaulting the mandatory variable, personalize the page and set the rendered property to false.

    Hope it helps !!

    Useful Workflow Commands

      WFLOAD apps/columbus789 0 Y DOWNLOAD APEXP_FINDEV.wft APEXP Locations: $PO_TOP/patch/115/import/US/porpocha.wft $PO_TOP/patch/115/import/U...