Future dates approved leaves deletion rights given to users

Hi All,
I need to resolve below three issues for ESS leaves.
1) Future dates applied leaves if it is approved or not, the deletion rights can be given to employees.
2) Applied leaves which is of backdate not approved by the manager, the deletion rights can be given to employees.
3) Applied leaves is of backdate and approved, deletion cannot be given to employee.
Defaultly ESS allows to work 1 point .But i'm trying to resolve 2 and 3  points following below location i checked No Deletion of leave permitted Check box.After these settings 2 & 3 points are working 1 point is not working.
spro>employee self service>service specific settings>working time>leave Request-->Processing Processes -->specify Processing Processes for types of leave >Define Absences/Processing Processes>No Deletion of leave permitted(Check box)
Please help on this.
Regards
Satya.

customisation which you referred to in table V_t554s_web
allows absences to be deleted once they are stored in IT2001.
No Deletion of Leave Permitted
Specifies for each type of leave whether employees are permitted to delete absences that are stored in the Absences infotype (2001).
Your scenario is dependent on status and dates, so you would have to apply a check in the exit and call through the
badi.
http://wiki.sdn.sap.com/wiki/display/ERPHCM/ValidationsforESSLeaverequest
http://wiki.sdn.sap.com/wiki/display/ERPHCM/LeaverequestConfiguration+steps
http://www.sap-press.de/download/dateien/2512/sappress_configurung_and_customizing_employee_manager.pdf

