Regarding Time management in HR

Hi Experts,
                 I am new to HR-Abap, Can any body give brief idea about time management in hr in Techincal point of view .
Thanks and regards,
Sravanthi.

Hi
In time related infotypes records are multiple  for a single pernr
say for example LEAVES
within a time  for PERNR you will find different types of leaves
go and see the infotypes data practically PA2001 and PA2005, r etc
see the sample report on time related data
REPORT zh_absence_quota
       NO STANDARD PAGE HEADING
       MESSAGE-ID zh_msg
       LINE-SIZE 169
       LINE-COUNT 60(1).
               T A B L E S  D E C L A R A T I O N S
TABLES:    pernr,    " Logical PNP
           t001p,    " Personnel Subarea
           t529u,    " Employment Status
           t500p,    " Personnel Area
           t501,     " Employee Group
           t503k,    " Employee Subgroup
           t549a,    " Payroll Area
           t554s,    " Absence Type
           t554t,    " Absence Type Texts
           t556a,    " Quota Type
           t527x,    " Orgn. Unit
           t556b,    " Quota Type Text
           pa0003.   " Payroll Status
INFOTYPES:
           0000,   " Actions
           0001,   " Organizational Assignment
           2006,   " Absence Quota
           2001.   " Absences
               T Y P E S  D E C L A R A T I O N S
Employee Absence Structure
TYPES: BEGIN OF s_2001,
         pernr TYPE persno,       " Personal Number
         awart TYPE awart,        " Absence Type
         subty TYPE subty,        " Sub Type
         endda TYPE endda,        " End date
         begda TYPE begda,        " Begin date
         abrtg TYPE abrtg,        " Absence days
         ename TYPE emnam,        " employee Name
         atext TYPE abwtxt,       " Absence Type Text
       END OF s_2001.
Employee Absence Quota Structure
TYPES: BEGIN OF s_2006,
         pernr TYPE persno,       " Personal Number
         ktart TYPE abwko,        " Absence Quota Type
         year(4) TYPE n,          " Year
         subty TYPE subty,        " Sub Type
         endda TYPE endda,        " End date
         begda TYPE begda,        " Begin date
         anzhl TYPE ptm_quonum,   " Absence Entitlement days
         ename TYPE emnam,        " employee Name
         ktext TYPE kotxt,        " Absence Type Text
         kverb TYPE kverb,        " Deduction Quota days
         anzhb TYPE ptm_quonum,   " Balance days
       END OF s_2006.
Combined Employee Absence and Quota Structure
TYPES: BEGIN OF s_rep,
         pernr TYPE persno,       " Personal Number
         ktart TYPE abwko,        " Absence Quota Type
         year(4) TYPE n,          " Year
         anzhl TYPE ptm_quonum,   " Absence Entitlement days
         kverb TYPE kverb,        " Deduction Quota days
         anzhb TYPE ptm_quonum,   " Balance days
         ktext TYPE kotxt,        " Quota Type Text
         awart TYPE awart,        " Absence Type
         abrtg TYPE abrtg,        " Absence days
         ename TYPE emnam,        " employee Name
         atext TYPE abwtxt,       " Absence Type Text
         endda TYPE endda,        " End date
         begda TYPE begda,        " Begin date
       END OF s_rep.
Declaration of Variables
DATA : gv_atext TYPE abwtxt,              " Absence Type Text
       gv_ktext TYPE kotxt,               " Absence Type Text
       gv_title1   TYPE sylisel,          " Report title
       gv_year(4)  TYPE c,                " Year
       gv_mon(2)   TYPE c,                " Month
       gv_hrs    TYPE abwtg,              " Hours
       gv_date   TYPE sydatum,            " Date
       gv_date1  TYPE sydatum,            " Date
       gv_dial.                           " Color flag
Declaration of Constants
CONSTANTS :
  c_x      TYPE c VALUE 'X',               " Sign
  c_1      TYPE persg   VALUE '1',         " Emp Group
  c_pernr(8) TYPE n VALUE '00000000',      " Pernr
  c_moabw  TYPE moabw   VALUE '01',        " Per SA Grouping
  c_mozko  TYPE mozko   VALUE '01',        " Per SA Grouping
  c_mopgk  TYPE mopgk   VALUE '1',         " Emp SGrp Grouping
  c_endda  TYPE sydatum VALUE '99991231',  " End Date
  c_val1(2) TYPE c VALUE '31',             " Date Type
  c_val2(2) TYPE c VALUE '12',             " Date Type
  c_val    LIKE p0041-dar01 VALUE '01',    " Date Type
  c_date1  LIKE sy-datum VALUE '18000101'. " Date
     I N T E R N A L  T A B L E S  D E C L A R A T I O N S
DATA: i_2001 TYPE STANDARD TABLE OF s_2001 WITH HEADER LINE,
      i_2006 TYPE STANDARD TABLE OF s_2006 WITH HEADER LINE,
      i_rep1 TYPE STANDARD TABLE OF s_2006 WITH HEADER LINE,
      i_rep  TYPE STANDARD TABLE OF s_rep WITH HEADER LINE.
                 S E L E C T I O N  S C R E E N
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_ktart FOR t556a-ktart,  " Absence Quota Type
                s_awart FOR t554s-subty.  " Absence Type
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) text-003.   " Quota & Absence
PARAMETERS: p_qa RADIOBUTTON GROUP rb1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) text-004.   " Quota
PARAMETERS: p_q RADIOBUTTON GROUP rb1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) text-005.   " Absence
PARAMETERS: p_a RADIOBUTTON GROUP rb1.
SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK b2.
                  I N I T I A L I Z A T I O N                        *
