Get Manager Org
Get Manager Org
TABLES: HRP1001.
* counter
S_COUNTER_DATAPAKID LIKE SY-TABIX,
* cursor
S_CURSOR TYPE CURSOR.
* Select ranges
RANGES: L_R_OBJID FOR HRP1001-OBJID.
************************************************************************
* Initialization: check input parameters
* buffer input parameters
* prepare data selection
************************************************************************
************************************************************************
* Data transfer: First Call OPEN CURSOR + FETCH
* Following Calls FETCH only
************************************************************************
* First data package -> OPEN CURSOR
IF S_COUNTER_DATAPAKID = 0.
*
* Fill range tables BW will only pass down simple selection criteria
* of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.
LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'OBJID'.
MOVE-CORRESPONDING L_S_SELECT TO L_R_OBJID.
APPEND L_R_OBJID.
ENDLOOP.
if sy-subrc NE 0.
delete e_t_data.
else.
e_t_data-rsign = 'M'. " Manager
e_t_data-uname = l_s_data-uname.
* e_t_data-begda = l_s_data-begda.
* e_t_data-endda = l_s_data-endda.
modify e_t_data.
endif.
endloop.
*
l_t_data[] = e_t_data[].
*
*
* Get all employees with substitute relation
*
loop at l_t_data into l_s_data.
*
clear lt_sub_pos.
refresh lt_sub_pos.
*
select sobid begda endda
from hrp1001
appending table lt_sub_pos
where
rsign = 'B' and
relat = 'Z01' and " Substitut
objid = l_s_data-objid and
endda >= sy-datum and
begda <= sy-datum.
*
loop at lt_sub_pos into ls_sub_pos.
select single objid
* begda endda
from hrp1001
into
* (l_s_data-uname, l_s_data-begda, l_s_data-endda)
l_s_data-uname
where
sobid = ls_sub_pos-position and
relat = '008' and
otype = 'P' and
endda >= sy-datum and
begda <= sy-datum.
if sy-subrc = 0.
l_s_data-begda = ls_sub_pos-begda.
l_s_data-endda = ls_sub_pos-endda.
l_s_data-rsign = 'S'. " Substitute
append l_s_data to e_t_data.
endif.
endloop.
endloop.
*
l_s_data-begda = ls_sub_pos-begda.
l_s_data-endda = ls_sub_pos-endda.
l_s_data-rsign = 'P'. " Substitute
append l_s_data to e_t_data.
endif.
endloop.
endloop.
IF SY-SUBRC <> 0.
CLOSE CURSOR S_CURSOR.
RAISE NO_MORE_DATA.
ENDIF.
S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.
ENDFUNCTION.