0% found this document useful (0 votes)
170 views

Function Module To Get Manager Details in ABAP

This ABAP function module retrieves manager details in SAP. It accepts optional employee number, organization, plan, start date, and end date parameters. It returns the manager's employee number, first name, last name, and user ID. It first validates that at least one input parameter is provided. It then determines the employee's organization if not already specified. It retrieves the manager by getting the chief for that organization.

Uploaded by

aroychoudhury1
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
170 views

Function Module To Get Manager Details in ABAP

This ABAP function module retrieves manager details in SAP. It accepts optional employee number, organization, plan, start date, and end date parameters. It returns the manager's employee number, first name, last name, and user ID. It first validates that at least one input parameter is provided. It then determines the employee's organization if not already specified. It retrieves the manager by getting the chief for that organization.

Uploaded by

aroychoudhury1
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 13

Function Module to get manager Details in ABAP

FUNCTION z_get_manager.

*"----------------------------------------------------------------------

*"*"Local interface:

*" IMPORTING

*" REFERENCE(PERNR) LIKE P0001-PERNR OPTIONAL

*" REFERENCE(ORGEH) LIKE P0001-ORGEH OPTIONAL

*" REFERENCE(PLANS) LIKE P0001-PLANS OPTIONAL

*" REFERENCE(BEGDA) LIKE P0001-BEGDA DEFAULT SY-DATUM

*" REFERENCE(ENDDA) LIKE P0001-ENDDA DEFAULT SY-DATUM

*" EXPORTING

*" REFERENCE(MPERNR) LIKE P0002-PERNR

*" REFERENCE(MFNAME) LIKE P0002-VORNA

*" REFERENCE(MLNAME) LIKE P0002-NACHN

*" REFERENCE(MUSRID) LIKE P0105-USRID

*" EXCEPTIONS

*" MISSING_PARAMETERS

*" MISSING_ORG_ASSIGNMENT

*"----------------------------------------------------------------------

DATA : lv_pernr LIKE p0001-pernr,


lv_orgeh LIKE p0001-orgeh,

lv_plans LIKE p0001-plans,

lv_begda LIKE p0001-begda,

lv_endda LIKE p0001-endda.

lv_pernr = pernr.

lv_orgeh = orgeh.

lv_plans = plans.

lv_begda = begda.

lv_endda = endda.

IF lv_pernr IS INITIAL AND

lv_orgeh IS INITIAL AND

lv_plans IS INITIAL.

RAISE missing_parameters.

ENDIF.

*--- Arrive at the org unit that the person or position belongs to

IF lv_orgeh IS INITIAL AND

lv_plans IS NOT INITIAL.

*--- Get Org Unit that the position belongs to

PERFORM f_get_relobj USING c_s " OTYPE


lv_plans " OBJID

c_01 " PLVAR

lv_begda " BEGDA

lv_endda " ENDDA

c_a " RSIGN A

c_003 " RELAT Belongs to

c_o " sclas

CHANGING lv_orgeh.

ENDIF.

IF lv_orgeh IS INITIAL AND

lv_plans IS INITIAL.

*--- Get org unit from IT0001

PERFORM f_get_org USING lv_pernr

lv_begda

lv_endda

CHANGING lv_orgeh.

ENDIF.

*--- If no org assignment exists

IF lv_orgeh IS INITIAL.

RAISE missing_org_assignment.
ENDIF.

*--- Get Cheif

CLEAR: gs_manager.

PERFORM f_get_chief USING lv_pernr

lv_orgeh

lv_begda

lv_endda

CHANGING gs_manager.

mpernr = gs_manager-pernr.

mfname = gs_manager-fname.

mlname = gs_manager-lname.

musrid = gs_manager-usrid.

ENDFUNCTION.

*----------------------------------------------------------------------*

***INCLUDE LZ_ORGF01 .

*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*

*& Form F_GET_RELOBJ

*&---------------------------------------------------------------------*

* Description : Get the related object

*----------------------------------------------------------------------*

FORM f_get_relobj USING p_otype

p_objid

p_plvar

p_begda

p_endda

p_rsign

p_relat

p_sclas

CHANGING p_sobid.

DATA : lv_begda LIKE hrp1001-begda,

lv_endda LIKE hrp1001-endda,

lv_sobid LIKE hrp1001-sobid.

CLEAR : p_sobid.

SELECT begda
endda

sobid

INTO (lv_begda, lv_endda, lv_sobid)

FROM hrp1001

WHERE plvar = p_plvar

AND otype = p_otype

AND objid = p_objid

AND begda LE p_endda

AND endda GE p_begda

AND rsign = p_rsign

AND relat = p_relat

AND sclas = p_sclas.

ENDSELECT.

IF sy-subrc = 0.

