HRMS Employee's Absence (Leave) Accrual Days

Hello,
I have implemented Oracle Global HRMS. I have created reports for leave balances and I need to show the current accrual for leave balances. The path for the leave value is:- On the People window, click on others, then select absence, Select Annual Leave for the type field then click on the Accruals button, then select the End of Plan tab, the leave balance value is stored in the PROJECT ENTITLEMENT field. I need to display that field on my report but Im unable to find it on the table which it is related to.
Can anyone please help me out with this as soon as possible...
Thanking you in advance,
Tasneem.

Hi,
I was referring to the accrual bands button only. So if you cannot find any values under accrual bands button, then tell us what is the accrual formula your are using. Open the accrual formula to see from where it takes the entitlement value. If no value is found in accrual bands button, then the value should either be hard coded inside the formula (very unlikely) or it would have defined in user tables (Other Definitons > Table Values). From where it picks the entitlement value depends upon the type of accrual formula you use.
Regards.
KK

Similar Messages

  • Absence Quota Accruals  from days to hrs

    Hi Guys,
    I need to change the Absence Quota Accruals process in SAP ERP ECC 6.0 system from Accruing time in days to hours. All necessary configuration changes are to be made in the development system (including Time and Payroll Schema changes for absence quota accrual, year-end transfer of unused balance and payout) and upon approval be transported and tested to the Quality Assurance system and Production. All past historic/archive transactions and records must be changed and reflect the absence quotas in hours.
    Pls. let me know the steps for doing the same.
    Tnx
    SKR

    Go to the table V_T556A and change days to hours for your quota.
    Ccheck the deduction rule attached to the absence(which is related to quota) and change the units to hours.
    You may have to run the time evaluation in  the update  mode from the retro date (past date).But I wouldn't suggest you to run the time eval from the past date untill it is tested regurously in the QA system,because retroing may cause some issues.

  • Employee cant take leaves same date

    Hi,
    How to restick that employee cant take leaves same date .

    Hi,
    We can do this by following configuration .
    In SPRO transaction by following path.
    Personnel Management  Personnel Administration  Personnel Data  Employee self service  Service Specific settings  Working Times  Leave Request  Processing Process  Define processing Processes for Each Rule Group.
    In "Take Account of Ongoing request"
    Tick mark on "Check includes Unposted Requests".

  • Employee master Absence record

    Hello freind
    I want to know about employee master form
    i want to create as like absence button in my form. for that i want to open one form which has matrix on button as like in employee master absence button for that i want to know
    (1) is absence form table is master row table of employee master
    (2)is it yes then how sap update on absence form
    if yu have any solution for that than pls help me for that

    i am find the solution

  • Get all Iso Weeks when an employee had at least 5 days holliday

    Hi all,
    I'm trying to query to get all Iso Weeks (Calendar weeks) when an employee had at least 5 days hollidays.
    select HOLLIDAY_FROM,HOLLIDAY_TILL,to_char(HOLLIDAY_FROM,'iw') from_week,to_char(HOLLIDAY_TILL,'iw') till_week from HOLLIDAY;
    HOLLIDAY_FROM HOLLIDAY_TILL FR TI
    12-SEP-11 26-SEP-11 37 39
    In this example an employee had holliday from Monday in the week # 37 till Monday in the week # 39.
    So I would need to get the weeks 37 and 38 as a result, because in this weeks the employee had 5 days hollidays (saturday and sunday are weekend and are not counted)
    Any help would be appreciated!

    It looks like I misunderstood your question. To get IW weeks where all 5 weekdays were holidays/vacation use:
    SELECT  TO_CHAR(HOLLIDAY_FROM + LEVEL - 1,'IW') week
      FROM  HOLLIDAY
      WHERE TO_CHAR(HOLLIDAY_FROM + LEVEL - 1,'DY','NLS_DATE_LANGUAGE=ENGLISH') NOT IN (
                                                                                        'SAT',
                                                                                        'SUN'
      CONNECT BY HOLLIDAY_FROM + LEVEL - 1 <= HOLLIDAY_TILL
      GROUP BY TO_CHAR(HOLLIDAY_FROM + LEVEL - 1,'IW')
      HAVING COUNT(*) = 5
    /Based on your example:
    WITH HOLLIDAY AS (
                      SELECT DATE '2011-09-12' HOLLIDAY_FROM, DATE '2011-09-26' HOLLIDAY_TILL FROM DUAL
    -- end of on-the-fly data sample
    SELECT  TO_CHAR(HOLLIDAY_FROM + LEVEL - 1,'IW') week
      FROM  HOLLIDAY
      WHERE TO_CHAR(HOLLIDAY_FROM + LEVEL - 1,'DY','NLS_DATE_LANGUAGE=ENGLISH') NOT IN (
                                                                                        'SAT',
                                                                                        'SUN'
      CONNECT BY HOLLIDAY_FROM + LEVEL - 1 <= HOLLIDAY_TILL
      GROUP BY TO_CHAR(HOLLIDAY_FROM + LEVEL - 1,'IW')
      HAVING COUNT(*) = 5
    WE
    37
    38
    SQL> SY.
    Edited by: Solomon Yakobson on Sep 19, 2011 12:14 PM

  • Help with a numbers formula to call up employee schedules for a particular day / hour of day

    So my goal is to be able to use a drop-down menu on Sheet-1 with "day of week" and a 2nd one with "hour of day" to pull up a list of employees working on a particular day at a particular time.
    So far I've got Sheet-1 where the magic will happen
    Sheet 2-8 are different days of the week each displaying an employees hourly schedule and what hours of the day it corresponds with
    Here's a visual example of my thoughts:
    http://imgur.com/a/45ZZr#1
    If anyone can help point me in the right direction that woul be helpful!

    Here is another approach that takes advantage of the Numbers 3 native filtering interface.
    Have a simple data input table like this (no formulas) and set up a filter as shown:
    When the filter box is checked the list shrinks to show employees working on Monday at 10a:
    Typing new values into the filter rule boxes changes the results instantly.
    And if you have the data input table arranged as shown, you can not only filter it but you can easily view it in multiple ways.
    Here's Monday:
    The one formula in the table, in B2 copied right and down, is:
       =IF(COUNTIFS(Hours Input::$A,$A2,Hours Input::$B,$A$1,Hours Input::$C,B$1)>0,"x","")
    And here's A's schedule:
    The formula in B2, copied right and down, is:
      =IF(COUNTIFS(Hours Input::$A,$A$1,Hours Input::$B,$A2,Hours Input::$C,B$1)>0,"x","")
    etc.
    SG

  • Fastformula to Identify employee on Particular leave

    Dear Friends,
    I have scenario in Accruals, Where I need to identify the employee who were on particular leave on the pay period to calculate different accrual rate for the days on that particular leave..
    Can any 1 pls help me out...
    Guru

    Hi Guru,
    There is an issue with the way you are using GET_ABSENCE. If you see the definition in Formula function definition this function has two context parameter and two input parameters p_calculation_date and p_start_date. If you want to use GET_ABSENCE in fast formula you wil have to use it as below
    GET_ABSENCE(p_calculation_date, p_start_date) else it will raise error.
    As per your requirement it would be better if you create a custom formula function with one input parameter p_absence_attendance_type_id.
    1. Define a database function which will get the absence name for your
    CREATE OR REPLACE FUNCTION get_absence_type_name(
    p_business_group_id NUMBER ,
    p_absence_attendance_type_id number)
    RETURN VARCHAR2
    as
    l_absence_name varchar2(250);
    begin
    select name
    into l_absence_name
    from per_absence_attendance_types
    where 1 = 1
    and business_group_id = p_business_group_id
    and absence_attendance_type_id = p_absence_attendance_type_id;
    return l_absence_name;
    exception
    when others then
    l_absence_name := 'XXXXX';
    return l_absence_name;
    end get_absence_type_name;
    2. Define the formula function: example Name - XX_GET_ABSENCE_NAME
    Definition - get_absence_type_name
    Contex usage - Business_group_id
    Parameters - p_absence_attendance_type_id, Type as Number and Class as Input Only.
    Save the definition
    3. Now in your BG_ABSENCE_DURATION use the condition as below:
    IF XX_GET_ABSENCE_NAME(p_absence_attendance_type_id) = 'XXXXXXX' THEN
    Accrual_Rate = get_number('ACCRUAL_RATE')
    Annual_Rate = get_number('ANNUAL_RATE')
    Accrual_Rate = ((Annual_Rate / Payroll_Year_Number_Of_Periods) *60)/100
    Assignment_Inactive_Days = GET_ASG_INACTIVE_DAYS(Period_SD, Period_ED)
    Hope it helps. Please feel free to let me know in case of any issues.
    Thanks,
    Sanjay

  • Adhoc Query: Absence Leave report

    Hi All,
    I am trying to create a Query in Adhoc query for ABSENCE LIST.
    so i have added few columns:
    PERNR Value
    PERNR TEXT
    Personnel area Value
    Personnel area Text
    Personnel sub-area Value
    Personnel sub-area Text
    Company code Value
    Company code Text
    Postion name Text
    Attendance or absence type value
    Attendance or absence type Text
    1. Here when i pick the Position from infotype 0001 it is displaying some default position along with the position
    2. I need the list of employee who has taken leaves, and leave types are picked from infotype 2001. Here i am getting complete list of employees(employees who has not taken leaves)
    So can we prepare a report employees who went on leaves based on the above requirement.
    Please find the attachment.
    Regards,
    Prasad

    On a more serious note,
    A query is a simple spitting out of all the data, based on the fields you have selected, So if atleast one field has a valid value, and "Personnel Number" is one such field, you will get an output in the report.
    What you will have to do is to assign certain key fields as selection fields as well as output fields, when designing the Ad-Hoc query.
    Then use selection criteria to get out only the results you want, for example Absence Type = Annual Leave( don't want to type the abbreviation here), date range of BEGDA - 01.01.2014 - 30.04.2014, for example. Using Employment Status as a Selection field but not an Output field can help with ensuring inactive employees (i.e people with default positions) are not selected.
    I often find that in any case, one always has to download the query output into Excel and do some final manipulations using filters and pivots etc.
    Also, play around with the Key Date  field,  in the query design screen - see what happens if you use "Today" rather than a wider date range.
    Hope this helps.

  • No Quota for employee in EP- Leave Request error

    I am facing an issue with one employee.
    This employee is having a lot of quotas for all the absence types in R/3. However in EP when he goes to 'Quota Overview', it shows that the table is empty, and the dropdown list also does not contain any leave.
    When he clicks on 'Leave Request' there comes an 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.     +
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
                    at java.util.ArrayList.RangeCheck(ArrayList.java:507)
                    at java.util.ArrayList.get(ArrayList.java:324)
                    at com.sap.aii.proxy.framework.core.JcoBaseList.get(JcoBaseList.java:268)
                    at com.sap.aii.proxy.framework.core.AbstractList.get(AbstractList.java:230)
                    at com.sap.tc.webdynpro.modelimpl.dynamicrfc.DynamicRFCList.get(DynamicRFCList.java:281)
                    at com.sap.tc.webdynpro.progmodel.context.Node$ModelElementList.getElement(Node.java:2549)
                    at com.sap.tc.webdynpro.progmodel.context.Node.getElementAtInternal(Node.java:621)
                    at com.sap.tc.webdynpro.progmodel.context.Node.setLeadSelection(Node.java:753)
                    at com.sap.xss.hr.lea.form.FcForm.setLeadSelectionForSubtype(FcForm.java:700)
                    at com.sap.xss.hr.lea.form.FcForm.setVisibility(FcForm.java:943)
                    at com.sap.xss.hr.lea.form.FcForm.prepareCommand(FcForm.java:308)
                    at com.sap.xss.hr.lea.form.wdp.InternalFcForm.prepareCommand(InternalFcForm.java:2041)
                    at com.sap.xss.hr.lea.form.FcFormInterface.prepareCommand(FcFormInterface.java:116)
                    at com.sap.xss.hr.lea.form.wdp.InternalFcFormInterface.prepareCommand(InternalFcFormInterface.java:1887)
                    at com.sap.xss.hr.lea.form.wdp.InternalFcFormInterface$External.prepareCommand(InternalFcFormInterface.java:1983)
                    at com.sap.xss.hr.lea.form.edit.VcFormEdit.onInit(VcFormEdit.java:299)
                    at com.sap.xss.hr.lea.form.edit.wdp.InternalVcFormEdit.onInit(InternalVcFormEdit.java:1084)
                    at com.sap.xss.hr.lea.form.edit.VcFormEditInterface.onInit(VcFormEditInterface.java:165)
                    at com.sap.xss.hr.lea.form.edit.wdp.InternalVcFormEditInterface.onInit(InternalVcFormEditInterface.java:204)
                    at com.sap.xss.hr.lea.form.edit.wdp.InternalVcFormEditInterface$External.onInit(InternalVcFormEditInterface.java:280)
                    at com.sap.pcuigp.xssfpm.wd.FPMComponent.doProcessEvent(FPMComponent.java:564)
                    at com.sap.pcuigp.xssfpm.wd.FPMComponent.doEventLoop(FPMComponent.java:438)
                    at com.sap.pcuigp.xssfpm.wd.FPMComponent.wdDoInit(FPMComponent.java:196)
                    at com.sap.pcuigp.xssfpm.wd.wdp.InternalFPMComponent.wdDoInit(InternalFPMComponent.java:110)
                    at com.sap.tc.webdynpro.progmodel.generation.DelegatingComponent.doInit(DelegatingComponent.java:108)
                    at com.sap.tc.webdynpro.progmodel.controller.Controller.initController(Controller.java:215)
                    at com.sap.tc.webdynpro.progmodel.controller.Controller.init(Controller.java:200)
                    at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.init(ClientComponent.java:430)
                    at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.init(ClientApplication.java:362)
                    at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.initApplication(ApplicationSession.java:756)
                    at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:291)
                    at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingPortal(ClientSession.java:733)
                    at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:668)
                    at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:250)
                    at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:149)
                    at com.sap.tc.webdynpro.clientserver.session.core.ApplicationHandle.doProcessing(ApplicationHandle.java:73)
                    at com.sap.tc.webdynpro.portal.pb.impl.AbstractApplicationProxy.sendDataAndProcessActionInternal(AbstractApplicationProxy.java:860)
                    at com.sap.tc.webdynpro.portal.pb.impl.AbstractApplicationProxy.create(AbstractApplicationProxy.java:220)
                    at com.sap.portal.pb.PageBuilder.updateApplications(PageBuilder.java:1288)
                    at com.sap.portal.pb.PageBuilder.createPage(PageBuilder.java:355)
                    at com.sap.portal.pb.PageBuilder.init(PageBuilder.java:548)
                    at com.sap.portal.pb.PageBuilder.wdDoRefresh(PageBuilder.java:592)
                    at com.sap.portal.pb.PageBuilder$1.doPhase(PageBuilder.java:864)
                    at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processPhaseListener(WindowPhaseModel.java:755)
                    at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doPortalDispatch(WindowPhaseModel.java:717)
                    at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:136)
                    at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
                    at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
                    at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:321)
                    at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:684)
                    at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:250)
                    at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:149)
                    at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
                    at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
                    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
                    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
                    at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
                    at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
                    at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:386)
                    at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:364)
                    at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:1039)
                    at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:265)
                    at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
                    at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)
                    at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
                    at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
                    at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
                    at java.security.AccessController.doPrivileged(Native Method)
                    at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:102)
                    at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172)
    Any suggestion regarding this?

    When Quotas table is empty then customisation is missing for his ESG AND PSG in v_t556a_web
    check his groupings from It2006 overview and maintain those in above for his rule group
    java dump :
    Please can you check if the Pernr used
    has correct information like It0105 etc, also the rules are
    correctly defined.
    For the Employee, First of all check the Period Work Schedule also
    the Quotas of the pernr needs to maintained in 2006, Please do
    this customisation and it should solve the issue.
    Maintain the absence quota in the IT2006 and then try once.
    Also make sure that the Settings in Webmo and PTARQ etc all is done
    The pernr belongs to the a Rule and have absences defined for him.

  • How to get Leave Accrual Balance in Report

    We can see the accrual balance on SSHR page as well as on Fastpath-> Accruals -> Net Entitlement.
    But I want to display a report which will display all accruals as on a aprticular date.
    Can we get that? Is there any seeded funnction/procedure?

    Hi DR,
    To develop a report you will need help of a technical consultant in your team. You can use XML Publisher to develope your report, what Vigneshwar has provided you is the function which you/technical guy can use to easilt get the balance value as of any date.
    As a function person get the Report defination signed of from business users and share the requirments with the technical team. If you are interested to develop the report on you own then please refer the site which will give you the basics of developing an XML publisher report:
    http://www.apps2fusion.com/at/ps/51-prabhakar/262-xml-publisher-and-data-template-sql-query-to-develop-bi-publisher-reports
    http://imdjkoch.wordpress.com/2010/11/12/steps-to-create-a-xml-publisher-report/
    Hope it helps.
    Thanks,
    Sanjay

  • SCA files fro Absences (Leave request)

    Hi.
    Can any one tell me the name of the SCA file which includes the source code for leave request?
    I downloaded SAP_ESS release 600 SP13, however i was not able to find the source code related to leave request applications.
    Regards,
    Bharath Mohan B

    the name of the SCA file is ess/lea

  • HRMS - Employee Supervisor Change

    Hi Guys,
    I wonder if you can help in 11.5.10.2 when changing a supervisor for an employee is there any concurrent job that should be run after this change so that workflows now go to the new supervisor? Its seems that when this change is made some workflow are still erroring with message "no performer found". I thought once we made a change to a supervisor oracle would do the rest ?
    Any help would be great.
    Bal

    I got it.
    Thanks.

  • Best practices for disabling an employees account, but leaving mailbox available for others while not accepting messages

    I'm sure that other organizations have some policy for this. In our case, we want to keep the mailbox available for others to still access, but disable the user account and remove it from OWA.
    In this case, I've disabled the AD object, disabled OWA from the features, and set the mailbox to only receive emails from a dummy mailbox (so that no new emails are accepted).
    This all works fine and senders receive a NDR that their mail was rejected, however I'd also like to set a friendlier custom NDR to call the office instead when any sender attempts to send email to that recipient.
    What would best practices, suggestions be for this behavior?

    Hi,
    According to your description, the user object in AD has been disabled.
    In this case, the mailbox cannot mostly likely be accessed. Thus, maybe OOF couldn’t help you.
    If I misunderstand your meaning, please feel free to let me know.
    And we can depend on transport rule:
    The recipient is
    send rejection message to sender with enhanced status code:
    http://technet.microsoft.com/en-us/library/bb123506(v=exchg.141).aspx
    Thanks,
    Angela Shi
    TechNet Community Support

  • R12 SSHR - Leave of Absence page error

    HI,
    I am filling the leave details like "From" & "To" date, selecting leave type etc. When I click "Next" button, I am getting an error message like "A compiled version of the formula 324 cannot be found.. Check that it exists and compiled..."
    I just copied the formula from "TEMPLATE ABSENCE DURATION" into "BG_ABSENCE_DURATION" (created new formula name with "Quickpaint" type)
    How to overcome this error?
    Thanks in advance.

    Dear All,
    This is the formula I am using for Absence. In form It is working fine. But in SSHR it is throwing the error. Please check and help me in resolving this issue.
    FORMULA NAME: TEMPLATE_ABSENCE_DURATION
    FORMULA TYPE: Quickpaint
    DESCRIPTION: Calculates the Employee's Absence
    Duration in days or hours. The profile
    'HR: Absence Duration Auto Overwrite'
    determines if an existing duration value
    can change automatically or not.
    INPUTS:
    - days_or_hours: the units of the absence
    - date_start: the absence start date
    - date_end: the absence end date
    - time_start: the absence start time
    - time_end: the absence end time
    DBI Required:
    - asg_start_time : the assignment start time
    - asg_end_time: the assignment end time
    - asg_pos_start_time: the positon start time
    - asg_pos_end_time: the position end time
    Change History
    01 Sep 99 jmoyano Created
    10 Oct 01 dcasemor end_day was being set to
    asg_start_time. Also allowed
    hours to be defaulted if no
    UOM is set and hours have been
    entered.
    alias emp_hire_date as hire_date
    default for per_sex is 'X'
    /* Main Body of Formula */
    INPUTS ARE days_or_hours(text),
    date_start (date),
    date_end (date),
    time_start (text),
    time_end (text),absence_attendance_type_id
    /* default values */
    default for per_emp_number is ' '
    default for MARRIAGE_LEAVE_CUM_BALANCE is 0
    default for PER_SEX_CODE is 'X'
    default for hire_date is '01-jan-1951'(date)
    DEFAULT FOR days_or_hours IS 'D'
    DEFAULT FOR time_start IS '09:00'
    DEFAULT FOR time_end IS '17:00'
    DEFAULT FOR date_start IS '0001/01/01 00:00:00' (DATE)
    DEFAULT FOR date_end IS '4712/12/31 00:00:00' (DATE)
    /* database items */
    DEFAULT FOR asg_start_time IS '09:00'
    DEFAULT FOR asg_end_time IS '17:00'
    DEFAULT FOR asg_pos_start_time IS '09:00'
    DEFAULT FOR asg_pos_end_time IS '17:00'
    v_business_group_id=81
    /* local variables */
    error_or_warning = ' '
    invalid_msg = ' '
    duration = '0'
    number_of_days = 0
    first_day_hours = 0
    last_day_hours = 0
    /* Defaults Section */
    /* default values for working day, these are only used if no
    working conditions can be found */
    begin_day = '09:00'
    end_day = '17:00'
    IF ((date_start WAS DEFAULTED) or (date_end WAS DEFAULTED)) then
    duration = '0'
    else
    number_of_days = days_between(date_end,date_start)
    /* absence in hours */
    IF days_or_hours = 'H'
    OR (days_or_hours WAS DEFAULTED
    AND time_start WAS NOT DEFAULTED
    AND time_end WAS NOT DEFAULTED) THEN
    /* look for the assignment values*/
    If ((asg_start_time WAS NOT DEFAULTED) and
    (asg_end_time WAS NOT DEFAULTED)) then
    begin_day = asg_start_time
    end_day = asg_end_time
    else
    /* look for the position values */
    if ((asg_pos_start_time WAS NOT DEFAULTED) and
    (asg_pos_end_time WAS NOT DEFAULTED)) then
    begin_day = asg_pos_start_time
    end_day = asg_pos_end_time
    /* compute hours per day */
    hours_per_day = ((to_num(substr(end_day,1,2))*60 +
    to_num(substr(end_day,4,2))) -
    (to_num(substr(begin_day,1,2))*60 +
    to_num(substr(begin_day,4,2)))) / 60
    /* absence takes place during the same day */
    IF number_of_days = 0 THEN
    duration = to_char(((to_num(substr(time_end,1,2))*60 +
    to_num(substr(time_end,4,2))) -
    (to_num(substr(time_start,1,2))*60 +
    to_num(substr(time_start,4,2)))) / 60)
    /* more than one day */
    ELSE
    /* Changes for bug3093970 starts here */
    first_day_hours =((to_num(substr(end_day,1,2))*60 +
    to_num(substr(end_day,4,2))) -
    (to_num(substr(time_start,1,2))*60 +
    to_num(substr(time_start,4,2))) ) / 60
         last_day_hours = ((to_num(substr(time_end,1,2))*60 +
    to_num(substr(time_end,4,2))) -
    (to_num(substr(begin_day,1,2))*60 +
    to_num(substr(begin_day,4,2))))/60
         if first_day_hours <=0
         OR first_day_hours > hours_per_day
         OR last_day_hours <= 0
         OR last_day_hours > hours_per_day THEN
    /* Leave timings are out off standard timings*/
    /* So use 24 hours rule */
         first_day_hours = (24*60 -
         (to_num(substr(time_start,1,2))*60 +
    to_num(substr(time_start,4,2))))/60
    last_day_hours = (to_num(substr(time_end,1,2))*60 +
    to_num(substr(time_end,4,2)))/60
    duration = to_char(first_day_hours+last_day_hours)
    duration = to_char(to_num(duration) +
    (DAYS_BETWEEN(date_end,date_start) - 1)* hours_per_day)
    /* Changes for bug3093970 ends here */
    /* absence in days */
    ELSE
    duration = to_char(DAYS_BETWEEN(date_end,date_start) + 1)
    /* use of error messages:
    if to_num(duration) = 0 then
    duration = 'FAILED'
    invalid_msg = 'HR_ABSENCE_CANNOT_BE_ZERO'
    v_duration=to_number(duration)
    length_of_service=(days_between(date_start,hire_date)+1)/365
    v_leave_type=XXAQ_LEAVE_TYPE(v_business_group_id,absence_attendance_type_id)
    if v_leave_type='HAJJ LEAVE' then
    if length_of_service<=aq_los_for_hajj_leave then
    duration = 'FAILED'
    invalid_msg = 'Length of Service Should be more than '||to_char(aq_los_for_hajj_leave)|| ' years'
    else
    if v_duration+XXAQLEAVEAVAILED(per_emp_number,
    v_leave_type)>aq_hajj_leave_entitlement then
    duration = 'FAILED'
    invalid_msg = 'Maximum Entitlement Should Be '||to_char(aq_hajj_leave_entitlement)
    /*Marriage Leave*/
    if v_leave_type='MARRIAGE LEAVE' then
    if v_duration+XXAQLEAVEAVAILED(per_emp_number,
    v_leave_type)>aq_marriage_leave_entitlement then
    duration = 'FAILED'
    invalid_msg = 'Maximum Entitlement Should Be '||to_char(aq_marriage_leave_entitlement)
    /*Paternity Leave*/
    if v_leave_type='PATERNITY LEAVE' then
    if v_duration+XXAQLEAVEAVAILED(per_emp_number,
    v_leave_type)>aq_paternity_leave_entitlement then
    duration = 'FAILED'
    invalid_msg = 'Maximum Entitlement Should Be '||to_char(aq_paternity_leave_entitlement)
    /*Maternity Leave*/
    if v_leave_type='MATERNITY LEAVE' then
    if PER_SEX<>'Female' then
    duration = 'FAILED'
    invalid_msg = 'Only Female Employees are Eligible for Maternity Leave'
    /*unpaid leave hours begin*/
    /*if v_leave_type='UNPAID LEAVE HOURS' then
    if v_duration>8 then
    duration = 'FAILED'
    invalid_msg = TO_CHAR(v_duration)||'Duration Should not Exceed 8 Hours for This Leave Type'
    /*unpaid leave hours end*/
    return duration, invalid_msg
    Regards,
    Jithin

  • Personnel Subarea groupings for a multiple country system

    We have more than 70 countries in our SAP system and more coming to be rolled out. We mainly use the HR funtionality for time recording. So, for the configuration of personnel subarea groupings in Time Recording we used the country grouping: e.g. Singapore Molga = 25, MOABW = 25, MOVER = 25, etc. For the 'SAP-countries (countries for which SAP has a template) we use MOLGA as personnel subarea grouping, for the NON-SAP countries (countries for which SAP has no template) we use a 2 digit number downwards from 98. Now we are running out of 'numbers'.
    Has anybody similar problems and can you please share with me possible solutions?
    Thank you very much and looking forward to your replies,
    Doris

    Dear Doris,
    Several other possibilities exist for the grouping (not only PSG),
    for example :
    A) the "Employee subgroup grouping for time quotas" (ESG)
    which is a char1 field (so you can use many more then the ones you
    use at the moment)
    B) field "Quota type selection group" (Quomo), from the documentation
    of this field in V_T559L:
    "Quota type selection rule group
    You can use the quota type selection rule group to control absence
    quota type selection based on the employee's organizational assignment.
    Using different quota type selection rule groups, you can set specific
    rules for quota generation.
    Use
    Quota generation is carried out in the schema using function QUOTA.
    There are three ways of setting the quota type selection rule group:
    1. Using function MOD in the time evaluation schema
    Function MOD calls a personnel calculation rule that has been modified
    to suit the respective schema (for example, XMOD, MODT, or TMOD). The
    employee subgroup grouping for personnel calculation rules is queried
    in the rule using operation PAYTP. Using operation MODIF Q=xx,
    you can determine (for ach grouping) which quota type selection rule
    group shoulde be used in time evaluation to access the entries
    for the relevant employees in the Leave Accrual table.
    2. Using a personnel calculation rule you have written yourself in the
    time evaluation schema
    In this case, you also set the quota type selection rule group using
    operation MODIF Q=xx.
    3. Using feature QUOMO
    You can use the feature to set the quota type selection rule group based
    on other organizational assignments. It is queried by the system during
    time evaluation."
    As your main issue seems to be the use of several different quota
    requirements, you can define, via the use of field QUOMO in V_T559L,
    for quota type 10 (just as an example) several different generation
    rules (one for each Quomo).
    Please note that quota 10 does not need to be always generated in the
    same way, it can have a different generation rule for each key
    combination of V_T559L.
    The most flexible way to select which quomo should be used is via the
    feature QUOMO. There you will have the following decision fields
    BUKRS  Company Code
    WERKS  Personnel Area
    BTRTL  Personnel Subarea
    PERSG  Employee Group
    PERSK  Employee Subgroup
    MOLGA  Country Grouping
    MOURA  Personnel Subarea Grouping for Leave Types
    TRFAR  Pay scale type
    TRFGB  Pay Scale Area
    TRFGR  Pay Scale Group
    TRFST  Pay Scale Level
    SCHKZ  Work Schedule Rule
    PERNR  Personnel Number
    ANSVH  Work Contract
    CTTYP  Contract type
    Hope this helps,
    Regards,
    Shree

Maybe you are looking for