INITIALIZATION.
              A T  S E L E C T I O N - S C R E E N                   *
AT SELECTION-SCREEN.
Validate the screen fields
  PERFORM validate_screen.
               S T A R T - O F - S E L E C T I O N                   *
START-OF-SELECTION.
Selection of Period
  PERFORM get_period.
Get PERNR from LDB
GET pernr.
  IF p0000-stat2 <> '0'.
Get the data from PA0001,PA2001, PA2006
    PERFORM get_pers_data.
  ENDIF.
               T O P - O F - P A G E                                 *
TOP-OF-PAGE.
Header of the List
  PERFORM header.
               E N D - O F - P A G E                                 *
Footer
END-OF-PAGE.
  IF p_qa = c_x.
Display both Absence and Quota Data
    WRITE /1(188) sy-uline.
  ELSEIF p_q = c_x.
Display only Quota Data
    WRITE /1(114) sy-uline.
  ELSEIF p_a = c_x.
Display only Absence Data
    WRITE /1(125) sy-uline.
  ENDIF.
               E N D - O F - S E L E C T I O N                       *
END-OF-SELECTION.
Combine the Absence and Quota Data
  PERFORM append_data.
  IF p_qa = c_x.
Display both Absence and Quota Data
    PERFORM display_qa_data.
  ELSEIF p_q = c_x.
Display only Quota Data
    PERFORM display_q_data.
  ELSEIF p_a = c_x.
Display only Absence Data
    PERFORM display_a_data.
  ENDIF.
*&      Form  validate_screen
Validation of Selection Screen fields
FORM validate_screen .
Validation of Personnel Number
  CLEAR pa0003.
  IF NOT pnppernr[] IS INITIAL.
    SELECT pernr
    FROM pa0003 UP TO 1 ROWS
      INTO pa0003-pernr
      WHERE pernr IN pnppernr.
    ENDSELECT.
    IF sy-subrc <> 0.
      MESSAGE e999 WITH 'Incorrect Personnel Number'(006).
    ENDIF.
  ENDIF.
Validation of Employee Status
  CLEAR t529u.
  IF NOT pnpstat2[] IS INITIAL.
    SELECT SINGLE statv
      INTO t529u-statv
      FROM t529u
      WHERE statv IN pnpstat2 AND
            statn = '2' AND
            sprsl = sy-langu.
    IF sy-subrc <> 0.
      MESSAGE e999 WITH 'Invalid Employee Status'(007).
    ENDIF.
  ENDIF.
Validation of Personnel Area
  CLEAR t500p.
  IF NOT pnpwerks[] IS INITIAL.
    SELECT persa
    FROM t500p UP TO 1 ROWS
      INTO t500p-persa
      WHERE persa IN pnpwerks.
    ENDSELECT.
    IF sy-subrc <> 0.
      MESSAGE e999 WITH 'Incorrect Personnel Area'(008).
    ENDIF.
  ENDIF.
Validation of Personnel Sub Area
  CLEAR t001p.
  IF NOT pnpbtrtl[] IS INITIAL.
    SELECT btrtl
    FROM t001p UP TO 1 ROWS
      INTO t001p-btrtl
      WHERE btrtl IN pnpbtrtl.
    ENDSELECT.
    IF sy-subrc <> 0.
      MESSAGE e999 WITH 'Incorrect Personnel Sub Area'(009).
    ENDIF.
  ENDIF.
Validation of Employee Group
  CLEAR t501.
  IF NOT pnppersg[] IS INITIAL.
    SELECT persg
    FROM t501 UP TO 1 ROWS
      INTO t501-persg
      WHERE persg IN pnppersg.
    ENDSELECT.
    IF sy-subrc <> 0.
      MESSAGE e999 WITH 'Incorrect Employee Group'(010).
    ENDIF.
  ENDIF.
Validation of Employee Sub Group
  CLEAR t503k.
  IF NOT pnppersk[] IS INITIAL.
    SELECT persk
    FROM t503k UP TO 1 ROWS
      INTO t503k-persk
      WHERE persk IN pnppersk.
    ENDSELECT.
    IF sy-subrc <> 0.
      MESSAGE e999 WITH 'Incorrect Employee Sub Group'(011).
    ENDIF.
  ENDIF.
Validation of Payroll Area
  CLEAR t549a.
  IF NOT pnpabkrs[] IS INITIAL.
    SELECT abkrs
    FROM t549a UP TO 1 ROWS
      INTO t549a-abkrs
      WHERE abkrs IN pnpabkrs.
    ENDSELECT.
    IF sy-subrc <> 0.
      MESSAGE e999 WITH 'Incorrect Employee Payroll Area'(026).
    ENDIF.
  ENDIF.
Validation of Absence Type
  CLEAR t554s.
  IF NOT s_awart[] IS INITIAL.
    SELECT subty
    FROM t554s UP TO 1 ROWS
      INTO t554s-subty
      WHERE subty IN s_awart AND
            moabw EQ c_moabw AND
            endda EQ c_endda.
    ENDSELECT.
    IF sy-subrc <> 0.
      MESSAGE e999 WITH 'Incorrect Employee Absence Type'(012).
    ENDIF.
  ENDIF.
Validation of Absence Quota Type
  CLEAR t556a.
  IF NOT s_ktart[] IS INITIAL.
    SELECT ktart
    FROM t556a UP TO 1 ROWS
      INTO t556a-ktart
      WHERE ktart IN s_ktart AND
            mopgk EQ c_mopgk AND
            mozko EQ c_mozko AND
            endda EQ c_endda.
    ENDSELECT.
    IF sy-subrc <> 0.
      MESSAGE e999 WITH 'Incorrect Employee Quota Type'(013).
    ENDIF.
  ENDIF.