p_sobid = lv_sobid.

ENDIF.

ENDFORM. " F_GET_RELOBJ

*&---------------------------------------------------------------------*

*& Form F_GET_ORG

*&---------------------------------------------------------------------*
* Description : Get employees org unit from IT0001

*----------------------------------------------------------------------*

FORM f_get_org USING p_pernr LIKE p0001-pernr

p_begda LIKE p0001-begda

p_endda LIKE p0001-endda

CHANGING p_orgeh LIKE hrp1001-objid.

DATA : lv_begda LIKE p0001-begda,

lv_endda LIKE p0001-endda,

lv_orgeh LIKE p0001-orgeh.

SELECT begda endda orgeh

FROM pa0001

INTO (lv_begda, lv_endda, lv_orgeh)

WHERE pernr = p_pernr

AND begda LE p_endda

AND endda GE p_begda.

ENDSELECT.

IF sy-subrc = 0.

p_orgeh = lv_orgeh.

ENDIF.

ENDFORM. " F_GET_ORG


*&---------------------------------------------------------------------*

*& Form F_GET_CHIEF

*&---------------------------------------------------------------------*

* Description : Get the cheif of the Org unit

*----------------------------------------------------------------------*

FORM f_get_chief USING p_pernr LIKE p0001-pernr

p_orgeh LIKE hrp1001-objid

p_begda LIKE hrp1001-begda

p_endda LIKE hrp1001-endda

CHANGING p_manager LIKE gs_manager.

DATA : lv_pos LIKE hrp1001-objid,

lv_pernr LIKE hrp1001-objid,

lv_next_org LIKE hrp1001-objid.

*--- Get B012 Chief for Org Unit

PERFORM f_get_relobj USING c_o " OTYPE

p_orgeh " OBJID

c_01 " PLVAR

p_begda " BEGDA

p_endda " ENDDA

c_b " RSIGN B


c_012 " RELAT Manages

c_s " sclas

CHANGING lv_pos.

*--- Get A008 Holderfor Position

PERFORM f_get_relobj USING c_s " OTYPE

lv_pos " OBJID

c_01 " PLVAR

p_begda " BEGDA

p_endda " ENDDA

c_a " RSIGN A

c_008 " RELAT Holder

c_p " sclas

CHANGING lv_pernr.

*--- Exit - if a holder identified

IF NOT lv_pernr IS INITIAL.

IF p_pernr IS INITIAL OR

lv_pernr NE p_pernr.

PERFORM f_get_pernr_details USING lv_pernr

p_begda

p_endda
CHANGING p_manager.

EXIT.

ENDIF.

ENDIF.

*--- No holder at this point, then get next org unit

PERFORM f_get_relobj USING c_o " OTYPE

p_orgeh " OBJID

c_01 " PLVAR

p_begda " BEGDA

p_endda " ENDDA

c_a " RSIGN A

c_002 " RELAT Reports Line to

c_o " sclas

CHANGING lv_next_org.

*--- Call this routine again

IF lv_next_org IS INITIAL.

EXIT.

ENDIF.

PERFORM f_get_chief USING p_pernr

lv_next_org
p_begda

p_endda

CHANGING p_manager.

ENDFORM. " F_GET_CHIEF

*&---------------------------------------------------------------------*

*& Form F_GET_PERNR_DETAILS

*&---------------------------------------------------------------------*

* Description : Get employee details

*----------------------------------------------------------------------*

FORM f_get_pernr_details USING p_pernr LIKE p0001-pernr

p_begda LIKE p0001-begda

p_endda LIKE p0001-endda

CHANGING p_manager LIKE gs_manager.

DATA : lv_vorna LIKE p0002-vorna,

lv_nachn LIKE p0002-nachn,

lv_usrid LIKE p0105-usrid,

lv_begda LIKE p0002-begda,

lv_endda LIKE p0002-endda.

p_manager-pernr = p_pernr.

*--- Get name from IT2


SELECT begda endda vorna nachn

FROM pa0002

INTO (lv_begda, lv_endda, lv_vorna, lv_nachn)

WHERE pernr = p_pernr

AND begda LE p_endda

AND endda GE p_begda.

ENDSELECT.

IF sy-subrc = 0.

p_manager-fname = lv_vorna.

p_manager-lname = lv_nachn.

ENDIF.

*--- Get user ID from IT0105

SELECT begda endda usrid

FROM pa0105

INTO (lv_begda, lv_endda, lv_usrid)

WHERE pernr = p_pernr

AND begda LE p_endda

AND endda GE p_begda

AND subty = c_0001.

ENDSELECT.

IF sy-subrc = 0.

p_manager-usrid = lv_usrid.
ENDIF.

ENDFORM. " F_GET_PERNR_DETAILS

You might also like