cancel
Showing results for 
Search instead for 
Did you mean: 

How to determine if a user is manager ?

Former Member
0 Kudos

Hello,

do someone know if there is a function in SRM we can call to understand if a user is a manager ?

Is there any workaround ?

Thank you

Federico

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hello mysterious OSS user,

use BBPU_GET_MANAGER_FLAG to check if the user is a manager.

Rgds

Christophe

Former Member
0 Kudos

Hello

Christophe thank you for your help.

Federico Pompolani

Deloitte Consulting

Italy

Answers (1)

Answers (1)

yann_bouillut
Active Contributor
0 Kudos

Hi,

Pras already gave us the follwing functions as a starting point :

FUNCTION Z_GET_MANAGER.

*"----


""Local Interface:

*" IMPORTING

*" VALUE(I_USER) TYPE SYUNAME

*" EXPORTING

*" VALUE(E_MANAGER) TYPE SWP_AAGENT

*" VALUE(E_OBJECT) TYPE OBJEC

*" EXCEPTIONS

*" NO_MANAGER_FOUND

*"----


DATA : l_user TYPE syuname.

DATA : l_position_id TYPE OBJEKTID.

DATA : l_sobid TYPE SOBID .

DATA : lv_agent TYPE SWP_AAGENT.

DATA : l_leading_pos TYPE STANDARD TABLE OF HROBJECT,

w_leading_pos TYPE hrobject,

l_result_objec TYPE STANDARD TABLE OF OBJEC,

w_result_objec TYPE objec,

l_act_objid TYPE ACTORID.

DATA: lv_eval_path TYPE t77aw-wegid VALUE 'SAP_TAGT',

lv_ev_is_internal TYPE xflag.

DATA: l_userid TYPE HROBJEC_14 .

DATA: POSITIONS TYPE SWHACTOR .

MOVE i_user TO l_user.

  • First Get Org structure details for the user who created a contract

CALL FUNCTION 'BBPU_GET_ORGSTRUCTURE_OF_USER'

EXPORTING

USERNAME = l_user

IMPORTING

POSITION_ID = l_position_id

EXCEPTIONS

NO_ORG_DATA_FOUND = 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.

ELSE.

  • Now we got position id of an user,now get Object ID of his/her Manager

MOVE l_position_id to l_sobid.

CLEAR l_leading_pos.

REFRESH l_leading_pos.

CALL FUNCTION 'RH_GET_LEADING_POSITION'

EXPORTING

PLVAR = '01'

OTYPE = 'S'

SOBID = l_sobid

DATE = SY-DATUM

TABLES

LEADING_POS = l_leading_pos

EXCEPTIONS

NO_LEAD_POS_FOUND = 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.

ELSE.

  • Now we got Object IDs of Manager / Managers..................

LOOP AT l_leading_pos INTO w_leading_pos.

CLEAR l_result_objec.

REFRESH l_result_objec.

positions-objid = w_leading_pos-objid.

CALL FUNCTION 'RH_STRUC_GET'

EXPORTING

ACT_OTYPE = w_leading_pos-otype

ACT_OBJID = w_leading_pos-objid

ACT_WEGID = lv_eval_path

act_int_flag = lv_ev_is_internal

ACT_BEGDA = SY-DATUM

ACT_ENDDA = SY-DATUM

ACT_PLVAR = '01'

  • ACT_TDEPTH = 0

ACT_TFLAG = 'X'

  • ACT_VFLAG = 'X'

  • AUTHORITY_CHECK = 'X'

  • TEXT_BUFFER_FILL =

  • BUFFER_MODE =

  • IMPORTING

  • ACT_PLVAR =

TABLES

  • RESULT_TAB =

RESULT_OBJEC = l_result_objec

  • RESULT_STRUC =

EXCEPTIONS

NO_PLVAR_FOUND = 1

NO_ENTRY_FOUND = 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.

ELSE.

  • And....here we go with Manager / Managers details.....................

CLEAR w_result_objec.

READ TABLE l_result_objec INTO w_result_objec

WITH KEY OTYPE = 'S'.

IF sy-subrc EQ 0.

CONCATENATE 'US' w_result_objec-short INTO lv_agent.

e_object = w_result_objec.

e_manager = lv_agent.

ELSE.

RAISE NO_MANAGER_FOUND.

ENDIF.

ENDIF.

ENDLOOP.

ENDIF.

ENDIF.

ENDFUNCTION.

*************************************************************************

FUNCTION Z_GET_CHIEF_FROM_ATTRIBUTES.

*"----


""Local Interface:

*" IMPORTING

*" VALUE(I_ATTRIB) TYPE OM_ATTRIB OPTIONAL

*" VALUE(I_VALUE) TYPE CHAR255 OPTIONAL

*" EXPORTING

*" VALUE(E_OTYPE) TYPE OTYPE

*" VALUE(E_OBJID) TYPE HROBJID

*" TABLES

*" OBJECTS STRUCTURE SWHACTOR

*"----


DATA : l_plvar TYPE plvar VALUE '01'.

DATA : l_scenario TYPE OM_ATTRSCN VALUE 'BBP'.

SELECT SINGLE otype objid INTO (e_otype , e_objid)

FROM hrv1222a WHERE attrib = i_attrib

AND begda <= sy-datum

AND endda >= sy-datum

AND low = i_value.

IF sy-subrc EQ 0.

CALL FUNCTION 'RH_OM_ATTRIBUTES_ORGOBJ_STRUCT'

EXPORTING

PLVAR = l_plvar

OTYPE = e_otype

OBJID = e_objid

SCENARIO = l_scenario

SELDATE = SY-DATUM

TABLES

OBJECTS = OBJECTS.

IF NOT objects[] IS INITIAL.

DELETE objects WHERE OTYPE NE 'US'.

ENDIF.

ENDIF.

ENDFUNCTION.

Hope this helps,

Regards,

Yann