You are on page 1of 9

*&---------------------------------------------------------------------* *& Report

Z_RIZ_HR_EMP_ABSENCE_DET *&
*&---------------------------------------------------------------------* *& *&
*&---------------------------------------------------------------------* REPORT
Z_RIZ_HR_EMP_ABSENCE_DET. TABLES : PA0001,PA2006. TYPE-POOLS:SLIS. SELECT-OPTIONS :
S_EMP FOR PA0001-PERNR, S_PERSG FOR PA0001-PERSG, S_BEGDA FOR PA0001-BEGDA, S_KTART
FOR PA2006-KTART. TYPES: BEGIN OF TY_EMP, PERNR TYPE PA0001-PERNR, CNAME TYPE
PA0002-CNAME, PERSG TYPE PA0001-PERSG, PTEXT TYPE T501T-PTEXT, PERSK TYPE PA0001-
PERSK, PTEXT1 TYPE T503T-PTEXT, AWART TYPE PA2001-AWART, ATEXT TYPE T554T-ATEXT,
ABRST TYPE PA2001-ABRST, ABWTG TYPE PA2001-ABWTG, KTART TYPE PA2006-KTART, KTEXT
TYPE T556B-KTEXT, BEGDA TYPE PA2001-BEGDA, ENDDA TYPE PA2001-ENDDA, ANZHL TYPE
PA2006-ANZHL, KVERB TYPE PA2006-KVERB, BALCE(3) TYPE N, END OF TY_EMP.

" " " " " " " " " " "

Emp Number Emp Name Emp Group NAME OF EMP GROUP Emp Sub Group EmpSub Group Name
Abscence TYPE Absence Type Text Abscence hr Abscence Days Leave Type " Absence
quota type text (LEAVE TYPE TEXT) " Begin date " End date " Leave Quota Number "
Leave Quota " Balance ( Leave Quota - Abscence Days)

TYPES : BEGIN OF TY_0001, PERNR TYPE PA0001-PERNR, PERSG TYPE PA0001-PERSG, PERSK
TYPE PA0001-PERSK, END OF TY_0001. TYPES : BEGIN OF TY_0002, PERNR TYPE PA0001-
PERNR, vorna TYPE PA0002-vorna, nachn TYPE PA0002-nachn, END OF TY_0002. TYPES :
BEGIN OF TY_2001, PERNR TYPE PA0001-PERNR, BEGDA TYPE PA2001-BEGDA, " Begin date
ENDDA TYPE PA2001-ENDDA, " End date AWART TYPE PA2001-AWART, " ABSANCE TYPE
ABWTG TYPE PA2001-ABWTG, " Abscence Days ABRST TYPE PA2001-ABRST, " Abscence hr END
OF TY_2001. TYPES : BEGIN OF TY_2006, PERNR TYPE PA2006-PERNR, KTART TYPE PA2006-
KTART, " Leave Type ANZHL TYPE PA2006-ANZHL, " Leave Quota Number KVERB TYPE
PA2006-KVERB, " Deduction END OF TY_2006. TYPES : BEGIN OF TY_T501T, PERSG TYPE
T501T-PERSG, PTEXT TYPE T501T-PTEXT, END OF TY_T501T. " EMPLOYEE GROUP " Name of
Employee Group

TYPES : BEGIN OF TY_T503T, PERSK TYPE T503T-PERSK, " EMPLOYEE SUB GROUP PTEXT1 TYPE
T503T-PTEXT, " Name of Employee SUB Group END OF TY_T503T. TYPES : BEGIN OF
TY_T554T, AWART TYPE T554T-AWART, ATEXT TYPE T554T-ATEXT, END OF TY_T554T. TYPES :
BEGIN OF TY_T556B, KTART TYPE T556B-KTART, KTEXT TYPE T556B-KTEXT, END OF TY_T556B.
" Attendance or Absence Type " Text for Attendance/Absence Type

" Absence Quota Type (LEAVE TYPE) " Absence quota type text