ENDFORM.                  "validate_screen
*&      Form  get_period
Get the Correct Period based on Selection screen selection
FORM get_period.
  CLEAR: gv_year,gv_mon, gv_date, gv_date1.
  gv_year = sy-datum+0(4).
  gv_mon  = sy-datum+4(2).
  IF pnptimr1 = c_x.      " Current Date
    pnpbegda = sy-datum.
    pnpendda = sy-datum.
  ELSEIF pnptimr2 = c_x.  " Current Month
    CONCATENATE gv_year gv_mon c_val INTO gv_date.
    CONCATENATE gv_year gv_mon c_val1 INTO gv_date1.
    pnpbegda = gv_date.
    pnpendda = gv_date1.
  ELSEIF pnptimr3 = c_x.  " Current Year
    CONCATENATE gv_year c_val c_val INTO gv_date.
    CONCATENATE gv_year c_val2 c_val1 INTO gv_date1.
    pnpbegda = gv_date.
    pnpendda = gv_date1.
  ELSEIF pnptimr4 = c_x.  " Upto Today
    pnpbegda = c_date1.
    pnpendda = sy-datum.
  ELSEIF pnptimr5 = c_x.  " From Today
    pnpbegda = sy-datum.
    pnpendda = c_endda.
  ELSE.
    IF ( pnpbegda IS INITIAL AND pnpendda IS INITIAL ).
      pnpbegda = c_date1.
      pnpendda = c_endda.
    ELSEIF pnpbegda IS INITIAL AND NOT pnpendda IS INITIAL.
      pnpbegda = c_date1.
      pnpendda = pnpendda.
    ELSEIF NOT ( pnpbegda IS INITIAL AND pnpendda IS INITIAL ).
      pnpbegda = pnpbegda.
      pnpendda = pnpendda.
    ENDIF.
  ENDIF.
ENDFORM.              "get_period
*&      Form  get_pers_data
Get the Absence and Quota Data from PA0001,PA2001,PA2006
FORM get_pers_data.
  DATA: lv_year1(4) TYPE n,
        lv_year2(4) TYPE n,
        lv_date1 TYPE sydatum,
        lv_date2 TYPE sydatum,
        lv_anzhb TYPE ptm_quonum.   " Last Year Balance days
Get data from Respective Infotypes
  rp_provide_from_last p0001 space pnpbegda pnpendda.
Absence Data
  LOOP AT p2001 WHERE pernr = pernr-pernr AND
                      begda GE pnpbegda   AND
                      endda LE pnpendda.
    IF p2001-awart IN s_awart.
      i_2001-pernr    = pernr-pernr.
      i_2001-subty    = p2001-subty.
      i_2001-awart    = p2001-awart.
      i_2001-abrtg    = p2001-abrtg.
      i_2001-begda    = p2001-begda.
      i_2001-endda    = p2001-endda.
      READ TABLE p0001 WITH KEY pernr = p2001-pernr.
      i_2001-ename    = p0001-ename.
Get the Absence Type Text
      CLEAR gv_atext.
      SELECT SINGLE atext INTO gv_atext FROM t554t
              WHERE sprsl = sy-langu AND
                    moabw = c_moabw  AND
                    awart = p2001-awart.
      IF sy-subrc = 0.
        i_2001-atext = gv_atext.
      ENDIF.
      APPEND i_2001.
      CLEAR i_2001.
    ENDIF.
  ENDLOOP.
Quota Data
  LOOP AT p2006 WHERE pernr = pernr-pernr AND
                      begda GE pnpbegda   AND
                      endda LE pnpendda.
    IF p2006-ktart IN s_ktart.
      i_2006-pernr    = pernr-pernr.
      i_2006-subty    = p2006-subty.
      i_2006-begda    = p2006-begda.
      i_2006-endda    = p2006-endda.
      i_2006-year     = p2006-endda+0(4).
      i_2006-ktart    = p2006-ktart.
      i_2006-anzhl    = p2006-anzhl.
      i_2006-kverb    = p2006-kverb.
      i_2006-anzhb    = p2006-anzhl - p2006-kverb.
      READ TABLE p0001 WITH KEY pernr = p2001-pernr.
      i_2006-ename    = p0001-ename.
Get the Quota Type Text
      CLEAR gv_ktext.
      SELECT SINGLE ktext INTO gv_ktext FROM t556b
              WHERE sprsl = sy-langu AND
                    mopgk = c_mopgk  AND
                    mozko = c_mozko  AND
                    ktart = p2006-ktart.
      IF sy-subrc = 0.
        i_2006-ktext = gv_ktext.
      ENDIF.
      APPEND i_2006.
      CLEAR i_2006.
    ENDIF.
  ENDLOOP.
For Vacation Quota (80) get the Balance of the Last Year and
add to the Current Year Quota
  LOOP AT i_2006.
    IF i_2006-ktart = '80'.
      lv_year1 = i_2006-endda+0(4).
      lv_year2 = lv_year1 - 1.
      CONCATENATE lv_year2 '01' '01' INTO lv_date1.
      CONCATENATE lv_year2 '12' '31' INTO lv_date2.
      LOOP AT p2006 WHERE pernr = i_2006-pernr AND
                          begda GE lv_date1    AND
                          endda LE lv_date2    AND
                          ktart = '80'.
        lv_anzhb = p2006-anzhl - p2006-kverb.
        i_rep1-pernr = i_2006-pernr.
        i_rep1-ktext = i_2006-ktext.
        i_rep1-anzhl = p2006-anzhl.
        i_rep1-kverb = p2006-kverb.
        i_rep1-ename = i_2006-ename.
        i_rep1-begda = p2006-begda.
        i_rep1-endda = p2006-endda.
        i_rep1-anzhb = lv_anzhb.
        i_rep1-ktart = '80'.
        i_rep1-year = lv_year2.
        APPEND i_rep1.
        CLEAR: i_rep1.
      ENDLOOP.
    ENDIF.
    CLEAR: lv_year1, lv_year2,
           lv_date1, lv_date2,lv_anzhb.
  ENDLOOP.
  SORT i_rep1 BY pernr ktart.
