Showing posts with label OA Framework. Show all posts
Showing posts with label OA Framework. Show all posts

Thursday, September 17, 2015

Oracle Application Framework | Create Popup window


How to add popup window in OA Framework.

1) Create Image bean on your page or region.
    Lets say you have created Image bean having id DetailsIMG

2) Create a page or region that you want to open as a popup.

3) Add following code in process request method of main page's controller.

 /** Opening the popup
      */
          OAImageBean img = (OAImageBean) webBean.findChildRecursive("DetailsIMG");
          String url = "/xxtst/oracle/apps/per/selfservice/job/webui/XxTstPG";
//          String Popupparams = "P_OrderNo={@OrderNo}&P_EmpCi={@EmpCi}";
        
//          String page = url + "&retainAM=Y&fndOAJSPinEmbeddedMode=y" + "&" + Popupparams;
          String page = url + "&retainAM=Y&fndOAJSPinEmbeddedMode=y";
          String destURL = OAWebBeanConstants.APPS_HTML_DIRECTORY + OAWebBeanConstants.APPLICATION_JSP + "?" + OAWebBeanConstants.JRAD_PAGE_URL_CONSTANT + "=" + page;
        
          OABoundValueEmbedURL jsBound = new OABoundValueEmbedURL(img, "openWindow(self, '", destURL, "' , 'longTipWin', {width:750, height:450}, true); return false;");
        
          img.setAttributeValue(OAWebBeanConstants.ON_CLICK_ATTR, jsBound);

4) To close the popup add link bean or button on popup page or region and add below code on Destination URI property.

javascript:opener.submitForm('DefaultFormName',0,{XXX:' abc'});window.close();

Note: You can pass parameters also to main page.




Monday, September 14, 2015

Oracle E-Business Suite R12.2.x | How to integrating OA Framework and BI Publisher



Controller Code
==============================
//Import below classes in controller

import oracle.xdo.XDOException;
import oracle.xdo.template.FOProcessor;
import oracle.xdo.template.RTFProcessor;
import oracle.cabo.ui.data.DataObject;
import oracle.xml.parser.v2.XMLNode;


/*
 * Handles functionality of Print button
 */

     if("printRpt".equals(pageContext.getParameter(EVENT_PARAM))) {

                DataObject sessionDictionary = pageContext.getNamedDataObject("_SessionParameters");
                HttpServletResponse response = (HttpServletResponse)sessionDictionary.selectValue(null,"HttpServletResponse");

                // Set the Output Report File Name and Content Type
                String contentDisposition = "attachment; filename=EmployeeReport.pdf";
                response.setHeader("Content-Disposition",contentDisposition);
                response.setCharacterEncoding("UTF-8");
                response.setContentType("application/pdf");

                  try {
                     
                      ServletOutputStream os = response.getOutputStream();

                //Calling RTF Processor
                //RTF Processor generate XSL

                      RTFProcessor rtfProcessor = new RTFProcessor("/u01/oracle/ERPDEV/fs2/EBSapps/comn/java/classes/xxmoh/oracle/apps/per/selfservice/hrorder/template/TEMPLATE_SOURCE_PER_XXMOH_HR_SUSP_ORD_ar_SA_OAF.rtf");

                      ByteArrayOutputStream xlsOutputStream = new ByteArrayOutputStream();
                      rtfProcessor.setOutput(xlsOutputStream);
                      rtfProcessor.process();
                     
                       ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();

                             byte bufutf[] ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n".getBytes();
                             localByteArrayOutputStream.write(bufutf);
                             byte buf[] = "<XXMainPG>".getBytes();
                             localByteArrayOutputStream.write(buf);
                           
                            Serializable[] params = {pageContext.getParameter("P_OrderSeq")};                         
                            XMLNode Nodes = (XMLNode)am.invokeMethod("getPrintDataXML", params);
                            
                             Nodes.print(localByteArrayOutputStream);
                            
                             byte buf2[] = "</XXMainPG>".getBytes();
                             localByteArrayOutputStream.write(buf2);

// To generate file

                      ByteArrayInputStream xmlInputStream = new ByteArrayInputStream(localByteArrayOutputStream.toByteArray());
                     
                      System.out.println("XML : "+localByteArrayOutputStream.toString());
                    
//Calling FO Processor
//FO processor take XML data and RTF as XSL and generate PDF output
                      FOProcessor processor = new FOProcessor();
                     
                      ByteArrayOutputStream pdfOutputStream = new ByteArrayOutputStream();

                      processor.setData(xmlInputStream); //set xml input Stream
                      ByteArrayInputStream xlsInputStream = new ByteArrayInputStream(xlsOutputStream.toByteArray());
                      processor.setTemplate(xlsInputStream); //set xsl input file
                      processor.setOutput(pdfOutputStream);
                      processor.setOutputFormat(FOProcessor.FORMAT_PDF);
                     
                      processor.generate();
                     
     // Write the PDF Report to the HttpServletResponse object and flush.
                      byte[] b = pdfOutputStream.toByteArray();
                      response.setContentLength(b.length);
                      os.write(b, 0, b.length);
                      os.flush();
                      os.close();
                      pdfOutputStream.flush();
                      pdfOutputStream.close();
                     
                     
                  } catch (IOException e) {
                      // TODO
                      e.printStackTrace();
                  } catch (XDOException e) {
                        // TODO
                        e.printStackTrace();
                    }
                }



Application Module Code
==============================
import oracle.jbo.XMLInterface;
import oracle.xml.parser.v2.XMLNode;

    public XMLNode getPrintDataXML(String P_SeqNo) {

        try {

           OAViewObject vo = (OAViewObject)findViewObject("XxtstRptVO");

               vo.setWhereClause(null);
               vo.setWhereClause(" ORDER_SEQ = " + P_SeqNo);

             // Exceute VO
              vo.executeQuery();

              XMLNode xmlNode = (XMLNode)vo.writeXML(4, XMLInterface.XML_OPT_ALL_ROWS);

              return xmlNode;

             } catch (Exception e) {

               throw new OAException(e.getMessage() + "Custom Error in XML generation");
            }
 
      }



Oracle E-Business Suite R12.1.x | Integrating BI Publisher and OA Framework

Controller Code
================================================
// Import below classes in Controller
import java.util.Properties;import oracle.apps.xdo.oa.common.DocumentHelper;
import java.io.ByteArrayOutputStream;
import java.io.Serializable;
import java.util.Properties;
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.xdo.oa.common.DocumentHelper;
import oracle.apps.xdo.oa.schema.server.Template;
import oracle.jbo.XMLInterface;
import oracle.jbo.domain.BlobDomain;
import oracle.xml.parser.v2.XMLNode;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import oracle.apps.xdo.XDOException;
import oracle.apps.xdo.oa.schema.server.TemplateHelper;
import oracle.cabo.ui.data.DataObject;
import oracle.jbo.XMLInterface;
import oracle.apps.xdo.oa.schema.server.Template;
import oracle.jbo.domain.BlobDomain;

 ....
 ....
 ....

  public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
  {
    super.processFormRequest(pageContext, webBean);


      OAApplicationModule am = pageContext.getApplicationModule(webBean);


    ////////////////////////////////////////
    ///////// For RTF Template
    ////////////////////////////////////////
               
    if ((pageContext.getParameter("BTNPrintReport") != null))  {

      String TemplateApplicationShortName = "PER";
      String TemplateCode = "XXARMSEMP"; //"XXARMS_IR_InterviewFeedback" ;

      Number LeadId = 494;
      Serializable aserializable2[] = {LeadId.toString()};
      Class aclass2[] = {String.class };
      BlobDomain result = (BlobDomain) am.invokeMethod("getXMLData",aserializable2,aclass2);

// Get the HttpServletResponse object from the PageContext. The report output is written to HttpServletResponse.
       DataObject sessionDictionary = (DataObject)pageContext.getNamedDataObject("_SessionParameters");
       HttpServletResponse response = (HttpServletResponse)sessionDictionary.selectValue(null,"HttpServletResponse");
       try {
       ServletOutputStream os = response.getOutputStream();

// Set the Output Report File Name and Content Type
      String contentDisposition = "attachment;filename=EmpReport.pdf";
      response.setHeader("Content-Disposition",contentDisposition);
      response.setContentType("application/pdf");
      ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
      outputStream = (ByteArrayOutputStream)result.getOutputStream();

      ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
      ByteArrayOutputStream pdfFile = new ByteArrayOutputStream();

//Generate the PDF Report.
       TemplateHelper.processTemplate(
       ((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getAppsContext(),
       TemplateApplicationShortName,
       TemplateCode,
       ((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getUserLocale().getLanguage(),
       ((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getUserLocale().getCountry(),
       inputStream,
       TemplateHelper.OUTPUT_TYPE_PDF,
       null,
       pdfFile);

// Write the PDF Report to the HttpServletResponse object and flush.
      byte[] b = pdfFile.toByteArray();
      response.setContentLength(b.length);
      os.write(b, 0, b.length);
      os.flush();
      os.close();
      }
      catch(Exception e)
      {
      response.setContentType("text/html");
      throw new OAException(e.getMessage(), OAException.ERROR);
      }
      pageContext.setDocumentRendered(false);

     }

  }




Application Module Code
================================================
 
    public BlobDomain getXMLData(String P_VacancyId)
    {
    BlobDomain blobDomain = new BlobDomain();
    OADBTransaction oadbtransaction = getOADBTransaction();
    try
    {
    String dataDefCode = "XXARMSEMP"; //"XXARMSInterviewFeedback" ;
    String dataDefApp = "PER";
    String outputString = null;
    DataTemplate datatemplate = new DataTemplate(((OADBTransactionImpl)getOADBTransaction()).getAppsContext(), dataDefApp, dataDefCode );
//    Hashtable parameters = new Hashtable();
//    parameters.put("P_VacancyId",P_VacancyId);
//    datatemplate.setParameters(parameters);
    datatemplate.setOutput(blobDomain.getBinaryOutputStream());
    datatemplate.processData();
    }
    catch(SQLException e)
    {
    throw new OAException("SQL Error=" + e.getMessage(),OAException.ERROR);
    }
    catch (XDOException e)
    {
    throw new OAException("XDOException" + e.getMessage(),OAException.ERROR);
    }
    catch(Exception e)
    {
    throw new OAException("Exception" + e.getMessage(),OAException.ERROR);
    }
    return blobDomain;
    }

Wednesday, September 2, 2015

Oracle E-Business Suite R12 | How to get Customization, Extension and Personalization details


There is a standard package JDR_UTILS. using this package we can, 
  - Get the customization details
  - Get the list of customization in particular package
  - Delete the existing customization
  - Print the xml of page or region
  - Print translation
  - Export document etc

This package includes procedures and function like,
  • JDR_UTILS.listDocuments
  • JDR_UTILS.listCustomizations
  • JDR_UTILS.printDocument
  • JDR_UTILS.deleteDocument
  • JDR_UTILS.printTranslations
JDR_UTILS.listDocuments

This is used to list of all OA Framework documents in the given path/module. It provides list of all the pages/extensions/personalizations. It takes two parameters: 1. Full/Partial path of MDS repository 2. TRUE will direct the API to list all Child Documents underneath that tree path
Example: Begin
  JDR_UTILS.listContents (p_path => '/oracle/apps/per/selfservice/',
                                      p_recursive => TRUE);
End;

/

JDR_UTILS.listCustomizations

To list all Extensions/Personalizations/Contents of a specific Object (i.e. Page or Region).
Example: Begin
  JDR_UTILS.listCustomizations(p_document => '/xxhr/oracle/apps/per/selfservice/test/webui/XXEmpQueryPG');
End;

 /

JDR_UTILS.printDocument

To print the contents/xml of a specific object (i.e. Page or Region). 

Example: Begin
  JDR_UTILS.printDocument(p_document => 'xxhr/oracle/apps/per/selfservice/test/webui/XXEmpQueryPG');
End;

/

Using above example code we can print the XML of given Page or Region.

JDR_UTILS.deleteDocument

Using this we can delete a Page, Personalization and Extension. 
Example:
Begin    JDR_UTILS.deletedocument(p_document => '/oracle/apps/icx/por/server/customizations/InvoiceHeaderVO');
End;
/

Above example is to delete the VO extension.

JDR_UTILS.printTranslations

To print the translations for the document in XLIFF format

Example:
Begin 
  JDR_UTILS.printTranslations (p_document => 'xxhr/oracle/apps/per/selfservice/test/webui/XXEmpQueryPG', p_language => 'AR');
End;
/


There are few more procedures that can also be useful like,
JDR_UTILS.exportDocument : Export the XML for a document
JDR_UTILS.saveTranslations : Saves the specified translations for the specified document.