SAP Help Bespoke HR ABAP report to download employee/personnel data to excel / tab file using logical database PNP
Bespoke ABAP program (download employee data)
Uses Logical database 'PNP'(entered in program attributes) to retrieve various personnel data and download it to an excel / tab delimited file.
face="Arial monospaced for SAP">*............................................................... *: Report: ZDOWNEMPDATA : *: : *: Author: www.SAP Development : *: Date : 2004 : *: Downloads employee data to TAB delimited flat files : *:.............................................................: REPORT zdownempdata. INFOTYPES: 0000, 0001, 0007, 0008, 0121, 0615. NODES: pernr. TABLES: t001p. TYPES: BEGIN OF t_employee, * INCLUDE STRUCTURE hrms_biw_io_occupancy. begda TYPE begda, endda TYPE endda, pernr TYPE pernr_d, rfpnr TYPE rfpnr, bukrs TYPE bukrs, werks TYPE persa, btrtl TYPE btrtl, persg TYPE persg, persk TYPE persk, orgeh TYPE orgeh, stell TYPE stell, plans TYPE plans, kokrs TYPE mast_coar, kostl TYPE mast_cctr, abkrs TYPE abkrs, molga TYPE molga, trfar TYPE trfar, trfgb TYPE trfgb, trfkz TYPE trfkz, trfgr TYPE trfgr, trfst TYPE trfst, bsgrd TYPE bsgrd, ansal TYPE ansal_15, ancur TYPE ancur, empct TYPE empct, stat2 TYPE stat2, ncsdate TYPE hiredate, sltyp TYPE p_sltyp, slreg TYPE p_slreg, slgrp TYPE p_slgrp, sllev TYPE p_sllvl, ansvh TYPE ansvh, vdsk1 TYPE vdsk1, sname TYPE smnam, END OF t_employee. DATA: it_employee TYPE STANDARD TABLE OF t_employee INITIAL SIZE 0, wa_employee TYPE t_employee. TYPES: BEGIN OF t_emptexts, * INCLUDE STRUCTURE hrms_bw_txt_employee. DATEFROM TYPE RSDATEFROM, DATETO TYPE RSDATETO, PERNR TYPE PERSNO, TXTMD TYPE EMNAM, END OF t_emptexts. DATA: it_emptexts TYPE STANDARD TABLE OF t_emptexts INITIAL SIZE 0, wa_emptexts TYPE t_emptexts. TYPES: BEGIN OF t_contract, * INCLUDE STRUCTURE pa0615. pernr TYPE p0615-pernr, begda TYPE p0615-begda, endda TYPE p0615-endda, aedtm TYPE p0615-aedtm, ctype TYPE p0615-ctype, cbeg TYPE p0615-cbeg, cend TYPE p0615-cend, END OF t_contract. DATA: it_contract TYPE STANDARD TABLE OF t_contract INITIAL SIZE 0, wa_contract TYPE t_contract. DATA: it_tabemp TYPE filetable, gd_subrcemp TYPE i, it_tabempt TYPE filetable, gd_subrcempt TYPE i, it_tabcont TYPE filetable, gd_subrccont TYPE i. DATA: gd_downfile TYPE string. SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001. PARAMETERS: p_emp LIKE rlgrap-filename, p_empt LIKE rlgrap-filename, p_cont LIKE rlgrap-filename. SELECTION-SCREEN END OF BLOCK block1. *********************************************************************** *at selection-screen AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_emp. REFRESH: it_tabemp. CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING window_title = 'Select File' default_filename = '*.xls' initial_directory = 'C:\' multiselection = ' ' "No multiple selection CHANGING file_table = it_tabemp rc = gd_subrcemp. LOOP AT it_tabemp INTO p_emp. ENDLOOP. *********************************************************************** *at selection-screen AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_empt. REFRESH: it_tabemp. CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING window_title = 'Select File' default_filename = '*.xls' initial_directory = 'C:\' multiselection = ' ' "No multiple selection CHANGING file_table = it_tabempt rc = gd_subrcempt. LOOP AT it_tabempt INTO p_empt. ENDLOOP. *********************************************************************** *at selection-screen AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_cont. REFRESH: it_tabcont. CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING window_title = 'Select File' default_filename = '*.xls' initial_directory = 'C:\' multiselection = ' ' "No multiple selection CHANGING file_table = it_tabcont rc = gd_subrccont. LOOP AT it_tabcont INTO p_cont. ENDLOOP. ************************************************************************ *START-OF-SELECTION. START-OF-SELECTION. GET pernr. * Selecting the latest infotype record rp_provide_from_last p0000 space pn-begda pn-endda. rp_provide_from_last p0001 space pn-begda pn-endda. rp_provide_from_last p0007 space pn-begda pn-endda. rp_provide_from_last p0008 space pn-begda pn-endda. rp_provide_from_last p0121 space pn-begda pn-endda. rp_provide_from_last p0615 space pn-begda pn-endda. MOVE-CORRESPONDING p0001 TO wa_employee. wa_employee-rfpnr = p0121-rfp01. "????? MOVE-CORRESPONDING p0007 TO wa_employee. MOVE-CORRESPONDING p0008 TO wa_employee. MOVE-CORRESPONDING p0000 TO wa_employee. SELECT SINGLE molga FROM t001p INTO wa_employee-molga WHERE werks EQ p0001-werks AND btrtl EQ p0001-btrtl. SELECT SINGLE trfkz FROM t503 INTO wa_employee-trfkz WHERE persg EQ p0001-persg AND persk EQ p0001-persk. CALL FUNCTION 'HR_ENTRY_DATE' EXPORTING persnr = pernr-pernr * RCLAS = * BEGDA = '18000101' * ENDDA = '99991231' * VARKY = IMPORTING entrydate = wa_employee-ncsdate * TABLES * ENTRY_DATES = EXCEPTIONS ENTRY_DATE_NOT_FOUND = 1 PERNR_NOT_ASSIGNED = 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. * append employee data APPEND wa_employee TO it_employee. CLEAR: wa_employee. wa_emptexts-datefrom = p0001-begda. wa_emptexts-dateto = p0001-endda. wa_emptexts-pernr = p0001-pernr. wa_emptexts-txtmd = p0001-ename. * append employee texts data APPEND wa_emptexts TO it_emptexts. CLEAR: wa_emptexts. MOVE-CORRESPONDING p0615 TO wa_contract. * append employee contract data APPEND wa_contract TO it_contract. CLEAR: wa_contract. ************************************************************************ *END-OF-SELECTION. END-OF-SELECTION. * download employee data IF NOT p_emp IS INITIAL. gd_downfile = p_emp. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = gd_downfile filetype = 'ASC' write_field_separator = 'X' TABLES data_tab = it_employee. IF sy-subrc EQ 0. WRITE:/ 'Employee file downloaded to', gd_downfile. ELSE. WRITE:/ 'There was an error downloading Employee file to', gd_downfile. ENDIF. ENDIF. * download employee texts data IF NOT p_empt IS INITIAL. gd_downfile = p_empt. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = gd_downfile filetype = 'ASC' write_field_separator = 'X' TABLES data_tab = it_emptexts. IF sy-subrc EQ 0. WRITE:/ 'Employee text file downloaded to', gd_downfile. ELSE. WRITE:/ 'There was an error downloading Employee text file to', gd_downfile. ENDIF. ENDIF. * download contract data IF NOT p_cont IS INITIAL. gd_downfile = p_cont. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = gd_downfile filetype = 'ASC' write_field_separator = 'X' TABLES data_tab = it_contract. IF sy-subrc EQ 0. WRITE:/ 'Employee contract file downloaded to', gd_downfile. ELSE. WRITE:/ 'There was an error downloading Employee contract file to', gd_downfile. ENDIF. ENDIF.
Return to bespoke ABAP programs