ENDFORM.          "get_pers_data
*&      Form  append_data
Put the Absence and Quota Data into one Report Int Table
FORM append_data.
  CLEAR:   i_rep.
  REFRESH: i_rep.
  SORT i_2001 BY pernr awart.
  SORT i_2006 BY pernr ktart year.
Move I_REP1 data into i_2006
  LOOP AT i_rep1.
    MOVE-CORRESPONDING i_rep1 TO i_2006.
    APPEND i_2006.
    CLEAR  i_2006.
  ENDLOOP.
Move the Absence and Quota Data into a final Int Table
  LOOP AT i_2006.
    i_rep-pernr = i_2006-pernr.
    i_rep-ename = i_2006-ename.
    i_rep-ktart = i_2006-ktart.
    i_rep-anzhl = i_2006-anzhl.
    i_rep-kverb = i_2006-kverb.
    i_rep-ktext = i_2006-ktext.
    i_rep-anzhb = i_2006-anzhb.
    i_rep-year  = i_2006-year.
    CLEAR i_2001.
    CASE i_2006-ktart.
      WHEN '81'.
        PERFORM get_2001 USING i_2006-pernr '1000' i_2006-year.
      WHEN '50'.
        PERFORM get_2001 USING i_2006-pernr '1002' i_2006-year.
      WHEN '80'.
        PERFORM get_2001 USING i_2006-pernr '1001' i_2006-year.
      WHEN '56'.
        PERFORM get_2001 USING i_2006-pernr '1003' i_2006-year.
      WHEN '51'.
        PERFORM get_2001 USING i_2006-pernr '1004' i_2006-year.
      WHEN '52'.
        PERFORM get_2001 USING i_2006-pernr '1005' i_2006-year.
      WHEN '54'.
        PERFORM get_2001 USING i_2006-pernr '1006' i_2006-year.
      WHEN '53'.
        PERFORM get_2001 USING i_2006-pernr '1007' i_2006-year.
      WHEN '55'.
        PERFORM get_2001 USING i_2006-pernr '1008' i_2006-year.
      WHEN '57'.
        PERFORM get_2001 USING i_2006-pernr '1009' i_2006-year.
      WHEN '90'.
        PERFORM get_2001 USING i_2006-pernr '2000' i_2006-year.
      WHEN '58'.
        PERFORM get_2001 USING i_2006-pernr '2001' i_2006-year.
      WHEN '59'.
        PERFORM get_2001 USING i_2006-pernr '2002' i_2006-year.
      WHEN '91'.
        PERFORM get_2001 USING i_2006-pernr '2003' i_2006-year.
    ENDCASE.
    IF sy-subrc <> 0.
      APPEND i_rep.
    ENDIF.
    CLEAR i_rep.
  ENDLOOP.
  SORT i_rep BY pernr ktart year.
  DELETE i_rep WHERE pernr = ' '.
ENDFORM.              " append_data
*&      Form  display_qa_data
Display the Absence and Quota Data
FORM display_qa_data.
  DATA: lv_flag,                   " New Flag
        lv_tot2 TYPE ptm_quonum.   " Absence Balance days
  IF i_rep[] IS INITIAL.
    MESSAGE i000 WITH 'No Data found'(014).
  ELSE.
    LOOP AT i_rep.
toggle color
      PERFORM toggle_color.
      IF lv_flag <> space.
        NEW-LINE.
      ENDIF.
      AT NEW pernr.
        READ TABLE i_rep INDEX sy-tabix.
        WRITE:/1 sy-vline,2(8) i_rep-pernr,
          10 sy-vline,11(40)   i_rep-ename.
      ENDAT.
      AT NEW ktart.
        READ TABLE i_rep INDEX sy-tabix.
        WRITE: 1 sy-vline, 10 sy-vline,
          51 sy-vline,52(25)   i_rep-ktext.
      ENDAT.
      AT NEW year.
        READ TABLE i_rep INDEX sy-tabix.
        WRITE: 1 sy-vline, 10 sy-vline,
              51 sy-vline,
              77 sy-vline, 78(4)  i_rep-year,
              82 sy-vline, 83(11) i_rep-anzhl,
              94 sy-vline, 95(25) i_rep-atext,
             120 sy-vline,133 sy-vline,
             144 sy-vline,
             155 sy-vline,156(13)  i_rep-anzhb,
             169 sy-vline.
      lv_tot2 = lv_tot2 + i_rep-anzhb.
      ENDAT.
      WRITE: 1 sy-vline,  10 sy-vline,
            51 sy-vline,  77 sy-vline,
            82 sy-vline,  94 sy-vline,
           120 sy-vline,121(12)  i_rep-abrtg NO-ZERO,
           133 sy-vline,134(10)  i_rep-begda NO-ZERO,
           144 sy-vline,145(10)  i_rep-endda NO-ZERO,
           155 sy-vline,169 sy-vline.
      NEW-LINE.
      AT END OF pernr.
        WRITE  : /1(169) sy-uline.
        SUM.
        FORMAT COLOR 3.
        WRITE:/1 sy-vline,   10 sy-vline,
              51 sy-vline,   77 sy-vline,
              82 sy-vline,   94 sy-vline,
             120 sy-vline,121(12) i_rep-abrtg,
             133 sy-vline,144 sy-vline,
             155 sy-vline, 156(13) lv_tot2,
             169 sy-vline.
        FORMAT COLOR OFF.
        WRITE  : /1(169) sy-uline.
        CLEAR lv_tot2.
      ENDAT.
    ENDLOOP.
  ENDIF.
