Saturday, July 5, 2014

How to make DFF fields to mandatory in OAF Page

There is seeded DFF 'Requisition Headers' in Purchasing. If you enable attributes and make them mandatory in AOL, they are mandatory both in Core Purchasing and iProcurement.

But few Customer wants to make those fields mandatory only in iProcurement but not in Core Purchasing.

This can't be done with Personalization and possible with CO Extension. Below is Sample Code.
************************************************************************
package bc.oracle.apps.icx.por.req.webui;
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
import oracle.apps.fnd.framework.webui.beans.OADescriptiveFlexBean;
import oracle.apps.icx.por.req.webui.CheckoutSummaryCO;
import oracle.apps.fnd.framework.webui.beans.message.OAMessageTextInputBean;
import oracle.apps.fnd.framework.webui.beans.message.OAMessageLovInputBean;

public class bciprocCheckoutSummaryCO extends CheckoutSummaryCO
{
  public void processRequest(OAPageContext oapagecontext, OAWebBean oawebbean)
  {
    super.processRequest(oapagecontext, oawebbean);
    OADescriptiveFlexBean oadescriptiveflexbean = (OADescriptiveFlexBean)oawebbean.findChildRecursive("ReqHeaderDFF");
    oapagecontext.writeDiagnostics(this,"oadescriptiveflexbean value is : " +oadescriptiveflexbean, 1);
    oadescriptiveflexbean.processFlex(oapagecontext);
       
    OAMessageLovInputBean Dept = (OAMessageLovInputBean)oadescriptiveflexbean.findChildRecursive("ReqHeaderDFF1");
    oapagecontext.writeDiagnostics(this,"Dept value is : " +Dept, 1);
    if(Dept!=null){
        Dept.setRequired("yes");
    }
   
    OAMessageLovInputBean Appr = (OAMessageLovInputBean)oadescriptiveflexbean.findChildRecursive("ReqHeaderDFF2");
        oapagecontext.writeDiagnostics(this,"Appr value is : " +Appr, 1);
        if(Appr!=null){
            Appr.setRequired("yes");
        }
   
    }
 
}
************************************************************************
Ref
https://sites.google.com/site/shareapps4u/learning-topic/workflow-tutorial/how-to-send-notification-to-multiple-user

OAF PVO

PVO (Properties View Object) is required to enable PPR (Partial Page Rendering) in OAF Page including transient attribute. Transient attribute is required to know the visible property of attribute.

Below is SPEL (Simplest Possible Expression Language) syntax used
${oa.viewobjectName.attributeName}


Issues with Date format

In Concurrent programs accept Date parameters as Varchar2 and use FND_CONC_DATE.STRING_TO_DATE function to convert it back to Date format.