DATA : it_emp TYPE ty_emp OCCURS 0, wa_emp type ty_emp, it_0001 TYPE TABLE OF
ty_0001, wa_0001 type ty_0001, it_0002 TYPE TABLE OF ty_0002, wa_0002 type ty_0002,
it_2001 type TABLE OF ty_2001, wa_2001 type ty_2001, it_2006 TYPE TABLE OF ty_2006,
wa_2006 TYPE ty_2006, IT_T501T TYPE TABLE OF TY_T501T, WA_T501T TYPE TY_T501T,
IT_T503T TYPE TABLE OF TY_T503T, WA_T503T TYPE TY_T503T, IT_T554T TYPE TABLE OF
TY_T554T, WA_T554T TYPE TY_T554T, IT_T556B TYPE TABLE OF TY_T556B, WA_T556B TYPE
TY_T556B.
READ TABLE s_begda INDEX 1. SELECT PERNR PERSG PERSK FROM PA0001 INTO CORRESPONDING
FIELDS OF TABLE IT_0001 WHERE PERNR IN S_EMP and begda le S_BEGDA-high and endda ge
s_begda-low. if sy-dbcnt = 0. MESSAGE I000(ZRIZ_MSG) WITH ' NO EMP REC FOUND'.
ELSE. SELECT PERSG PTEXT FROM T501T INTO CORRESPONDING FIELDS OF TABLE IT_T501T FOR
ALL ENTRIES IN IT_0001 WHERE PERSG = IT_0001-PERSG and sprsl = sy-langu. SELECT
PERSK PTEXT FROM T503T INTO CORRESPONDING FIELDS OF TABLE IT_T503T FOR ALL ENTRIES
IN IT_0001 WHERE PERSK = IT_0001-PERSK and sprsl = sy-langu. SELECT PERNR VORNA
nachn FROM PA0002 INTO CORRESPONDING FIELDS OF TABLE IT_0002 FOR ALL ENTRIES IN
IT_0001 WHERE PERNR = IT_0001-PERNR and begda le S_BEGDA-high and endda ge s_begda-
low. sort it_0002 by pernr. SELECT PERNR BEGDA ENDDA AWART ABWTG ABRST FROM PA2001
INTO CORRESPONDING FIELDS OF TABLE IT_2001 FOR ALL ENTRIES IN IT_0001 WHERE PERNR =
IT_0001-PERNR and begda le S_BEGDA-high and endda ge s_begda-low. SELECT AWART
ATEXT FROM T554T INTO CORRESPONDING FIELDS OF TABLE IT_T554T FOR ALL ENTRIES IN
IT_2001 WHERE AWART = IT_2001-AWART and sprsl = sy-langu. SELECT PERNR KTART ANZHL
KVERB FROM PA2006
INTO CORRESPONDING FIELDS OF TABLE IT_2006 FOR ALL ENTRIES IN IT_0001 WHERE PERNR =
IT_0001-PERNR and begda le S_BEGDA-high and endda ge s_begda-low. SELECT KTART
KTEXT FROM T556B INTO CORRESPONDING FIELDS OF TABLE IT_T556B FOR ALL ENTRIES IN
IT_2006 WHERE KTART = IT_2006-KTART and sprsl = sy-langu. SORT IT_2006 BY PERNR.
ENDIF. LOOP AT it_0001 into wa_0001. wa_emp-pernr = wa_0001-pernr. wa_emp-persg =
wa_0001-persg. wa_emp-persk = wa_0001-persk. READ TABLE IT_T501T INTO WA_T501T WITH
KEY PERSG = wa_0001-persg. IF SY-subrc = 0. wa_emp-ptext = WA_T501T-PTEXT. ENDIF.
READ TABLE IT_T503T INTO WA_T503T WITH KEY PERSK = wa_0001-persk. IF SY-subrc = 0.
wa_emp-ptext1 = WA_T501T-PTEXT. ENDIF. READ TABLE it_0002 into wa_0002 with key
pernr = wa_0001-pernr BINARY SEARCH. if sy-subrc = 0. CONCATENATE wa_0002-vorna
WA_0002-NACHN INTO WA_EMP-CNAME SEPARATED BY SPACE. endif.

LOOP AT IT_2001 INTO WA_2001 WHERE PERNR = WA_0001-PERNR. WA_EMP-BEGDA WA_EMP-ENDDA


WA_EMP-AWART WA_EMP-ABRST WA_EMP-ABWTG = = = = = WA_2001-BEGDA. WA_2001-ENDDA.
WA_2001-AWART. WA_2001-ABRST. WA_2001-ABWTG.

READ TABLE IT_T554T INTO WA_T554T WITH KEY AWART = WA_2001-AWART. IF SY-subrc = 0.
wa_emp-ATEXT = WA_T554T-ATEXT. ENDIF. IF WA_2001-AWART = '0100'. READ TABLE it_2006
into wa_2006
with key pernr = wa_0001-pernr KTART = '09' BINARY SEARCH. IF SY-SUBRC = 0. WA_EMP-
KTART = WA_2006-KTART. WA_EMP-ANZHL = WA_2006-ANZHL. WA_EMP-KVERB = WA_2006-KVERB.
WA_EMP-BALCE = WA_2006-ANZHL - WA_2006-KVERB. ENDIF. READ TABLE IT_T556B INTO
WA_T556B WITH KEY KTART = WA_2006-KTART. IF SY-subrc = 0. wa_emp-KTEXT = WA_T556B-
KTEXT. ENDIF. ENDIF. APPEND WA_EMP TO IT_EMP. ENDLOOP.

ENDLOOP. DATA:it_fieldcat TYPE SLIS_T_FIELDCAT_ALV, wa_fieldcat TYPE


SLIS_FIELDCAT_ALV . DATA: IT_EVENTS TYPE SLIS_T_EVENT, WA_EVENTS TYPE
SLIS_ALV_EVENT. DATA : IT_HEADER TYPE SLIS_T_LISTHEADER, WA_HEADER TYPE
SLIS_LISTHEADER. wa_events-name = 'TOP_OF_PAGE'. WA_EVENTS-FORM = 'PO_TOP'. APPEND
WA_EVENTS TO IT_EVENTS.

*CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' * EXPORTING * I_PROGRAM_NAME = sy-


repid * I_INTERNAL_TABNAME = 'IT_EMP' ** I_STRUCTURE_NAME = 'IT_EMP' **
I_CLIENT_NEVER_DISPLAY = 'X' ** I_INCLNAME = * I_BYPASSING_BUFFER = 'X' **
I_BUFFER_ACTIVE = * CHANGING * CT_FIELDCAT = it_fieldcat * EXCEPTIONS *
INCONSISTENT_INTERFACE = 1 * PROGRAM_ERROR = 2 * OTHERS = 3 * . *IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO ** WITH SY-MSGV1 SY-MSGV2 SY-
MSGV3 SY-MSGV4. *ENDIF.

PERFORM PREPARE_FIELDCAT USING: 'PERNR' 'Employee name', 'CNAME' 'Employee Name',


'PERSG' 'Employee Group', 'PTEXT' 'Name Of Employee Group', 'PERSK' 'Emp Sub
Group', 'PTEXT1' 'Employee Sub Group Text', 'AWART' 'Abscance Type', 'ATEXT'
'Absance Type Text', 'BEGDA' 'Abscance Begin Date', 'ENDDA' 'Abscance End Date',
'ABRST' 'Abscence hr', 'ABWTG' 'Abscence Days', 'KTART' 'LEAVE Type', 'KTEXT'
'Leave Type Text', 'ANZHL' 'Total Leave Quota', 'KVERB' 'Leave Deduction', 'BALCE'
'Balance'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = '
' * I_BYPASSING_BUFFER = ' ' * I_BUFFER_ACTIVE = ' ' I_CALLBACK_PROGRAM =
'Z_RIZ_HR_EMP_ABSENCE_DET' * I_CALLBACK_PF_STATUS_SET = ' ' *
I_CALLBACK_USER_COMMAND = ' ' * I_CALLBACK_TOP_OF_PAGE = ' ' *
I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' *
I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' * I_GRID_TITLE = * I_GRID_SETTINGS = *
IS_LAYOUT = IT_FIELDCAT = IT_FIELDCAT * IT_EXCLUDING = * IT_SPECIAL_GROUPS = *
IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' * I_SAVE = ' ' *
IS_VARIANT = IT_EVENTS = IT_EVENTS * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 *
I_SCREEN_END_LINE = 0 * I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = *
IT_EXCEPT_QINFO = * IR_SALV_FULLSCREEN_ADAPTER = * IMPORTING *
E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES T_OUTTAB = it_emp
EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID
TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

*&---------------------------------------------------------------------* *& Form


PREPARE_FIELDCAT
*&---------------------------------------------------------------------* * text
*----------------------------------------------------------------------* *
-->P_0484 text * -->P_0485 text
*----------------------------------------------------------------------* FORM
PREPARE_FIELDCAT USING VALUE(G_FLDNAME) TYPE SLIS_FIELDNAME VALUE(G_COL_HEAD) TYPE
SCRTEXT_L. WA_FIELDCAT-FIELDNAME = G_FLDNAME. WA_FIELDCAT-SELTEXT_L = G_COL_HEAD.
APPEND WA_FIELDCAT TO IT_FIELDCAT. CLEAR: WA_FIELDCAT. ENDFORM. " PREPARE_FIELDCAT

*&---------------------------------------------------------------------* *& Form


PO_TOP *&---------------------------------------------------------------------* *
text *----------------------------------------------------------------------* * -->
p1 text * <-- p2 text
*----------------------------------------------------------------------* FORM
PO_TOP . CLEAR WA_HEADER. REFRESH IT_HEADER. WA_HEADER-TYP = 'H'. WA_HEADER-INFO =
SY-REPID. APPEND WA_HEADER TO IT_HEADER. CLEAR WA_HEADER. WA_HEADER-TYP = 'S'.
WA_HEADER-INFO = 'PROGRAM TO DISPLAY THE ABSENCE DETAILS OF EMPLOYEES'. APPEND
WA_HEADER TO IT_HEADER. CLEAR WA_HEADER. WA_HEADER-TYP = 'S'. WA_HEADER-KEY = 'DATE
: '. CONCATENATE SY-DATUM+6(2) '/' SY-DATUM+4(2) '/' SY-DATUM+0(4) INTO WA_HEADER-
INF O . APPEND WA_HEADER TO IT_HEADER. CLEAR WA_HEADER. WA_HEADER-TYP = 'S'.
WA_HEADER-KEY = 'TIME : '. WA_HEADER-INFO = SY-UZEIT. APPEND WA_HEADER TO
IT_HEADER. CLEAR WA_HEADER. WA_HEADER-TYP = 'S'. WA_HEADER-KEY = 'RUN BY: '.
WA_HEADER-INFO = SY-UNAME. APPEND WA_HEADER TO IT_HEADER. CLEAR WA_HEADER. CALL
FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = IT_HEADER *
I_LOGO = * I_END_OF_LIST_GRID = * I_ALV_FORM = . ENDFORM. " PO_TOP

You might also like