ENDFORM.              " display_qa_data
*&      Form  display_q_data
Display only the Quota Data
FORM display_q_data.
  DATA: lv_flag.               " New Flag
  SORT i_2006 BY pernr ktart year.
  IF i_2006[] IS INITIAL.
    MESSAGE i000 WITH 'No Data found'(014).
  ELSE.
    LOOP AT i_2006.
Toggle Color
      PERFORM toggle_color.
      IF lv_flag <> space.
        NEW-LINE.
      ENDIF.
      AT NEW pernr.
        READ TABLE i_2006 INDEX sy-tabix.
        WRITE: /1 sy-vline,  2(8)  i_2006-pernr,
               10 sy-vline,11(40)  i_2006-ename.
      ENDAT.
      AT NEW ktart.
        READ TABLE i_2006 INDEX sy-tabix.
        WRITE: 1 sy-vline,10 sy-vline,
              51 sy-vline,52(25)  i_2006-ktext.
      ENDAT.
      AT NEW year.
        READ TABLE i_2006 INDEX sy-tabix.
        WRITE: 1 sy-vline,  10 sy-vline,
              51 sy-vline,
              77 sy-vline,78(4)  i_2006-year,
              82 sy-vline,83(11) i_2006-anzhl,
              94 sy-vline,95(13) i_2006-anzhb,
             108 sy-vline.
        NEW-LINE.
      ENDAT.
      AT END OF pernr.
        WRITE  : /1(108) sy-uline.
        SUM.
        FORMAT COLOR 3.
        WRITE: /1 sy-vline, 10 sy-vline,
               51 sy-vline,
               77 sy-vline, 82 sy-vline,
               94 sy-vline, 95(13) i_2006-anzhb,
              108 sy-vline.
        FORMAT COLOR OFF.
        WRITE  : /1(108) sy-uline.
      ENDAT.
    ENDLOOP.
  ENDIF.
ENDFORM.              " display_q_data
*&      Form  display_a_data
Display Only the Absence Quota
FORM display_a_data.
  DATA: lv_flag.               " New Flag
  SORT i_2001 BY pernr awart.
  IF i_2001[] IS INITIAL.
    MESSAGE i000 WITH 'No Data found'(014).
  ELSE.
    LOOP AT i_2001.
Toggle Color
      PERFORM toggle_color.
      IF lv_flag <> space.
        NEW-LINE.
      ENDIF.
      AT NEW pernr.
        READ TABLE i_2001 INDEX sy-tabix.
        WRITE: /1 sy-vline, 2(10) i_2001-pernr,
               10 sy-vline,11(40) i_2001-ename.
      ENDAT.
      WRITE:  1 sy-vline, 10 sy-vline,
              51 sy-vline,52(25) i_2001-atext,
              77 sy-vline,78(12) i_2001-abrtg,
              90 sy-vline,91(10) i_2001-begda,
             101 sy-vline,102(10) i_2001-endda,
             112 sy-vline.
      NEW-LINE.
      AT END OF pernr.
        WRITE  : /1(112) sy-uline.
        SUM.
        FORMAT COLOR 3.
        WRITE: /1 sy-vline, 10 sy-vline,
               51 sy-vline,
               77 sy-vline,78(12) i_2001-abrtg,
               90 sy-vline,101 sy-vline,
              112 sy-vline.
        FORMAT COLOR OFF.
        WRITE  : /1(112) sy-uline.
      ENDAT.
    ENDLOOP.
  ENDIF.
ENDFORM.              " display_a_data
*&      Form  header
Write the Report Header
FORM header .
  data : lv_pers type pbtxt,
         lv_orgn type orgtx.
  gv_title1 = sy-title.              " Set List Header
  IF p_qa = c_x.
    NEW-PAGE LINE-SIZE 193.
  ELSEIF p_a = c_x.
    NEW-PAGE LINE-SIZE 125.
  ELSEIF p_q = c_x.
    NEW-PAGE LINE-SIZE 119.
  ENDIF.
Standard header
  FORMAT RESET.
  CALL FUNCTION 'Z_STANDARD_HEADER'
    EXPORTING
      title1 = gv_title1.
