martedì 25 ottobre 2016

Recuperare il manager di una Unità Organizzativa

*----------------------------------------------------------------------*
* DECLARATIONS                                                         *
*----------------------------------------------------------------------*
DATA: gv_plvar TYPE PLVAR.

*----------------------------------------------------------------------*
* EVENTS                                                               *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
  CALL FUNCTION 'RH_GET_PLVAR'
    IMPORTING
      plvar = gv_plvar.

*----------------------------------------------------------------------*
* FORM RETRIEVE_MANAGER                                                *
*----------------------------------------------------------------------*
FORM retrieve_manager USING pv_org_unit TYPE SOBID
                   CHANGING pv_manager  TYPE PD_OBJID_R
                            pv_plans    TYPE PLANS.

  DATA BEGIN OF lt_objec OCCURS 0.
          INCLUDE STRUCTURE OBJEC.
  DATA END OF lt_objec.
  DATA: lv_found TYPE C,
        lv_sobid TYPE sobid.

  lv_sobid = pv_org_unit.
  WHILE lv_found IS INITIAL.
    CALL FUNCTION 'RH_STRUC_GET'
      EXPORTING
        ACT_OTYPE      = 'O'
        ACT_OBJID      = lv_sobid
        ACT_WEGID      = 'BOSSONLY'
        ACT_PLVAR      = gv_plvar
      TABLES
        RESULT_OBJEC   = lt_objec
      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.
    ENDIF.
    READ TABLE lt_objec WITH KEY otype = 'P'.
    IF SY-SUBRC = 0.
      pv_manager = lt_objec-objid.
      READ TABLE lt_objec WITH KEY otype = 'S'.
      pv_plans = lt_objec-objid.
      lv_found = 'X'.
    ELSE.
      SELECT SINGLE sobid
        FROM hrp1001
        INTO lv_sobid
       WHERE otype = 'O'
         AND objid = lv_sobid
         AND plvar = gv_plvar
         AND rsign = 'A'
         AND relat = '002'
         AND begda <= SY-DATUM
         AND endda >= SY-DATUM.
    ENDIF.
  ENDWHILE.

ENDFORM.                    "retrieve_manager

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

Nessun commento: