Extraction of HCM Org.Structure with employee detials and history using Function Modules.Link to Content's target Space :http://wiki.sdn.sap.com/wiki/display/ABAP/ABAP+Development+and+Programming. Applies to:Developed in ECC 6.0 Ehp4, NW 7.01. SummaryHow to use Standard function modules and Classes to extract HCM Organization structure and employee assignment details along with history of assignments. Author(s): Vinod Kumar T Table of Contents Class method and Function modules Used
Input and Output Screens
Sample Code*&----------------------------------------------------------------------------------* *& Report ZVK_PERNR_DETAILS *&----------------------------------------------------------------------------------* *& Report to extract Organization structure and associated Employee details *& Function Modules used :: *& -- 1) HRCM_ORGSTRC_INFO_TABLE_GET - To get Organization structure *& -- 2) HRCM_ORGUNIT_EMPLOYEE_LIST_GET - Get list of employees related to Org.unit *& -- 3) HRWPC_RFC_EP_READ_GENERALDATA - To extract employee general profile *& -- 4) HRWPC_RFC_EP_READ_ORGHISTORY - employee profile - Position/job/org.unit *&-----------------------------------------------------------------------------------* REPORT zvk_pernr_details NO STANDARD PAGE HEADING. TABLES : t527x. DATA : lt_orginfo TYPE STANDARD TABLE OF hrcm_orginfo, ls_orginfo TYPE hrcm_orginfo, lt_pernr TYPE STANDARD TABLE OF hrpernr, ls_pernr TYPE hrpernr, lt_pernr_gdata TYPE STANDARD TABLE OF hrwpc_s_ep_generaldata, ls_pernr_gdata TYPE hrwpc_s_ep_generaldata, lt_positions TYPE STANDARD TABLE OF hrwpc_s_ep_orginterval, ls_positions TYPE hrwpc_s_ep_orginterval, lt_orgunits TYPE STANDARD TABLE OF hrwpc_s_ep_orginterval, ls_orgunits TYPE hrwpc_s_ep_orginterval, lt_jobs TYPE STANDARD TABLE OF hrwpc_s_ep_orginterval, ls_jobs TYPE hrwpc_s_ep_orginterval. DATA : lv_plvar TYPE plvar, lv_tlevel TYPE slevel_d, lv_pernr TYPE pernr_d. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME. PARAMETERS : p_org TYPE t527x-orgeh OBLIGATORY. PARAMETERS : p_begda TYPE begda OBLIGATORY DEFAULT '19000101'. PARAMETERS : p_endda TYPE endda OBLIGATORY DEFAULT '99991231' . SELECTION-SCREEN END OF BLOCK b1. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_org. START-OF-SELECTION. ***************************************************** ** Get Active plan version ** ***************************************************** CLEAR : lv_plvar. cl_hap_generic=>get_active_plan_version( IMPORTING plan_version = lv_plvar ). ***************************************************** ** Get Organization structure of Input Organization** ***************************************************** IF lv_plvar IS INITIAL. MESSAGE 'Active version not available...' TYPE 'I' DISPLAY LIKE 'E'. ENDIF. REFRESH : lt_orginfo. CLEAR : ls_orginfo. WRITE :/ 'Organization structure with employee list' COLOR 5. CALL FUNCTION 'HRCM_ORGSTRC_INFO_TABLE_GET' EXPORTING plvar = lv_plvar root_otype = 'O' root_objid = p_org begda = p_begda endda = p_endda TABLES org_info_table = lt_orginfo EXCEPTIONS path_error = 1 root_error = 2 OTHERS = 3. IF sy-subrc EQ 0. IF lt_orginfo[] IS NOT INITIAL. REFRESH : lt_pernr_gdata. LOOP AT lt_orginfo INTO ls_orginfo. CLEAR : lv_tlevel. lv_tlevel = ls_orginfo-tlevel + ls_orginfo-tlevel + 3. WRITE AT /lv_tlevel 'Org Unit -> ' COLOR 4. WRITE : ls_orginfo-objid COLOR 4 , ' - ', ls_orginfo-stext COLOR 4. ***************************************************** ** Get Employees related to Input Org. Unit** ***************************************************** lv_tlevel = lv_tlevel + 5. REFRESH : lt_pernr. CALL FUNCTION 'HRCM_ORGUNIT_EMPLOYEE_LIST_GET' EXPORTING plvar = lv_plvar otype = 'O' objid = ls_orginfo-objid begda = ls_orginfo-begda endda = ls_orginfo-endda TABLES pernr_table = lt_pernr EXCEPTIONS path_error = 1 root_error = 2 no_employees_found = 3 OTHERS = 4. IF sy-subrc EQ 0. LOOP AT lt_pernr INTO ls_pernr. CLEAR : ls_pernr_gdata. ***************************************************** ** Get Employees related to Input Org. Unit** ***************************************************** CALL FUNCTION 'HRWPC_RFC_EP_READ_GENERALDATA' EXPORTING pernr = ls_pernr-pernr IMPORTING generaldata = ls_pernr_gdata EXCEPTIONS not_supported = 1 nothing_found = 2 no_authorization = 3 internal_error = 4 OTHERS = 5. IF sy-subrc NE 0. WRITE AT /lv_tlevel ls_pernr-pernr. CASE sy-subrc. WHEN 1. WRITE : 'Not supported'. WHEN 2. WRITE : 'No data'. WHEN 3. WRITE : 'No authroization'. WHEN 4. WRITE : 'Internal error'. WHEN 5. WRITE : 'Unable to extract data'. ENDCASE. ELSE. APPEND ls_pernr_gdata TO lt_pernr_gdata. WRITE AT /lv_tlevel ls_pernr-pernr HOTSPOT. WRITE : ls_pernr_gdata-ename, ls_pernr_gdata-plans_text. MOVE ls_pernr_gdata-pernr TO lv_pernr. HIDE : lv_pernr. ENDIF. ENDLOOP. ENDIF. ENDLOOP. ENDIF. ENDIF. END-OF-SELECTION. AT LINE-SELECTION. ***************************************************** ** General Data ** ***************************************************** CLEAR : ls_pernr_gdata. READ TABLE lt_pernr_gdata INTO ls_pernr_gdata WITH KEY pernr = lv_pernr. IF sy-subrc EQ 0. WRITE :/ 'General Data Related to Employee No ->' COLOR 3, lv_pernr COLOR 3. WRITE :/. WRITE :/ 'Employee name : ', ls_pernr_gdata-ename. WRITE :/ 'Start Date : ', ls_pernr_gdata-entry_date, ' End Date : ', ls_pernr_gdata-leaving_date. WRITE :/ 'Personnel Area : ', ls_pernr_gdata-werks, '/', ls_pernr_gdata-werks_text. WRITE :/ 'Personnel Subarea : ', ls_pernr_gdata-btrtl, '/', ls_pernr_gdata-btrtl_text. WRITE :/ 'Employee Group : ', ls_pernr_gdata-persg, '/', ls_pernr_gdata-persg_text. WRITE :/ 'Employee SubGroup : ', ls_pernr_gdata-persk, '/', ls_pernr_gdata-persk_text. WRITE :/ 'Payroll Area : ', ls_pernr_gdata-abkrs, '/', ls_pernr_gdata-abkrs_text. WRITE :/ 'Work contract : ', ls_pernr_gdata-ansvh, '/', ls_pernr_gdata-ansvh_text. WRITE :/ 'Controlling Area : ', ls_pernr_gdata-kokrs. WRITE :/ 'Cost center : ', ls_pernr_gdata-kostl, '/', ls_pernr_gdata-kostl_text. WRITE :/ 'Org. Unit : ', ls_pernr_gdata-orgeh, '/', ls_pernr_gdata-orgeh_text. WRITE :/ 'Job : ', ls_pernr_gdata-stell, '/', ls_pernr_gdata-stell_text. WRITE :/ 'Position : ', ls_pernr_gdata-plans, '/', ls_pernr_gdata-plans_text. WRITE :/ 'Pay scale : ', ls_pernr_gdata-trfar, '/', ls_pernr_gdata-trfar_text. WRITE :/ 'Pay scale area : ', ls_pernr_gdata-trfgb, '/', ls_pernr_gdata-trfgb_text. WRITE :/ 'Office Phone : ', ls_pernr_gdata-office_tel. WRITE :/ 'Email : ', ls_pernr_gdata-email+0(40). ENDIF. ***************************************************** ** Employee History ** ***************************************************** REFRESH : lt_positions, lt_orgunits, lt_jobs. CLEAR : ls_positions, ls_orgunits, ls_jobs. WRITE :/. WRITE :/ 'History Data Related to Employee No ->' COLOR 3, lv_pernr COLOR 3. CALL FUNCTION 'HRWPC_EP_READ_PAHISTORY' EXPORTING persno = lv_pernr begda = p_begda endda = p_endda authority_check = 'X' TABLES positions = lt_positions orgunits = lt_orgunits jobs = lt_jobs EXCEPTIONS internal_error = 1 no_authorization = 2 nothing_found = 3 OTHERS = 4. IF sy-subrc <> 0. WRITE :/ ls_pernr-pernr. CASE sy-subrc. WHEN 1. WRITE : 'Internal error'. WHEN 2. WRITE : 'No authroization'. WHEN 3. WRITE : 'No data'. WHEN 4. WRITE : 'Unable to extract data'. ENDCASE. ELSE. WRITE :/. WRITE :/ ' Positions : ' COLOR 4. LOOP AT lt_positions INTO ls_positions. WRITE :/ 'Period : ', ls_positions-begda, ' - ',ls_positions-endda. WRITE : 'Position : ', ls_positions-objid+0(8), '/', ls_positions-text. ENDLOOP. WRITE :/. WRITE :/ ' Organization units : ' COLOR 4. LOOP AT lt_orgunits INTO ls_orgunits. WRITE :/ 'Period : ', ls_orgunits-begda, ' - ',ls_orgunits-endda. WRITE : 'Org Unit : ', ls_orgunits-objid+0(8), '/', ls_orgunits-text. ENDLOOP. WRITE :/. WRITE :/ ' Jobs : ' COLOR 4. LOOP AT lt_jobs INTO ls_jobs. WRITE :/ 'Period : ', ls_jobs-begda, ' - ',ls_jobs-endda. WRITE : 'Job : ', ls_jobs-objid+0(8), '/', ls_jobs-text. ENDLOOP. ENDIF. Related Content |
|
Comments (2)
Jul 08, 2011
Sarita Pandit says:
Hi Vinod, would like to add you in my Network.Please visit my profile in ...Hi Vinod,
would like to add you in my Network.Please visit my profile in Linkedin or mail me on sarita_pandit@yahoo.com.
Thanks and Regards
Sarita
Jul 08, 2011
Sarita Pandit says:
Hi Vinod, would like to add you in my Network.Please visit my profile in ...Hi Vinod,
would like to add you in my Network.Please visit my profile in Linkedin or mail me on sarita_pandit@yahoo.com.
Thanks and Regards
Sarita