Get the Personal Area and Org.Unit Texts
  clear : lv_pers,lv_orgn.
  select single name1 into lv_pers
    from t500p where persa = pnpwerks-low.
  select single orgtx into lv_orgn
    from t527x where sprsl = sy-langu and
                     orgeh = pnporgeh-low and
                     endda = c_endda.
  if not lv_pers is initial.
    write : /2 'Personal Area:'(017), 17(25) lv_pers color 7.
  endif.
  if not lv_orgn is initial.
    write : /2 'Organization Unit:'(021), 20(25) lv_orgn color 3.
  endif.
  IF p_qa = c_x.
    FORMAT COLOR COL_HEADING.
    WRITE  : /1(169) sy-uline.
    WRITE:/1 sy-vline,2(8)    'Emp.No'(015) CENTERED,
          10 sy-vline,11(40)  'Employee Name'(016) CENTERED,
          51 sy-vline,52(25)  'Quota Description'(018) CENTERED,
          77 sy-vline,78(4)   'Year'(027),
          82 sy-vline,83(11)  'Entitlement'(019),
          94 sy-vline,95(25)  'Absence Description'(022) CENTERED,
         120 sy-vline,121(12) 'Absence days'(023),
         133 sy-vline,134(10) 'From Date'(024),
         144 sy-vline,145(10) 'To Date'(025),
         155 sy-vline,156(13) 'Quota Balance'(020),
         169 sy-vline.
    WRITE  : /1(169) sy-uline.
  ELSEIF p_q = c_x.
    FORMAT COLOR COL_HEADING.
    WRITE  : /1(108) sy-uline.
    WRITE:/1 sy-vline,2(8)   'Emp.No'(015) CENTERED,
          10 sy-vline,11(40) 'Employee Name'(016) CENTERED,
          51 sy-vline,52(25) 'Quota Description'(018) CENTERED,
          77 sy-vline,78(4)  'Year'(027),
          82 sy-vline,83(11) 'Entitlement'(019),
          94 sy-vline,95(13) 'Quota Balance'(020),
         108 sy-vline.
    WRITE  : /1(108) sy-uline.
  ELSEIF p_a = c_x.
    FORMAT COLOR COL_HEADING.
    WRITE  : /1(112) sy-uline.
    WRITE:/1 sy-vline,2(8)    'Emp.No'(015) CENTERED,
          10 sy-vline,11(40)  'Employee Name'(016) CENTERED,
          51 sy-vline,52(25)  'Absence Description'(022) CENTERED,
          77 sy-vline,78(12)  'Absence days'(023),
          90 sy-vline,91(10)  'From Date'(024),
         101 sy-vline,102(10) 'To Date'(025),
         112 sy-vline.
    WRITE  : /1(112) sy-uline.
  ENDIF.
ENDFORM.                    " header
*&      Form  toggle_color
This routine alters the color of the records in the list
FORM toggle_color.
  IF gv_dial = space.
    FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
    gv_dial = c_x.
  ELSE.
    FORMAT COLOR 1 INTENSIFIED OFF.
    CLEAR gv_dial.
  ENDIF.
ENDFORM.                    " toggle_color
*&      Form  get_2001
Get the ABsence type for each Quota type
FORM get_2001 USING p_pernr TYPE persno
                    p_value TYPE awart
                    p_year.
  LOOP AT i_2001 WHERE pernr = p_pernr AND
                       awart = p_value AND
                       endda+0(4) = p_year.
    i_rep-awart = i_2001-awart.
    i_rep-abrtg = i_2001-abrtg.
    i_rep-atext = i_2001-atext.
    i_rep-begda = i_2001-begda.
    i_rep-endda = i_2001-endda.
    APPEND i_rep.
  ENDLOOP.
ENDFORM.                                                    " get_2001
Regards
anji

