You are on page 1of 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