Sunday, September 15, 2013

List of employee who completed certain yrs of service, SAP HR to ABAP reports

List of Employees Who Have Completed Certain Yrs of Service
*&---------------------------------------------------------------------*
*& Report  ZPV003HR_ANIV_EMP                                           
*&---------------------------------------------------------------------*

REPORT  zpv003hr_aniv_emp  .

TABLES: pernr.
INFOTYPES: 0002,
           0001.

DATA: age TYPE d,
      serv TYPE d,
      curdate TYPE d.

DATA: years TYPE d,
      enddate TYPE d .

DATA: BEGIN OF int_empinfo OCCURS 0,
        pernr LIKE p0002-pernr,
        nachn LIKE p0002-nachn,
        vorna LIKE p0002-vorna,
        gbdat LIKE p0002-gbdat,
        begda LIKE p0001-begda,
        emp_age   TYPE d,
        emp_serv  TYPE d,
      END OF int_empinfo.

SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
PARAMETERS: 5_years RADIOBUTTON GROUP g1  DEFAULT 'X',
            10_years RADIOBUTTON GROUP g1,
            15_years RADIOBUTTON GROUP g1.
*curdate type d DEFAULT '00050101' .
SELECTION-SCREEN END OF BLOCK block1.


START-OF-SELECTION .
  IF 5_years = 'X'.
    curdate = '00050101'.
  ELSEIF 10_years = 'X'.
    curdate = '00100101'.
  ELSEIF 15_years = 'X'.
    curdate = '00150101'.
  ENDIF.

GET pernr.
  PERFORM get_0002.
  PERFORM get_0001.
  IF int_empinfo-emp_serv NE '00000000'.
    APPEND int_empinfo.
  ENDIF.

END-OF-SELECTION.

  IF int_empinfo[] IS INITIAL.
WRITE:/ 'NO EMPLOYEE WITH', curdate+2(2), 'YEARS OF  SERVICE' COLOR 6  
.
  ENDIF.

  PERFORM write_empinfo.


*&---------------------------------------------------------------------*
*&      Form  get_0002
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_0002 .

  rp-provide-from-last p0002 space pn-begda pn-endda.
  IF pnp-sw-found EQ '1'. "record found

    age   = sy-datum - p0002-gbdat.

    MOVE:
           p0002-pernr TO int_empinfo-pernr,
           p0002-vorna TO int_empinfo-vorna,
           p0002-nachn TO int_empinfo-nachn,
           p0002-gbdat TO int_empinfo-gbdat,
           age TO int_empinfo-emp_age.

  ELSE.
    REJECT.
  ENDIF.


ENDFORM.                                                    " get_0002

*&---------------------------------------------------------------------*
*&      Form  write_empinfo
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM write_empinfo .

  LOOP AT int_empinfo.
    WRITE:/
            int_empinfo-pernr,
           20  int_empinfo-nachn,
           35  int_empinfo-vorna,
           50  int_empinfo-gbdat,
           75  int_empinfo-emp_age+2(2),
           85  int_empinfo-emp_serv+2(2) .

  ENDLOOP.


ENDFORM.                    " write_empinfo
*&---------------------------------------------------------------------*
*&      Form  get_1001
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_0001 .
  rp-provide-from-last p0001 space pn-begda pn-endda.
  IF pnp-sw-found EQ '1'. "record found

    enddate = p0001-endda .
    years = sy-datum - p0001-begda.
    IF years > curdate AND enddate >= '99991231' .

      MOVE:
             years TO int_empinfo-emp_serv.
    ENDIF.
  ELSE.
    REJECT.
  ENDIF.
ENDFORM.                                                    " get_1001

TOP-OF-PAGE.
  WRITE:/
              'EMP_PERNR',
             20  'LAST_NAME',
             35  'FIRST_NAME',
             50  'DOB',
             75  'EMP_AGE',
             85  'EMP_SERVICE' .

ULINE.

No comments:

Post a Comment