Similar Messages

  • Regarding Time Management in SAP ABAP-HR

    Hi,
          Can anybody provide the link for Time Management . I want to learn Time Management in SAP ABAP-HR. Please do the needful.
    Thanks in advance.
    Pavan.

    Hi
    http://help.sap.com/saphelp_47x200/helpdata/en/8a/9868bc46c411d189470000e829fbbd/frameset.htm
    Regards

  • Regarding Time Management Query

    ***Dear experts,***
    ***The employee who is "present" marked as "absent" and the employee who is "absent" has got payment.***
    ***Further leave combinations/Leave rules are not working properly.***

    *Dear Experts,*
    *The employee who is present marked "Absent" and the employee who is "Absent" has got payment.*
    *Further leave combinations/Leave rules are not working properly.*

  • Time management Special cases

    Hi everyone....
    I just have some special cases in Time Management:
    1-i want to count the absence days in different way as follows: if the start date and the end date of the
    absence (of annual leave type only) is exactly before and after holiday, then the holiday should be included
    in the count too, for example:
    the employee took an annual leave from 30-05 to 01-06 and we defined 31-05 as a holiday, then this absence
    should be three days not only two.
    so can this be done without using schema.
    2-our customer have many projects to work in, and the attendance should be recorded manually, the case is
    that when the attendance of the employee recorded it should have something like comment to be able to know
    what project the employee attended, i handled this by using InfoType 2002 and made attendance types, one
    for each project, but this means that when some project closes or when a new project assigned to the company
    this means that they should come back to me as a support, so doese anyone have an extra idea.
    3-the last thing i want is to have some standard report that can use the time statement i made like pt60,
    to be available for admins to use anytime as pt60 uses it only in time evaluation, and if anyone have some
    good links or books for making time statements please send.
    Regards;
    Evan

    Question no.1...
    It will be standard behaviuor of the system that it will deduct the sadwich holidays. Please check the calendar days in 2001. if its not so then let me know.
    Question no.2....
    Ask the ABAPER to Apend the structure of IT2001 and give the text box there. Through this you will be able to enter the text against each holiday for all leave types. If so then make it mandatory field otherwise remain as optional.
    Question no.3....
    You have two options.
    1. Make a ABAPED report for view purpose.
    2. Give them the authorization to view the cluster table report. Run t-code se38 and check this report RPCLSTB2. It will contain all data regarding time management of employee.

  • Time management and SAP HR submodules

    can any body give the information functional and technnically regarding time management.........?
    What is the procedure to learn the HR submodules..........?
    does any body have any documents send  to me

    http://www.sap-help.info/sap-hr-py.html
    Firslty
    OM
    PA
    TM
    PY
    later TEM , ESS ,MSS and other submodules
    Edited by: Sikindar on Apr 30, 2009 12:59 PM

  • Time management - Positive

    Hi Expers,
    I have query regarding time management. The scenario is I am doing SAP-HR implementation of manufacturing company who are using time machine to capture clock-in and clock-out time. Now they want us to upload this time data (In-time and out-time) of employee into SAP through BDC and process it accordingly as present, late, overtime and absent.
    My query is :
    In which time infotype do i update in-out data of employee (Is it 2001, 2002 or 2011 and then move to 2001 and 2002)
    How and where do i do logic building for raw in-out data being present, absent , overtime or late.
    What should be the Time Management Status (0, 7 or 9),
    How do i link attendance of employee with work schedule of employee
    Thanks a lot for your support.
    Regards,
    Jyoti

    Hi,
    1. It won't update the 2002 infotype, until you write coding to store the timings. If you have clock in, outs..you can upload into 2011IT. In this record pair formation is there as per standard. It you update in 2002 there is no pair formation, you have to create 2 attendance types and need to update the clock in,out. But, in 2011 no need to create/configure anything else. Here we can store the actual date of the employee timings. so better suggestion, write BDC program with abaper then upload the clock in, out. Before updating clock -in, out , maintain the 0050IT.
    Time data get process in payroll by the PARTT function, if you have overtime then it will with ZLIT function time date will process in payroll. you can get the no.of working days, calendar days(present days) in in ur payslip. for this you can use TKSOLL, TSSOLL.
    2. After clock out employee, system will check the excess hours of the employee, if employee worked more than work schedule hours, then system will consider as overtime i.e, excess hours after clock out.
    Group A:  after excess hours we can pay overtime remuneration to employee by end of the month. ZL table will pass the no.of hours into payroll system by time wage type. For this, you have create one time wage type and update the Processing class 17 - A specification.
    Group B: Transfer the excess hours(overtime ) into one time type, assign this time type to absence quota in base entitlement. then you can create the leave type and assign this leave to to absence quota. then employee can take the paid leaves. or you can encash the leaves.
    Group C: for 8:30 hour overtime you have to write a rule for this condition. You can convert the excess hours into leaves(as per group B), for less than 8:30 hours then need to go with PCR. and you can pay as ex-gratio by maining 14, 15IT
    Group D: follow the Group B procedure.
    3. for late coming purpose you have to write one rule by quering PBEG, PEND.
    I hope you will understand the above.
    Regards.
    Devi.

  • Regarding Organization n Time management material

    Hi Experts,
    At present iam working in PA n PY module.
    Can anybody provide me the Organization n Time management material.
    I am new to these topics.
    Thanks in advance.
    Kavitha Pasula.

    Kavitha,
    Pls check the following links.
    http://help.sap.com/saphelp_erp2004/helpdata/en/3a/ec0fc8dd7811d396fb00a0c930669b/frameset.htm
    http://searchsap.techtarget.com/expert/KnowledgebaseAnswer/0,289625,sid21_gci864747,00.html
    http://www.sap.com/solutions/business-suite/erp/hcm/pdf/HCM_Time_Management.pdf
    Hope this helps you. Let me know if you need anything specific.
    Rgds
    Manish

  • What are the major challenges for the end-user in using Positive Time Management

    Hi Seniors,
    Can anybody please provide me some data on the same.
    Thanks.

    Hi,
    Positive time management is slightly difficult to implement compared to negative time management.
    In negative time management, you use planned working times + deviations in time evaluation.
    In positive time management, you record actual times through time recording system. You have to bring these times to SAP through an interface and then evaluate the actual times against the planned times and accordingly pay them out. You would need to pay attention regarding the integration between SAP R/3 and time recording system.
    Building rules for positive time management is slightly more challenging compared to negative time management.
    Kindly go through the below documents on positive time management which will give you more idea about the same.
    Integration of Time Recording Terminals with SAP R/3
    Determination of First Clock In & Last Clock Out in Positive Time Evaluation
    Late Coming, Early Going and Unauthorized absence
    Prorated Grant of Absence Quota for Contract Period in Time Evaluation
    Splitting of Overtime Hours after X Hours in Time Evaluation
    Rounding off Overtime Hours Generated via T510S table in Time Evaluation
    Public Holiday Calendar and Work Schedule Rules
    I hope these are helpful to you.
    Thanks and regards,
    Vivek Barnwal

  • Query on Time Management Status

    Dear Team,
    Scenario:
    We have some employees wherein the time evaluation will be evaluated for the status of 9 in Planned Working Time Infotype. After a period of time, these employees will be sent for education and no leaves are entitled. In this case, the time management status will be changed to 0. No time evaluation.
    The accrued leaves will still be available for the employee while going to this education for example 20 days.
    We have customized a rule, which will carry forward the last year balance to the current year balance on every 1st of the year.
    In the above case, if an employee completes his education and returns back in the middle of the year other than the 1st day of the year, in this case, the carry forward of leave is not taking place.
    My assumptions:
    I would like to know an operation which would query the Previous Day Time Management Status and Current Day Time Management Status. If I can able to do this, if it is YES, the last old previous balance to be carried forward....
    Please let me know if any other alternative method.
    Thanks and Regards
    Team Member.
    Edited by: Patlolla Mallikarjun on Apr 26, 2010 8:35 PM

    Hello Mallikarjun,
    If you are planning on controlling thru a rule in schema, you can approach this way. Whenever an EE returns from education, change IT0007 time mgmt status to 9 along with additional time indicator say 'ED'. You can query the additional time indicator status in a rule thru the operation 'OUTWPATIND'. Hope this helps your requirement.
    Best Regards,
    Sunny

  • ABAP-HR, Time Management

    Hi,
    In HR-ABAP,  i want to know complete funciton modules, macros and few sample programs that are related to TIME MANAGEMENT in HR-ABAP.
    How to generate a report for different type of leaves, Starting time and ending time of employee daily, his shedules, etc.,
    Hoping for best results with in less time.
    Thanks&Regards.
    Shiva.

    Use this BAPI in your Report
    BAPI_EMPATTABS_GETDETAIL

  • Hi all i have doubt in time management

    Hi All,
    I have a doubt in time management,
    Q) If in a enterprise diversified daily work shedule are there, i.e if aemployee is working 4hrs a day & other is working 6 hrs per day, & other is working 1 day a week and the client does not want these many of work shedules.
    What advise you give to the client
    if any body give the answer
    Thanks nad regards
    srinivas

    Hi Srinivas,
      If your client is persistent of not wanting too many work schedules, Flexible Work Schedule will resolve your issue.
       - assign a Flexible workschedule(planned working time is 24 hrs 0:00-24:00) for all these kind of employees.
       - I hope you know the effects of Flexible workschedules- Then you need to desing your schema as positive time eval
    If your client does not like this idea, as others suggested no essay way ...
    Hope this will work.
    thanks
    Mahesh

  • Use of TM04 in negative time Management

    Dear All,
    What is the use of TM04 schema in (-)ve time management. For absence and attendaces we use Factoring and the required parameters for Factoring like TKDIVI or TKSOLL is available from function PARTT (Partial period parameter).
    Can u please explain me
    Regards
    Prasad

    Hi Sowmya,
    TM04 is used for -ve Time mgt and is for planned working hours, - ve Time mgt wil capture the any deviations in your work schudule, i.e overtiem, Absence etc,
    and Time Mgt satus is reqiurd for the integtration with payroll,
    Time mgt staus 9 is for Integration with payroll,
    if u use +ve Time  actual working hour u use Time Mgt status 1,2
    Hope this will give u and idea,
    reward points if helpful.
    Regards
    Srinivas

  • USE OF CATS IN Negative time management scinario

    Hi Friends,
                    I need your guidance on following points
        1)    Is there any relevance of using CATS in negative time management.
        2)  If we have to use CATS in negative time management what should be the time management status o or 7
        3) If we transfer the data to HR management does it updates 2002 IT
    Hope for your reply plz
    Thanks in advance
    Regards
    Rajesh Rai

    Rajesh,
    1. CATS is very much relevant in negative time management for payment of overtime, recording absences and attendances. In CATS, the employee would enter time using activity types which needs to be mapped to the relevant attendance / absence types. After approval, the times charged in the time sheets would be transferred to infotypes 2001 / 2002 / 2010 (can be used for overtime)
    You can use the data transfer reports "RPTEXTPT" for Human Resources components
    Pls. refer to the below link for information
    http://help.sap.com/saphelp_47x200/helpdata/en/dc/f9783b05efdb18e10000000a114084/frameset.htm
    2. You can use TMSTA "9" - Time evaluation - planned times while using CATS
    3. CATS data can be very much transferred to infotype 2002
    http://help.sap.com/saphelp_47x200/helpdata/en/dc/f9783b05efdb18e10000000a114084/frameset.htm
    Hope this information helps
    Regards
    Raj

  • How to read data from clusters ( Time Management )

    Hi All,
       How can we read data from cluster tables related to Time Management in different ways?
       Can somebody help me please..
    Thanks,
    Sankar.

    Hi
    Kindly check the following thread:
    Cluster database
    It has a sample code to read from & to store data in a cluster table
    Hope you are looking for cluster tables in HR
    Some useful HR tables:
    HRP1000 - Infotype 1000 DB Table
    HRP1001 - Infotype 1001 DB Table
    HRP1028 - Infotype 1028 DB Table
    Paxxxx - transparent tables for infotypes
    PCL1 - HR Cluster 1
    PCL2 - HR Cluster 2
    PCL3 - HR Cluster 3
    PCL4 - HR Cluster 4
    PCL5 - HR/RP Cluster 5; HR Planning Usage
    PERNR - Standard Selections for HR Master Data Reporting (Structure)
    kindly check the following link for some useful HR tables:
    http://www.atomhr.com/know_preview/SAP_HR_tables.htm
    Hope this helps!
    best regards,
    Thangesh

  • Design of Time Management infocube

    Hi, I need the help of HR BW experts!!!
    The scenario is this:
    1) I'm loading transactional data for time and accidents through Flat files into an ODS
    2) My final cube, must have the 0EMPLOYEE and their attributes as well to use in reports
    3) I  know master data 0EMPLOYEE is time dependant.
    4) I added attributes as fieds in my Cube (for performance reasons). The question is WHICH IS THE BEST WAY TO FILL ALL ATTR?
    I'm looking at the standard. In the doc there is 2 routines: Personne and a Global routine. But I can not see them!!! Even this, I understand that this attributes must be filled with the values according to the date of loadind (business rule).
    So, do I have to create a function - routine to read master data according to the DATE of loading?
    Or it is already done in the standard?
    In SAP note 336229, it says:
    4.All attributes of 0PERSON and 0EMPLOYEE must be time-dependent.
    Maintenance of the validity slice (Transaction RSDV) for InfoCube 0PAPA_C02 after the first load of data:to-mode 'Fixed value' and '31.12.9998' as a date
    What is it? Can apply for PT??
    Please, if somebody has implemented this, PT information, Time Management, tell me which is the best solution for this, having into account performance issues.
    Thank you!!
    Regards
    Rosana

    0employee has time dependent attributes.
    So, when you are loading the transactional data, the system will check the attribute value, which is valid currently and load the data accordingly.
    Lets say
    0employee   Valid from    Valid to           Country
    10001           21.03.2008   22.03.2009      IN
    10001           23.03.2009    31.12.9999     SG   
    Country is an attribute of 0employee.
    When you are loading the data today, the system will check the valid country ( country = SG is valid today) and fill the attributes.
    Hope this is clear.
    Ravi

Maybe you are looking for