Similar Messages

  • Issue in Deletion of approved leave request using ws12300111

    We are using Std workflow 12300111 and its working fine for new leave request and change leave request but when raise request for deletion of approved leave request the workitem created and info type  updated automatically without seeking approval from manager. When you check the workflow log the agent determination happend and updated the info type 2001.  This issue is in production system , At the same time if we tested the same scenario in QAS its working fine, ie its asking approval from Manager.
    Pl help on this issue.
    Regards,
    Muthu

    This is correct and intended functionality, NO WF IS triggered.
    Let me explain, There is no WF triggered when APPROVED (NOT POSTED)
    absence is deleted. This is standard, You can trigger a mail
    which You had already done so. But there will be no WF triggered.
    So if you notice
    when the leave request is in status POSTED, it calls the workflow,
    but if the leave request is not POSTED yet, it is doesnt call the
    workflow.
    There is no standard Workflow triggered when the Approved leave request
    has been deleted by the employee!
    This step should be configured by the customers as when to trigger a
    mail to the Admin or Supervisor, when deletion or cancellation happens.
    The workflow template is a simple template, You can modify
    to suit their needs.

  • Leave Deletion requests get auto-approved

    Hi,
    If an approved leave is deleted in calendar view then it does not go for approval to manager. Instead it gets deleted immediately
    What is the reason for this ? Std behaviour is required that the deleted leave should appear in red color and when manager approves it, it should be deleted and turned to white color in the calender to indicate that the leave is deleted.
    kindly help
    thanks
    b

    Hi B,
    I think it depends on the leave you mentioned posted or not.
    As far as I know the flow of leave approval is look like this:
    1) User submit leave request
    2) Approver approve
    3) Schedule job post approved leave to ERP
    It is marked as approved in both stage 2 and 3, but if the leave is still at stage 2, user can delete the leave without approval, while approval is required at stage 3.
    Regards
    Bill

  • HR - Delete approved leave with no impact to quota

    Hi Gurus,
    Please help, I have the following issue:
    1. An employee requests leave and the leave is approved, the quota is deducted correctly.
    2. On approval, the employee then decides to make reversal/deletes the approved leave.
    2.1 Now the problem is that, even before the leave is approved/rejected by the manager, the
    system is considering the cancellation as if it was already approved.
    3. How do I prevent the leave from being deducted from the quota before approval?
    4. Business would prefer that the leave is only deducted once the manager has approved the reversal/deletion.
    PS: Please note that this should only be applicable to leave requests that have been previously approved by the manager, then later reversed/deleted by the employee.
    Your help is very much appreciated . . . . .
    Vuyo
    Edited by: Vuyolwethu Kopo on Jun 9, 2009 10:11 AM

    It isn’t clear what your problem really is, and you appear to believe that Mail is just for .Mac accounts, which is not the case. Mail is a standard POP & IMAP mail client that can be used to access any mail account that provides POP or IMAP access. It doesn’t have to be a .Mac account.
    Anyway, the following piece of software may be what you want, rather than deleting Mail — which you shouldn’t do nor feel the need to do:
    http://www.belkadan.com/webmailer/

  • Stale data error while deleting a record

    Hi
    My design of this development is as follow...
    1. Search Page in which users give some search criteria and results will be displayed in the results region on the same page. For each results record I have two buttons like 'Update' and 'Delete' so that users can delete the record or can update the record. For update i created a one more page where users can able to edit and save the data. I have two AM one for Search Page and one for Update Page.
    Please find more details below.
    intfEO  based on PO_REQUISITIONS_INTERFACE_ALL
    errorEO  based on PO_INTERFACE_ERRORS
    updateEO based on PO_REQUISITIONS_INTERFACE_ALL
    VOs
    intfVO based on intfEO and errorEO
    updateVO based on updateEO
    AM
    intfAM based on intfVO
    updateAM based on updateVO
    Pages
    searchPG based on intfAM
    updatePG based on updateAM
    Suppose I have one record in interface table with corresponding error record in error table.When users given the search criteria and hit enter they found a record. It means i have one record in the interface having one error record in the error table and both tables have same transaction id (primary key). So here user first try to update the record and it is working. After update he try to delete a record then I am getting below error. Please note that I am not getting this error when if i directly delete the record with out doing any update before delete. When ever users click on update icon then update PG will open and when users click on Apply button then data is getting updated in the database and page will forward to the search page.
    Unable to perform transaction on the record.
    Cause: The record contains stale data. The record has been modified by another user.
    Action: Cancel the transaction and re-query the record to get the new data.
    My UpdatePage Controller
    /*===========================================================================+
    |   Copyright (c) 2001, 2005 Oracle Corporation, Redwood Shores, CA, USA    |
    |                         All rights reserved.                              |
    +===========================================================================+
    |  HISTORY                                                                  |
    +===========================================================================*/
    package powl.oracle.apps.xxpowl.po.requisition.webui;
    import com.sun.java.util.collections.HashMap;
    import com.sun.rowset.internal.Row;
    import java.io.Serializable;
    import oracle.apps.fnd.common.MessageToken;
    import oracle.apps.fnd.common.VersionInfo;
    import oracle.apps.fnd.framework.OAApplicationModule;
    import oracle.apps.fnd.framework.OAException;
    import oracle.apps.fnd.framework.OAViewObject;
    import oracle.apps.fnd.framework.webui.OAControllerImpl;
    import oracle.apps.fnd.framework.webui.OADialogPage;
    import oracle.apps.fnd.framework.webui.OAPageContext;
    import oracle.apps.fnd.framework.webui.OAWebBeanConstants;
    import oracle.apps.fnd.framework.webui.beans.OAWebBean;
    import oracle.apps.fnd.framework.webui.beans.form.OASubmitButtonBean;
    import oracle.apps.fnd.framework.webui.beans.message.OAMessageDateFieldBean;
    import oracle.apps.fnd.framework.webui.beans.message.OAMessageTextInputBean;
    //import oracle.apps.fnd.oam.diagnostics.report.Row;
    import oracle.apps.icx.por.common.webui.ClientUtil;
    import powl.oracle.apps.xxpowl.po.requisition.server.xxpowlPOReqIntfUpdateAMImpl;
    import powl.oracle.apps.xxpowl.po.requisition.server.xxpowlPOReqIntfUpdateEOVOImpl;
    * Controller for ...
    public class xxpowlPOReqIntfAllUpdatePageCO extends OAControllerImpl
      public static final String RCS_ID="$Header$";
      public static final boolean RCS_ID_RECORDED =
            VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
       * Layout and page setup logic for a region.
       * @param pageContext the current OA page context
       * @param webBean the web bean corresponding to the region
      public void processRequest(OAPageContext pageContext, OAWebBean webBean)
        super.processRequest(pageContext, webBean);
         xxpowlPOReqIntfUpdateAMImpl am = (xxpowlPOReqIntfUpdateAMImpl)pageContext.getApplicationModule(webBean);
          xxpowlPOReqIntfUpdateEOVOImpl UpdateVO =(xxpowlPOReqIntfUpdateEOVOImpl)am.findViewObject("xxpowlPOReqIntfUpdateEOVOImpl");
          String newvalue = (String)pageContext.getSessionValue("testValue");     
          System.out.println("Transaction ID from processRequest UpdateCO from testValue field:"+newvalue);
          String transactionid = pageContext.getParameter("HashmapTransacitonid");
          System.out.println("Transaction ID from processRequest Hash Map in UpdateCO :"+transactionid);
          String errorcolumn = pageContext.getParameter("HashmapErrorcolumn");
          System.out.println("Error Column Name from processRequest Hash Map in UpdateCO :"+errorcolumn);
          String errormsg = pageContext.getParameter("HashmapErrormessage");
          System.out.println("Error Message from processRequest Hash Map in UpdateCO :"+errormsg);
          String readyonly = pageContext.getParameter("HashmapReadonly");
          System.out.println("Read Only value from processRequest Hash Map in UpdateCO :"+readyonly);
          if (transactionid !=null & !"".equals(transactionid)) { 
         /* Passing below four parameters to the Update Page */
          Serializable amParams[] = new Serializable[]{transactionid,readyonly,errorcolumn,errormsg} ;
          pageContext.getRootApplicationModule().invokeMethod("executexxpowlPOReqIntfUpdateEOVO", amParams);
       * Procedure to handle form submissions for form elements in
       * a region.
       * @param pageContext the current OA page context
       * @param webBean the web bean corresponding to the region
      public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
        super.processFormRequest(pageContext, webBean);      
         OAApplicationModule am = pageContext.getApplicationModule(webBean);
          if (pageContext.getParameter("ApplyButton") != null)
            System.out.println("Inside ApplyButton method in UpdatePageCO");
            OAViewObject vo = (OAViewObject)am.findViewObject("xxpowlPOReqIntfUpdateEOVO");
            String transactionid = pageContext.getParameter("HashmapTransacitonid");
            System.out.println("Transaction ID from processFormRequest Hash Map in UpdateCO-ApplyButton method :"+transactionid);
            am.invokeMethod("apply");
              pageContext.forwardImmediately("OA.jsp?page=/powl/oracle/apps/xxpowl/po/requisition/webui/xxpowlPOReqIntfAllPG",
                                                     null,
                                                     OAWebBeanConstants.KEEP_MENU_CONTEXT,
                                                     null,
                                                     null,
                                                     true,
                                                     OAWebBeanConstants.ADD_BREAD_CRUMB_NO);
           else if (pageContext.getParameter("CancelButton") != null)
            am.invokeMethod("rollback");
            pageContext.forwardImmediately("OA.jsp?page=/powl/oracle/apps/xxpowl/po/requisition/webui/xxpowlPOReqIntfAllPG",
                                                   null,
                                                   OAWebBeanConstants.KEEP_MENU_CONTEXT,
                                                   null,
                                                   null,
                                                   true,
                                                   OAWebBeanConstants.ADD_BREAD_CRUMB_NO);
    UpdatePageAMImpl.java
    package powl.oracle.apps.xxpowl.po.requisition.server;
    import oracle.apps.fnd.common.MessageToken;
    import oracle.apps.fnd.framework.OAException;
    import oracle.apps.fnd.framework.OARow;
    import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
    import oracle.apps.fnd.framework.OAViewObject;
    import oracle.apps.inv.appsphor.order.server.XxapOrderHeaderVOImpl;
    import oracle.jbo.Transaction;
    // ---    File generated by Oracle ADF Business Components Design Time.
    // ---    Custom code may be added to this class.
    // ---    Warning: Do not modify method signatures of generated methods.
    public class xxpowlPOReqIntfUpdateAMImpl extends OAApplicationModuleImpl {
        /**This is the default constructor (do not remove)
        public xxpowlPOReqIntfUpdateAMImpl() {
        /**Container's getter for xxpowlPOReqIntfUpdateEOVO
        public xxpowlPOReqIntfUpdateEOVOImpl getxxpowlPOReqIntfUpdateEOVO() {
            return (xxpowlPOReqIntfUpdateEOVOImpl)findViewObject("xxpowlPOReqIntfUpdateEOVO");
        /**Sample main for debugging Business Components code using the tester.
        public static void main(String[] args) {
            launchTester("powl.oracle.apps.xxpowl.po.requisition.server", /* package name */
          "xxpowlPOReqIntfUpdateAMLocal" /* Configuration Name */);
    /*  // Added by 
        public void execute_update_query(String TransactionID) {
        xxpowlPOReqIntfUpdateEOVOImpl vo = getxxpowlPOReqIntfUpdateEOVO();
        vo.initQuery(TransactionID);
    // Added by  , this will not call bec changed the logic and so now the update button enabled on search results page
    // and this method will not called
    public void pageInEditMode (String transactionID, String readOnlyFlag, String ErrorColumn,
                                                                           String ErrorMessage)
        System.out.println("Transaction Id from pageInEditMode in UpdatePGAMImpl.java: "+transactionID);
        System.out.println("xxReadOnly from pageInEditMode in UpdatePGAMImpl.java: "+readOnlyFlag);
        // Get the VO
        xxpowlPOReqIntfUpdateEOVOImpl updateVO = getxxpowlPOReqIntfUpdateEOVO();
        //Remove the where clause that was added in the previous run
        updateVO.setWhereClause(null);
        //Remove the bind parameters that were added in the previous run.
        updateVO.setWhereClauseParams(null);
        //Add where clause
        // updateVO.addWhereClause(" TRANSACTION_ID = :1 ");
        //Bind transactionid to the where clause.
         // updateVO.setWhereClauseParam(1, transactionID); // this will not work bec it will start with zero from from 1
          updateVO.setWhereClauseParam(0, transactionID);
        //Execute the query.
        updateVO.executeQuery();
        xxpowlPOReqIntfUpdateEOVORowImpl currentRow = (xxpowlPOReqIntfUpdateEOVORowImpl)updateVO.next();
        // Assiging the transient varaibles
        currentRow.setxxErrorMessage(ErrorMessage);
        currentRow.setxxErrorColumn(ErrorColumn);
        if ("N".equals(readOnlyFlag))
              /* Make the attribute to 'False so that all fields will be displayed in Edit Mode because we used this
               xxReadOnly as SPEL  */
               currentRow.setxxReadOnly(Boolean.FALSE);
       public void executexxpowlPOReqIntfUpdateEOVO(String transactionID, String xxReadyOnly, String ErrorColumn,
                                                                                              String ErrorMessage)
           System.out.println("Transaction Id from executexxpowlPOReqIntfUpdateEOVO in UpdatePGAMImpl.java: "+transactionID);
           System.out.println("xxReadOnly from executexxpowlPOReqIntfUpdateEOVO in UpdatePGAMImpl.java: "+xxReadyOnly);
           System.out.println("Error Message from executexxpowlPOReqIntfUpdateEOVO in UpdatePGAMImpl.java: "+ErrorColumn);
           System.out.println("Error Column from executexxpowlPOReqIntfUpdateEOVO in UpdatePGAMImpl.java: "+ErrorMessage);
         // Get the VO
         xxpowlPOReqIntfUpdateEOVOImpl updateVO = getxxpowlPOReqIntfUpdateEOVO();
         //xxpowlPOReqIntfUpdateEOVORowImpl updaterowVO = xxpowlPOReqIntfUpdateEOVO();
       //not working
       //    OARow row = (OARow)updateVO.getCurrentRow();
       //    row.setAttribute("xxReadOnly", Boolean.TRUE);
    // updateVO.putTransientValue('XXXXX',x);
         //Remove the where clause that was added in the previous run
         updateVO.setWhereClause(null);
         //Remove the bind parameters that were added in the previous run.
         updateVO.setWhereClauseParams(null);
         //Add where clause
         // updateVO.addWhereClause(" TRANSACTION_ID = :1 ");
         //Bind transactionid to the where clause.
          // updateVO.setWhereClauseParam(1, transactionID); // this will not work bec it will start with zero from from 1
           updateVO.setWhereClauseParam(0, transactionID);
        // updateVO.setWhereClauseParam(1, ErorrColumn); 
         //Execute the query.
         updateVO.executeQuery();
         /* We want the page should be read only initially so after executing the VO with above command
            and if you use next() it will go to the first record among the
            fetched records. If you want to iterate for all the records then use iterator */
            /* Using Iterator
             while(updateVO.hasNext()) {  // this will check after execute Query above command if it has any rows
              xxpowlPOReqIntfUpdateEOVORowImpl currentRow = (xxpowlPOReqIntfUpdateEOVORowImpl)updateVO.next();
              /* above line next() will take the control of the first record */
          /*     currentRow.setxxErrorMessage(ErrorMessage);
                 currentRow.setxxErrorColumn(ErrorColumn);
               if ("Y".equals(xxReadyOnly))
                      currentRow.setxxReadOnly(Boolean.TRUE);                 
             } // this while loop will loop till end of all the fetched records
         xxpowlPOReqIntfUpdateEOVORowImpl currentRow = (xxpowlPOReqIntfUpdateEOVORowImpl)updateVO.next();
      // Assiging the transient varaibles
      currentRow.setxxErrorMessage(ErrorMessage);
      currentRow.setxxErrorColumn(ErrorColumn);
        /* Make the attribute to 'TRUE' so that all fields will be displayed as READ ONLY because we used this
           xxReadOnly as SPEL
           if ("Y".equals(xxReadyOnly))
                  currentRow.setxxReadOnly(Boolean.TRUE);            
      //Added by  and this methiod will get called from UpdatePG Process Form Request controller  
         public void rollback()
           Transaction txn = getTransaction();
           if (txn.isDirty())
             txn.rollback();
        public void apply()
            //OAViewObject vo1 = (OAViewObject)getxxpowlPOReqIntfUpdateEOVO();
            //Number chargeAccountID = vo1.get
          getTransaction().commit();      
          OAViewObject vo = (OAViewObject)getxxpowlPOReqIntfUpdateEOVO();
          if (!vo.isPreparedForExecution())
           vo.executeQuery();
    SearchPG AM
    package powl.oracle.apps.xxpowl.po.requisition.server;
    import oracle.apps.fnd.framework.OAViewObject;
    import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
    import oracle.jbo.RowSetIterator;
    import oracle.jbo.Transaction;
    import oracle.jbo.domain.Number;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlErrosLovVOImpl;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlInterfaceSouceCodeLovVOImpl;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlItemSegment1LovVOImpl;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlOrgLovVOImpl;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlReferenceNumberLovVOImpl;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlRequestIdLovVOImpl;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlRequisitionTypeLovVOImpl;
    // ---    File generated by Oracle ADF Business Components Design Time.
    // ---    Custom code may be added to this class.
    // ---    Warning: Do not modify method signatures of generated methods.
    public class xxpowlPOReqIntfAllAMImpl extends OAApplicationModuleImpl {
        /**This is the default constructor (do not remove)
        public xxpowlPOReqIntfAllAMImpl() {
        /**Container's getter for xxpowlPOReqIntfAllVO
        public xxpowlPOReqIntfAllVOImpl getxxpowlPOReqIntfAllVO() {
            return (xxpowlPOReqIntfAllVOImpl)findViewObject("xxpowlPOReqIntfAllVO");
        /**Sample main for debugging Business Components code using the tester.
        public static void main(String[] args) {
            launchTester("powl.oracle.apps.xxpowl.po.requisition.server", /* package name */
          "xxpowlPOReqIntfAllAMLocal" /* Configuration Name */);
        /**Container's getter for xxpowlRequestIdLovVO
        public xxpowlRequestIdLovVOImpl getxxpowlRequestIdLovVO() {
            return (xxpowlRequestIdLovVOImpl)findViewObject("xxpowlRequestIdLovVO");
        /**Container's getter for xxpowlErrosLovVO
        public xxpowlErrosLovVOImpl getxxpowlErrosLovVO() {
            return (xxpowlErrosLovVOImpl)findViewObject("xxpowlErrosLovVO");
        /**Container's getter for xxpowlOrgLovVO
        public xxpowlOrgLovVOImpl getxxpowlOrgLovVO() {
            return (xxpowlOrgLovVOImpl)findViewObject("xxpowlOrgLovVO");
      //Start Adding by Lokesh
      //This method wil get invoked from the search results page Process Request
       public void rollbackItem()
         Transaction txn = getTransaction();
         if (txn.isDirty())
           txn.rollback();
      //This method will invoked from Controller page when user click Yes on delete confirmtion page from Search Results Page
       public void deleteItem(String trasnsactionID)
         Number rowToDelete = new Number(Integer.parseInt(trasnsactionID));      
         OAViewObject vo = (OAViewObject)getxxpowlPOReqIntfAllVO();
         xxpowlPOReqIntfAllVORowImpl row = null;
         int fetchedRowCount = vo.getFetchedRowCount();
       //  System.out.print(fetchedRowCount);
         System.out.println("No of row fetched on delete method :"+fetchedRowCount);
         RowSetIterator deleteIter = vo.createRowSetIterator("deleteIter");
           System.out.println("1 :");
         if (fetchedRowCount > 0)
             System.out.println("2 :");
           deleteIter.setRangeStart(0);
             System.out.println("3 :");
           deleteIter.setRangeSize(fetchedRowCount);
             System.out.println("4 :");
           for (int i = 0; i < fetchedRowCount; i++)
               System.out.println("5 :");
             row = (xxpowlPOReqIntfAllVORowImpl)deleteIter.getRowAtRangeIndex(i);
               System.out.println("6 :");
             Number PK = row.getTransactionId();
               System.out.println("7 :");
             if (PK.compareTo(rowToDelete) == 0)
                 System.out.println("8 :");
               row.remove();
                 System.out.println("9 :");
               getTransaction().commit();
                 System.out.println("10 :");
               break;
                 //System.out.println("11 :");
           System.out.println("11 :");
         deleteIter.closeRowSetIterator();
           System.out.println("12 :");
        /**Container's getter for xxpowlInterfaceSouceCodeLovVO
        public xxpowlInterfaceSouceCodeLovVOImpl getxxpowlInterfaceSouceCodeLovVO() {
            return (xxpowlInterfaceSouceCodeLovVOImpl)findViewObject("xxpowlInterfaceSouceCodeLovVO");
        /**Container's getter for xxpowlRequisitionTypeLovVO
        public xxpowlRequisitionTypeLovVOImpl getxxpowlRequisitionTypeLovVO() {
            return (xxpowlRequisitionTypeLovVOImpl)findViewObject("xxpowlRequisitionTypeLovVO");
        /**Container's getter for xxpowlReferenceNumberLovVO
        public xxpowlReferenceNumberLovVOImpl getxxpowlReferenceNumberLovVO() {
            return (xxpowlReferenceNumberLovVOImpl)findViewObject("xxpowlReferenceNumberLovVO");
        /**Container's getter for xxpowlItemSegment1LovVO
        public xxpowlItemSegment1LovVOImpl getxxpowlItemSegment1LovVO() {
            return (xxpowlItemSegment1LovVOImpl)findViewObject("xxpowlItemSegment1LovVO");
    Search Page Controller
    /*===========================================================================+
    |   Copyright (c) 2001, 2005 Oracle Corporation, Redwood Shores, CA, USA    |
    |                         All rights reserved.                              |
    +===========================================================================+
    |  HISTORY                                                                  |
    +===========================================================================*/
    package powl.oracle.apps.xxpowl.po.requisition.webui;
    import com.sun.java.util.collections.HashMap;
    //import com.sun.java.util.collections.Hashtable;
    import java.util.Hashtable;
    //import java.util.HashMap;
    import java.io.Serializable;
    import javax.servlet.jsp.PageContext;
    import oracle.apps.fnd.common.MessageToken;
    import oracle.apps.fnd.common.VersionInfo;
    import oracle.apps.fnd.framework.OAApplicationModule;
    import oracle.apps.fnd.framework.OAException;
    import oracle.apps.fnd.framework.webui.OAControllerImpl;
    import oracle.apps.fnd.framework.webui.OADialogPage;
    import oracle.apps.fnd.framework.webui.OAPageContext;
    import oracle.apps.fnd.framework.webui.OAWebBeanConstants;
    import oracle.apps.fnd.framework.webui.TransactionUnitHelper;
    import oracle.apps.fnd.framework.webui.beans.OAWebBean;
    * Controller for ...
    public class xxpowlPOReqIntfAllSearchPageCO extends OAControllerImpl
      public static final String RCS_ID="$Header$";
      public static final boolean RCS_ID_RECORDED =
            VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
       * Layout and page setup logic for a region.
       * @param pageContext the current OA page context
       * @param webBean the web bean corresponding to the region
      public void processRequest(OAPageContext pageContext, OAWebBean webBean)
        super.processRequest(pageContext, webBean);
        //Added by Lokesh
          OAApplicationModule am = pageContext.getApplicationModule(webBean);
         if (TransactionUnitHelper.isTransactionUnitInProgress(pageContext, "updateRecord", false)) {
               am.invokeMethod("rollbackItem");
               TransactionUnitHelper.endTransactionUnit(pageContext, "updateRecord");
       * Procedure to handle form submissions for form elements in
       * a region.
       * @param pageContext the current OA page context
       * @param webBean the web bean corresponding to the region
      public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
        super.processFormRequest(pageContext, webBean);
             String userClicked = pageContext.getParameter("event");
             System.out.println("Event from processFormRequest in SearchPageCO :"+userClicked);
           System.out.println("Parametere Names are :- \t" + pageContext.getParameter("UpdateImage"));
           System.out.println("Parametere Names are :- \t" + pageContext.getParameter("event"));
         if (pageContext.getParameter("event") != null &&
             pageContext.getParameter("event").equalsIgnoreCase("Update")) { 
             String ReqTransactionId=(String)pageContext.getParameter("transacitonidParam");
             String errorcolumn=(String)pageContext.getParameter("errorcolumnParam");
             String errormsg=(String)pageContext.getParameter("errormessageParam");
             String readyonly="Y"; //(String)pageContext.getParameter("readonlyParam");
             System.out.println("Requisition Transaction Id  : "+ReqTransactionId);
             System.out.println("Error Column  : "+errorcolumn);
             System.out.println("Error Message  : "+errormsg);
             System.out.println("Read Only  : "+readyonly);
             HashMap params = new HashMap(4);
             params.put("HashmapTransacitonid",ReqTransactionId);
             params.put("HashmapErrorcolumn",errorcolumn);
             params.put("HashmapErrormessage",errormsg);
             params.put("HashmapReadonly",readyonly);
             pageContext.putSessionValue("testValue",ReqTransactionId);
             //System.out.println("Transaction Id passing through HashMap :- \t" + ReqTransactionId);
             pageContext.setForwardURL("OA.jsp?page=/powl/oracle/apps/xxpowl/po/requisition/webui/xxpowlPOReqIntfAllUpdatePG",
                                        null,
                                        OAWebBeanConstants.KEEP_MENU_CONTEXT,
                                        null,
                                        params,
                                        true,
                                        OAWebBeanConstants.ADD_BREAD_CRUMB_YES,
                                        OAWebBeanConstants.IGNORE_MESSAGES) ;   
    else if (pageContext.getParameter("event") != null &&
             pageContext.getParameter("event").equalsIgnoreCase("Delete")) {   
        System.out.println("Inside Delete method in SearchCO");
        String deleteTransactionID=(String)pageContext.getParameter("deleteTransactionIDParam");
        System.out.println("Transaction Id in Delete Method :- \t" + deleteTransactionID);
      //  deleteTransactionID ="";  //Makeing Null because dont want to show the transaction id bec users dont know about it
        //MessageToken[] tokens = { new MessageToken("MESSAGE_NAME", deleteTransactionID) };
        MessageToken[] tokens = { new MessageToken("MESSAGE_NAME", "") };
        OAException mainMessage = new OAException("FND", "FND_MESSAGE_DELETE_WARNING", tokens);
        OADialogPage dialogPage = new OADialogPage(OAException.WARNING,mainMessage, null, "", "");
        String yes = pageContext.getMessage("AK", "FWK_TBX_T_YES", null);
        String no = pageContext.getMessage("AK", "FWK_TBX_T_NO", null);
        dialogPage.setOkButtonItemName("DeleteYesButton");
        dialogPage.setOkButtonToPost(true);
        dialogPage.setNoButtonToPost(true);
        dialogPage.setPostToCallingPage(true);
        dialogPage.setOkButtonLabel(yes);
        dialogPage.setNoButtonLabel(no);
        Hashtable formParams = new Hashtable(1);
        formParams.put("transactionIdDeleted", deleteTransactionID);
        dialogPage.setFormP

    Hi friend ,
    In Search page i didn't do any update. and also search page is not a problem it's working fine. create page only the problem. In this page only throwing Stale data error exception.
    Please give me more suggestion.
    Thanks in advance,

  • Error while approving Leave request from UWL

    Hi Experts,
    We are getting following error while manager clicks on Universal Worklist to approve Leave Request. On system we have assigned ess id to employee no. 43 in IT 105-0001 but it gives error message about employee no. 167 which has nothing to do with this leave request.
    Please go through following ST22 error log..
    Short text of the error message:
    "No data exists in this period for infotype 0105 and employee 00000167."
    Trigger Location of Runtime Error
        Program                                 SAPLPT_ARQ_REQUEST_U
        Include                                 LPT_ARQ_REQUEST_UIAF
        Row                                     186
        Module type                             (FORM)
        Module Name                             DUMP_IF_ERRORS
    Source Code Extract
    Line  SourceCde
      156   ENDCASE.
      157
      158   IF lock_indicator = 'X'.    "ANK Note962342
      159     status_ui = c_req_sent.
      160     status_ui_text = 'gesendet'(s04).
      161   endif.                      "ANK Note962342
      162
      163 ENDFORM.                    " set_request_status_ui_text
      164
      165 &----
      166 *&      Form  dump_if_errors
      167 &----
      168 *       text
      169 ----
      170 *      -->MESSAGES   text
      171 ----
      172 FORM dump_if_errors
      173   USING
      174     messages   TYPE ptarq_uia_messages_tab.
      175
      176   FIELD-SYMBOLS:
      177     <message>  TYPE bapiret2.
      178
      179   LOOP AT messages ASSIGNING <message>.
      180     IF <message>-type EQ c_message_error.
      181
      182 *Note 1168656 begin
      183 *      MESSAGE x999(53) WITH
      184 *     <message>-message
      185 *     <message>-type.                                        "#EC *
    >>>>>       MESSAGE <message>-message type 'X'.
      187 *Note 1168656 end
      188     ELSEIF <message>-type EQ c_message_abend.
      189 *Note 1168656 begin
      190 *      MESSAGE a999(53) WITH
      191 *      <message>-message
      192 *      <message>-type.                                       "#EC *
      193       MESSAGE <message>-message type 'A'.
      194 *Note 1168656 end
    195
    196     ENDIF.
    197   ENDLOOP.
    198
    199
    200 ENDFORM.                    " check_errors
    201
    202 *&----
    203 *&      Form  prepare_customizing_attibs
    204 *&----
    205 *       text
    Would really appreciate kind guidance to resolve the same.
    Thanks.
    Aashish

    Hi Ashish,
    Short text of the error message:
    "No data exists in this period for infotype 0105 and employee 00000167
    This clearly suggests that the employee data is not up to date.
    Go to Tcode : PC00_M40_CLSTR
    here 40 is the country coding or the Molga value for India. Like wise which ever country you work for, enter the country code there instead of 40.
    Enter the pernr as 00000167 and you would find till which date the payroll for 167 has been run successfully.It has to be in green color.
    If the payroll is not run till the period in which you are getting the error ( which obvisouly is what the error means) try running the payroll by going to the Tcode : PC00_M40_CALC or you can ask your HR team to run this payroll for you and you are good to go.
    Good Luck!
    Sandeep Tudumu

  • Future date not to be allowed in the tabular form

    Hi,
    I have a tabular form with 3 columns.. the first column name is DATE, the user is not allowed to enter a future date or a date greater than the sysdate, so as soon as the date value is entered I have to generate a javascript/dyanamic action that throws error... I don't want the alert message to pop up when the submit is pressed, when the user moves the cursor to the next column, error should be shown. Is this possible. I am using APEX 4.0

    Hello Suzi,
    I’m afraid I won’t be able to walk you through this issue as I need to leave the office, however I have some remarks for you.
    First, if you intend to practice JavaScript you should really find the time to learn and understand it. I can promise you it will worth your while, otherwise you’ll just waste a lot of time.
    Secondly, The values of the APEX items you are retrieving using JavaScript are strings. So, in your current code you are actually comparing two strings and not dates.
    Next. When you are validating your data using JavaScript you have to make sure that the user will take the necessary measurements to fix the problem. For example, you must place the cursor back in the offending field. Using the following:
      wwv_flow.f04[1].focus(); will set the cursor in the first cell of the ‘f04’ column. This code also suggest that wwv_flow.f04 is actually a JavaScript array that holds references (object pointers) to all the cells in the ‘f04’ column. You can go through them using a simple loop.
    You should also not use the onchange event in this case. Imagine that after your first error alert, and setting the cursor back to the offending field, the user just press tab to move to the next field. This time around, the onchange event will not be fired (as the value of the field has not changed) and you lost your validation effect. To force the JavaScript validation to fire every time you should use the onblur event.
    That’s all for now :)
    Regards,
    Arie.
    &diams; Please remember to mark appropriate posts as correct/helpful. For the long run, it will benefit us all.
    &diams; Author of Oracle Application Express 3.2 – The Essentials and More

  • System Message Shows in  Future Date

    Dear Experts,
    In Our SAP BI System , The System Message SM21 shows in Current & future date both problem messages
    SAP Server OS and SAP BI Application Time and date both are in sync
    The BI system which is connected to ECC PRD also having a sync
    Remote monitoring are not configured in this system,
    System Log: Local Analysis of GEEPASBIPRD                  2
    Date : 22.12.2010
    Time     Type Nr  Clt User         TCode Priority Grp N Text
    10:02:54 DIA  001 350 GPKWTHOFI03                 BY  E Invalid parameter ObjTooLar
    10:04:07 DIA  001 350 GPKWTHOFI03                 BY  E Invalid parameter ObjTooLar
                       System Log: Local Analysis of GEEPASBIPRD                  3
    Date : 02.01.2201
    Time     Type Nr  Clt User         TCode Priority Grp N Text
    20:20:84           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    20:20:84           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    20:20:84           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    20:20:84           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    20:20:84           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    20:20:84           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    20:20:90           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    20:20:90           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    40:20:81           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    40:20:81           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    40:20:81           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    40:20:81           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    40:20:81           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    40:20:81           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    71:31:41           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    71:31:41           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    90:20:84           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    90:20:84           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    90:20:84           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    90:20:84           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    90:20:84           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    90:20:84           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
                       System Log: Local Analysis of GEEPASBIPRD                  4
    Date : 03.01.2201
    Time     Type Nr  Clt User         TCode Priority Grp N Text
    00:20:85           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
    00:20:85           35  BIWREMOTE                  hB  Y Missng:TSL1TE,hBY):154 EXE
                      System Log: Local Analysis of GEEPASBIPRD
              C o n t e n t s
    Content            Page         Start          End
    Selection criteria   1
                         2  22.12.2010 10:02:54 22.12.2010 10:04:07
                         3  02.01.2201 20:20:84 02.01.2201 90:20:84
                         4  03.01.2201 00:20:85 03.01.2201 00:20:90
                         5  02.01.3201 01:23:65 02.01.3201 90:40:42
                         6  03.01.3201 00:40:41 03.01.3201 11:62:24
                         7  02.01.4201 01:22:30 02.01.4201 90:40:42
                         8  03.01.4201 00:40:41 03.01.4201 11:62:24
                         9  02.01.7201 11:42:21 02.01.7201 31:71:95
                        10  02.01.9201 01:22:30 02.01.9201 81:41:10
                        11  03.01.9201 00:95:23 03.01.9201 11:11:94
                        12  02.01.A201 01:22:30 02.01.A201 81:41:10
                        13  03.01.A201 00:95:23 03.01.A201 11:62:24
                        14  02.01.E201 11:24:13 02.01.E201 71:50:52
                        15  02.01.I201 01:22:30 02.01.I201 81:41:10
                        16  03.01.I201 00:95:23 03.01.I201 11:62:24
                        17  02.01.R201 01:22:30 02.01.R201 81:41:10
                        18  03.01.R201 00:95:23 03.01.R201 11:62:24
    Contents            19
    Thanks
    Jai

    Hi Thahir,
    I deleted the SLOG and Restarted the system now its not showing the future date,
    Issue resolved.
    Thanks ,
    Jai

  • Unable to approve leave request in ESS

    Hi
        While trying to approve leave in ESS/MSSm getting the following error
        After clicking the link in SAP inbox / Universal Work List in MSS an error is encountered.
        In R3 we have analysed the error in ST22 transaction which says--
    The current application triggered a termination with a short dump.
    There is no data for infotype 0105,personnel no. 0 E .
    Kindly suggest what to do..???

    hi,
    check the Infotype 105 subtype 0001 in Transaction PA30 for the Personnel no.
    Regards,
    Boobalan.

  • Critical error while approving leave

    Hi
    In portal while approving leave i am getting the follwoing error .
    Critical Error
    A critical error has occured. Processing of the service had to be terminated. Unsaved data has been lost.
    Please contact your system administrator.
       The running application consciously caused an abort with short dump., error key: RFC_ERROR_SYSTEM_FAILURE   
    This error is comming only for few employees not for every one.
    Can anybody please let me know the solution for this .
    Thanks and Regards.

    Hi,
    First of all, check the short dump in transaction ST22, you probably find there much more details of the problem.
    secondly, make sure that these users have enough authorisations (do a trace) in backend. They might be missing some RFC call related authoritsation.
    Regards,
    Karri

  • In Bdc I have huge volume of data to upload for the given transaction

    Hi gurus,
    In Bdc I have huge volume of data to upload for the given transaction, here am using session method, it takes lots of exection time to complete the whole transaction, Is there any other method to process the huge volume with minimum time,
    reward awaiting
    with regards
    Thambe

    Selection of BDC Method depends on the type of the requirement you have. But you can decide which one will suite requirement basing the difference between the two methods. The following are the differences between Session & Call Transaction.
    Session method.
    1) synchronous processing.
    2) can tranfer large amount of data.
    3) processing is slower.
    4) error log is created
    5) data is not updated until session is processed.
    Call transaction.
    1) asynchronous processing
    2) can transfer small amount of data
    3) processing is faster.
    4) errors need to be handled explicitly
    5) data is updated automatically
    Batch Data Communication (BDC) is the oldest batch interfacing technique that SAP provided since the early versions of R/3. BDC is not a typical integration tool, in the sense that, it can be only be used for uploading data into R/3 and so it is
    not bi-directional.
    BDC works on the principle of simulating user input for transactional screen, via an ABAP program.
    Typically the input comes in the form of a flat file. The ABAP program reads this file and formats the input data screen by screen into an internal table (BDCDATA). The transaction is then started using this internal table as the input and executed in the background.
    In ‘Call Transaction’, the transactions are triggered at the time of processing itself and so the ABAP program must do the error handling. It can also be used for real-time interfaces and custom error handling & logging features. Whereas in
    Batch Input Sessions, the ABAP program creates a session with all the transactional data, and this session can be viewed, scheduled and processed (using Transaction SM35) at a later time. The latter technique has a built-in error processing mechanism too.
    Batch Input (BI) programs still use the classical BDC approach but doesn’t require an ABAP program to be written to format the BDCDATA. The user has to format the data using predefined structures and store it in a flat file. The BI program then reads this and invokes the transaction mentioned in the header record of the file.
    Direct Input (DI) programs work exactly similar to BI programs. But the only difference is, instead of processing screens they validate fields and directly load the data into tables using standard function modules. For this reason, DI programs are much faster (RMDATIND - Material Master DI program works at least 5 times faster) than the BDC counterpart and so ideally suited for loading large volume data. DI programs are not available for all application areas.
    synchronous & Asynchronous updating:
    http://www.icesoft.com/developer_guides/icefaces/htmlguide/devguide/keyConcepts4.html
    synchronous & Asynchronous processings
    Asynchronous refers to processes that do not depend on each other's outcome, and can therefore occur on different threads simultaneously. The opposite is synchronous. Synchronous processes wait for one to complete before the next begins. For those Group Policy settings for which both types of processes are available as options, you choose between the faster asynchronous or the safer, more predictable synchronous processing.
    By default, the processing of Group Policy is synchronous. Computer policy is completed before the CTRLALTDEL dialog box is presented, and user policy is completed before the shell is active and available for the user to interact with it.
    Note
    You can change this default behavior by using a policy setting for each so that processing is asynchronous. This is not recommended unless there are compelling performance reasons. To provide the most reliable operation, leave the processing as synchronous.

  • ESS/MSS: Approve Leave Request in UWL - not working

    Hi to all,
    we are using web dynpro ESS/ MSS (SAPESS07_12/ SAPMSS07_4) in portal NW04s for mySAP ERP2005 and are using UWL in order to approve leave requests. If employees are creating leave requests, everything works fine. After that the manager opens the leave request in UWL, the web dynpro application is openening succesfully and after some clicks he reaches the buttons to approve or reject the leave request. But by pushing one of them the following messages occures :
    <b>Workitem 000000000000 Cannot be read</b>
    After pushing the button again, another message comes up:
    <b>No Customizing for status typ ARQ, Status approved...</b>
    By the way, the same errors also come up when the employee wants to delete his leave request which is not approved.
    Any ideas, what can be the reason?
    Regards,
    Frank

    Hi Ashutosh,
    I have found the reason. The user <b>WF - Batch</b> in sap erp, which is using the RFC Destination for workflow, was locked. Well, it is a a little bit strange for a cummunication user that he becomes locked. Unlocked him, now all works.
    Thanks for your support.
    Regards,
    Frank

  • Calculate future date in MM/dd/yyyy format

    Hi,
    I am trying to add a 56 months to a given date (MM/dd/yyyy string) and output the date in MM/dd/yyyy format.
    Here is my code:
                   SimpleDateFormat date = new SimpleDateFormat("MM/dd/yyyy");
                   date.parse("07/30/2000");
                   GregorianCalendar gc = new GregorianCalendar();
                   gc.add(Calendar.MONTH,+56);
                   System.out.println(date.format(gc.getTime()));  I tried to assign date.parse() to a Date but there is no fomat method on Date so to add months to the date. Could someone suggest me how to calculate a future date?

    thanks for looking, just found the answer:
                   SimpleDateFormat date = new SimpleDateFormat("MM/dd/yyyy");
                   Date dt = date.parse("07/30/2000");
                   GregorianCalendar gc = new GregorianCalendar();
                   gc.setTime(dt);         //this was missing
                   gc.add(Calendar.MONTH,+56);
                   System.out.println(date.format(gc.getTime()));

  • Date Picker - only allow future dates?

    Does anyone know of a way to control the date picker to only allow the selection of future dates? I would like to force my users to use the date picker, but will need to shade out or grey-out dates less than sysdate+3. This will be used for scheduling payments in the future and should not allow a user to pick a past date or a date within two future days of the current date.
    Thanks in advance for your help,
    Todd

    Vikas,
    I have followed the instructions on that page, but I'm a little unsure about one step. The instructions say, In the HTML Header of the Page Attributes enter "INCLUDE_DHTML_CALENDAR_SCRIPTS"
    My current HTML Header of the Page Attributes has this code:
    <script language="JavaScript" type="text/javascript">
    --(this is commented out) htmldb_delete_message='"DELETE_CONFIRM_MSG"';
    </script>
    I'm not sure where to add the "INCLUDE_DHTML_CALENDAR_SCRIPTS" text. Do I need something before or after that quoted string?
    I'm getting the following error message when I run the page:
    ORA-06550: line 22, column 6: PLS-00103: Encountered the symbol ";" when expecting one of the following: begin case declare end exception exit for goto if loop mod null pragma raise return select update while with << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe The symbol "exit" was substituted for ";" to continue.
    Error ERR-2904 Unable to set shortcut value.
    OK

  • Create and Approve leave's either using BAPI or IDoc

    Hello Experts,
    My requirment is to create a leave from my JSP in to SAP(Employee Login), then there will be a approval process where in my manger will approve the leave from his JSP(Manager login).
    Approach 1: If I use BAPI for this approach what are the BAPI's that I can use? I have found the below BAPI's out of which 1&2's documentation say " Using these APIs can create inconsistencies in time data.Instead, use the corresponding API Methods "ManageDelete," "ManageCreation," and "ManageChange" for the Business Object BUS7007"
    1. BAPI_ABSENCE_APPROVE
    2. BAPI_ABSENCE_CREATE
    3. BAPI_PTMGRATTABS_MNGCREATION
    Approach 2: If I use IDoc what are the Idoc types and process codes for Create and Approve leave's.
    Please help...
    Thanks in Advance,
    Suma
    Edited by: Suma B on Sep 16, 2008 4:16 PM

    Hi,
    Can you please give me the details of the workflow, I will try to get info from that to levarage.
    Thanks,
    Suma

Maybe you are looking for