You are on page 1of 20

*&********************************************************************&*

*& Object Id : TS-HCM-REP-030_v2 &*


*& Object Name : FS-HCM-REP-030 &*
*& Program Name : YH_WORKFLOW_LEVEL &*
*& Transaction Code: N/A &*
*& Author : Kedar Prasad &*
*& Module Name : HR &*
*& Sub-Module : HCM &*
*& Program Type : Function Module Create Date : 16.06.2009 &*
*& SAP Release : 5.0 Transport No : RD1K929338 &*
*& Description : This function module is being called in YHRADMIN &*
*& report to give workflow pending level &*
*&********************************************************************&*
*& &*
*& H I S T O R Y O F R E V I S I O N S &*
*&____________________________________________________________________&*
*& Date Programmer Request Description &*
*& 06/08/2009 Kedar Prasad RD1K930162 Bug fixing for leave &*
*& (KP01) ECC HR-HO#159 workflow level &*
*& &*
*&********************************************************************&*



FUNCTION yh_workflow_level.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(WI_ID) TYPE SWW_WIID
*" REFERENCE(PERNR) TYPE PERSNO
*" REFERENCE(AGENT) TYPE SYUNAME
*" EXPORTING
*" REFERENCE(WF_LEVEL) TYPE CHAR20
*"----------------------------------------------------------------------
INCLUDE <cntn01>.

swc_container it_event_container. "#EC *
swc_create_container it_event_container. "#EC *


TYPES: BEGIN OF ty_details,
wi_id TYPE sww_wiid,
wi_cd TYPE sww_cd,
wi_aagent TYPE sww_aagent,
wi_forw_by TYPE sww_forwby,
END OF ty_details,

BEGIN OF ts_swwwhead,
wi_id TYPE sww_wiid,
END OF ts_swwwhead,

BEGIN OF ts_approver,
approver TYPE hrp1001-sobid,
email TYPE adr6-smtp_addr,
END OF ts_approver.

**INTERNAL TABLES********************
DATA:it_details TYPE TABLE OF ty_details.

**WORK AREAS*************************

DATA: is_details TYPE ty_details.

** VARIABLES*************************

DATA: v_werks TYPE pa0001-werks,
v_yyjlevel TYPE pa0001-yyjlevel,
is_shead TYPE ts_swwwhead,
frstapp_usrid TYPE pa0001-pernr,
scndapp_usrid TYPE pa0001-pernr,
unithd_usrid TYPE pa0001-pernr,
hohradmn_usrid TYPE pa0001-pernr,
v_sglvl,
w_endda TYPE p9050-endda,
w_sobid TYPE hrp1001-sobid,
v_mltlvl,
v_persg TYPE pa0001-persg,
w_approver TYPE hrp1001-sobid,
wa_yyemps TYPE pa9050-yyemps,
v_ansvh TYPE pa0001-ansvh,
w_unithead_p TYPE pa0001-pernr,
w_unithead_u TYPE pa0001-pernr,
w_fapp_p TYPE pa0001-pernr,
w_fapp_u TYPE pa0001-pernr,
w_sapp_p TYPE pa0001-pernr,
w_sapp_u TYPE pa0001-pernr,
w_return TYPE sy-subrc,
it_work TYPE swrtwiid,
w_tlevel TYPE numc1,
w_clevel TYPE numc1,
w_fa TYPE p0105-usrid,
w_sa TYPE p0105-usrid,
w_ta TYPE p0105-usrid,
w_fourtha TYPE p0105-usrid,
wi_agent1 TYPE swrtwiagent,
wi_user TYPE swr_wiagent,
wi_agent TYPE pa0001-pernr,
w_forwarded TYPE sy-uname,
w_userid_fa TYPE pa0001-pernr,
w_userid_sa TYPE pa0001-pernr,
w_userid_ta TYPE pa0001-pernr,
w_userid_fourtha TYPE pa0001-pernr,
w_flag_1 TYPE char1,
w_wihead TYPE sww_wiid,
w_wf_id TYPE swfrdguid,
w_wfno TYPE char10,
w_usrid TYPE p0105-usrid,
w_date TYPE sy-datum,
w_lines TYPE i.

DATA: is_loan TYPE char255,
w_object_key TYPE swr_struct-object_key,
w_loan TYPE swc_object.

DATA: w_hr_admin TYPE wfsyst-initiator,
w_unit_head TYPE wfsyst-initiator,
w_unit_hr TYPE wfsyst-initiator,
w_level TYPE char1.


************************************************************************
CLEAR: w_level, wf_level,v_sglvl,v_mltlvl,w_fa, w_forwarded .
REFRESH: it_details.



SELECT SINGLE top_wi_id
def_guid
INTO (w_wihead, w_wf_id)
FROM swwwihead
WHERE wi_id = wi_id.

IF sy-subrc = 0.

w_wfno = w_wf_id+0(10).

SELECT wi_id
wi_cd
wi_aagent
wi_forw_by
INTO TABLE it_details
FROM swwwihead
WHERE top_wi_id = w_wihead
AND wi_type = 'W'.

IF sy-subrc = 0.

SORT it_details BY wi_id.

READ TABLE it_details INTO is_details INDEX 1.

IF sy-subrc = 0.
w_date = is_details-wi_cd.
ENDIF.

SORT it_details BY wi_id DESCENDING.

READ TABLE it_details INTO is_details INDEX 1.

IF sy-subrc = 0.
w_forwarded = is_details-wi_forw_by.
ENDIF.



CASE:w_wfno.

WHEN 'WS90100026'.

* **************Get all the approver of the leave as on the date leave has
been applied********************

SELECT SINGLE werks yyjlevel persg ansvh FROM pa0001 INTO (v_werk
s, v_yyjlevel, v_persg, v_ansvh)
WHERE pernr EQ pernr AND
begda LE w_date AND
endda GE w_date AND
bukrs EQ 'ITD'.

IF sy-subrc EQ 0.

SELECT SINGLE yyemps INTO wa_yyemps
FROM pa9050
WHERE pernr EQ pernr
AND begda LE w_date
AND endda GE w_date.

IF sy-subrc = 0.

IF ( v_werks = 'HOTD' OR v_werks = 'CPOG' OR v_werks = 'NBD
C' OR v_werks = 'NDIS' OR v_werks = 'SDIS' OR
v_werks = 'EDIS' OR v_werks = 'WDIS' )
AND ( v_yyjlevel = '60000001' OR v_yyjlevel = '60000002' O
R v_yyjlevel = '60000003' OR v_yyjlevel = '60000004'
OR v_yyjlevel = '60000005' OR v_yyjlevel = '60000006'
).
v_sglvl = 'X'. " 1 n 2

ELSEIF ( v_werks = 'MBLR' OR v_werks = 'IRDC' OR v_werks = 'M
KDP' OR v_werks = 'MMGR' OR v_werks = 'MPUN' OR v_werks = 'MSRE' OR v_werks
= 'OATC'
OR v_werks = 'PCUT' ) AND
( v_yyjlevel EQ '60000003' ).
v_sglvl = 'X'. " 3

ELSEIF ( v_werks = 'MBLR' OR v_werks = 'IRDC' OR v_werks = 'M
KDP' OR v_werks = 'MMGR' OR v_werks = 'MPUN' OR v_werks = 'MSRE' OR v_werks
= 'OATC'
OR v_werks = 'PCUT' ) AND
( v_yyjlevel = '60000004' OR v_yyjlevel = '60000005' O
R v_yyjlevel = '60000006' ).
v_mltlvl = 'X'. " 5

ELSEIF ( v_werks = 'AECU' OR v_werks = 'AEGA' OR v_werks = 'A
EPA' OR v_werks = 'AEVI' OR v_werks = 'AWAH' OR
v_werks = 'AWBH' OR v_werks = 'AWMU' OR v_werks = 'AWNA' OR v
_werks = 'AWPU' OR v_werks = 'ASBL' OR v_werks = 'ASCH' OR
v_werks = 'ASCO' OR v_werks = 'ASER' OR v_werks = 'ASHY' OR v
_werks = 'ANCH' OR v_werks = 'ANDE' OR v_werks = 'ANJA' OR
v_werks = 'ANJP' OR v_werks = 'ANLU' OR v_werks = 'ANSA')
AND ( v_yyjlevel EQ '60000004' ). " 4
v_sglvl = 'X'.
ELSEIF ( v_werks = 'AECU' OR v_werks = 'AEGA' OR v_werks = 'A
EPA' OR v_werks = 'AEVI' OR v_werks = 'AWAH' OR
v_werks = 'AWBH' OR v_werks = 'AWMU' OR v_werks = 'AWNA' OR v
_werks = 'AWPU' OR v_werks = 'ASBL' OR v_werks = 'ASCH' OR
v_werks = 'ASCO' OR v_werks = 'ASER' OR v_werks = 'ASHY' OR v
_werks = 'ANCH' OR v_werks = 'ANDE' OR v_werks = 'ANJA' OR
v_werks = 'ANJP' OR v_werks = 'ANLU' OR v_werks = 'ANSA')
AND ( v_yyjlevel = '60000005' OR v_yyjlevel = '600000
06' ). " 5
v_mltlvl = 'X'.
ENDIF.
ENDIF.


IF v_sglvl EQ 'X'.

* Start of change by KP01 on 06.08.2009
CALL FUNCTION 'SWW_WI_CONTAINER_READ'
EXPORTING
wi_id = w_wihead
TABLES
wi_container = it_event_container
EXCEPTIONS
container_does_not_exist = 1
read_failed = 2
OTHERS = 3.

IF sy-subrc = 0.

CLEAR: w_tlevel,w_clevel.

LOOP AT it_event_container.

CASE: it_event_container-element.

WHEN 'VARIABLE'.
w_tlevel = it_event_container-value.

WHEN 'VARIABLE1'.

w_clevel = it_event_container-value.

WHEN 'OTHERS'.
* No action

ENDCASE.

ENDLOOP.

ENDIF.

IF w_tlevel = 1 .

wf_level = 'FIRST APPRAISER'.

ELSEIF w_tlevel = 2 .

IF w_clevel = 1 .

wf_level = 'FIRST APPRAISER'.

ELSEIF w_clevel = 2.

wf_level = 'HO HR ADMIN'.

ENDIF.

ENDIF.
* wf_level = 'FIRST APPRAISER'.
* End of change by KP01 on 06.08.2009



ELSEIF v_mltlvl EQ 'X'.

CASE wa_yyemps.

WHEN '1'.
SELECT SINGLE yylfapp yylsapp yyluhead endda
FROM pa9050
INTO (frstapp_usrid , scndapp_
usrid ,unithd_usrid , w_endda)
WHERE pernr
EQ pernr
AND begd
a LE w_date
AND endd
a GE w_date.

IF sy-subrc = 0.

w_fapp_u = frstapp_usrid.
w_sapp_u = scndapp_usrid.
w_unithead_u = unithd_usrid .

ENDIF.

WHEN '2'.

SELECT SINGLE yydevp yyprown yyauhead endda
FROM pa9050
INTO (frstapp_usrid , scndapp_
usrid ,unithd_usrid , w_endda)
WHERE pernr
EQ pernr
AND begd
a LE w_date
AND endd
a GE w_date.

IF sy-subrc = 0.

w_fapp_u = frstapp_usrid.
w_sapp_u = scndapp_usrid.
w_unithead_u = unithd_usrid .


ENDIF.


WHEN '3'.

SELECT SINGLE yyrfapyp yyrsapp yyruhead endda
FROM pa9050
INTO (frstapp_usrid , scndapp_u
srid ,unithd_usrid , w_endda)
WHERE pernr E
Q pernr
AND begda
LE w_date
AND endda
GE w_date.
IF sy-subrc = 0.

w_fapp_p = frstapp_usrid.
w_sapp_p = scndapp_usrid.
w_unithead_p = unithd_usrid.

ENDIF.


IF frstapp_usrid IS NOT INITIAL.
SELECT SINGLE sobid
FROM hrp1001
INTO w_approver
WHERE otype = 'S' AND
objid = frstapp_usrid AND
plvar = '01' AND
rsign = 'A' AND
relat = '008' AND
istat = '1' AND
endda >= w_endda AND
sclas = 'P'.

IF sy-subrc = 0.
frstapp_usrid = w_approver.
w_fapp_u = w_approver.

ELSE.
CLEAR frstapp_usrid.
ENDIF.
ENDIF.


SELECT SINGLE sobid
FROM hrp1001
INTO w_approver
WHERE otype = 'S' AND
objid = scndapp_usrid AND
plvar = '01' AND
rsign = 'A' AND
relat = '008' AND
istat = '1' AND
endda >= w_endda AND
sclas = 'P'.

IF sy-subrc = 0.
scndapp_usrid = w_approver.
w_sapp_u = w_approver.

ELSE.
CLEAR scndapp_usrid.
ENDIF.

CLEAR w_approver.

SELECT SINGLE sobid
FROM hrp1001
INTO w_approver
WHERE otype = 'S' AND
objid = unithd_usrid AND
plvar = '01' AND
rsign = 'A' AND
relat = '008' AND
istat = '1' AND
endda >= w_endda AND
sclas = 'P'.

IF sy-subrc = 0.
unithd_usrid = w_approver.
w_unithead_u = w_approver.
ELSE.
CLEAR unithd_usrid.
ENDIF.

ENDCASE.


CLEAR:w_approver.

SELECT SINGLE sobid
FROM hrp1001
INTO w_approver
WHERE otype = 'ZH' AND
begda LE w_date AND
endda GE w_date.

IF sy-subrc = 0.

SELECT SINGLE sobid
FROM hrp1001
INTO w_sobid
WHERE otype = 'S' AND
objid = w_approver AND
plvar = '01' AND
rsign = 'A' AND
relat = '008' AND
istat = '1' AND
endda >= w_endda AND
sclas = 'P'.

IF sy-subrc EQ 0.
hohradmn_usrid = w_sobid.

ELSE.
CLEAR: hohradmn_usrid.

ENDIF.

ELSE.
CLEAR: hohradmn_usrid.
ENDIF.



is_shead-wi_id = wi_id.

APPEND is_shead-wi_id TO it_work.

CLEAR wi_agent.


CALL FUNCTION 'SAP_WAPI_GET_WI_AGENTS'
EXPORTING
workitems = it_work
IMPORTING
return_code = w_return
wi_agents = wi_agent1.

IF w_return = 0.

READ TABLE wi_agent1 INTO wi_user INDEX 1.
IF sy-subrc = 0.
w_usrid = wi_user-user.
ENDIF.

IF w_usrid IS NOT INITIAL.
CALL FUNCTION 'RP_GET_PERNR_FROM_USERID'
EXPORTING
begda = w_date
endda = w_date
usrid = w_usrid
usrty = '010'
IMPORTING
usr_pernr = wi_agent
EXCEPTIONS
retcd = 1
OTHERS = 2.
IF sy-subrc <> 0.
" NO action
ENDIF.
ENDIF.
**If workflow is pending with some agent then compare that agent with all t
he possible agents
** To know in which level workflow is pending

IF wi_agent IS NOT INITIAL.

IF w_forwarded IS INITIAL.

IF wi_agent = frstapp_usrid.

wf_level = 'FIRST APPRAISER'.

ELSEIF wi_agent = scndapp_usrid.

wf_level = 'SECOND APPRAISER'.


ELSEIF wi_agent = unithd_usrid.

wf_level = 'UNIT HEAD'.


ELSEIF wi_agent = hohradmn_usrid.

wf_level = 'HO HR ADMIN'.


ENDIF.

ENDIF.

ELSE.

* Workflow is pending with no agent

CALL FUNCTION 'SWW_WI_CONTAINER_READ'
EXPORTING
wi_id = w_wihead
TABLES
wi_container = it_event_container
EXCEPTIONS
container_does_not_exist = 1
read_failed = 2
OTHERS = 3.

IF sy-subrc = 0.

LOOP AT it_event_container.

CASE: it_event_container-element.

WHEN 'VARIABLE'.
w_tlevel = it_event_container-value.

WHEN 'VARIABLE1'.

w_clevel = it_event_container-value.

WHEN 'FIRSTAPPROVER'.

w_fa = it_event_container-value+2(12).
.
WHEN 'SECONDAPPROVER'.

w_sa = it_event_container-value+2(12).

WHEN ' THIRDAPPROVER'.

w_ta = it_event_container-value+2(12).


WHEN ' FORTHAPPROVER'.

w_fourtha = it_event_container-value+2(12).


WHEN 'OTHERS'.
* No action


ENDCASE.
ENDLOOP.
ENDIF.

* Check if HO HR approval was needed
* get pernr for FA

IF w_fa IS NOT INITIAL.

CALL FUNCTION 'RP_GET_PERNR_FROM_USERID'
EXPORTING
begda = w_date
endda = w_date
usrid = w_fa
usrty = '010'
IMPORTING
usr_pernr = w_userid_fa
EXCEPTIONS
retcd = 1
OTHERS = 2.
IF sy-subrc <> 0.
" NO action
ENDIF.

ENDIF.
* get pernr for SA
IF w_sa IS NOT INITIAL.
CALL FUNCTION 'RP_GET_PERNR_FROM_USERID'
EXPORTING
begda = w_date
endda = w_date
usrid = w_sa
usrty = '010'
IMPORTING
usr_pernr = w_userid_sa
EXCEPTIONS
retcd = 1
OTHERS = 2.
IF sy-subrc <> 0.
" NO action
ENDIF.
ENDIF.
* get pernr for TA
IF w_ta IS NOT INITIAL.
CALL FUNCTION 'RP_GET_PERNR_FROM_USERID'
EXPORTING
begda = w_date
endda = w_date
usrid = w_ta
usrty = '010'
IMPORTING
usr_pernr = w_userid_ta
EXCEPTIONS
retcd = 1
OTHERS = 2.
IF sy-subrc <> 0.
" NO action
ENDIF.
ENDIF.
* get pernr for Fourth A
IF w_fourtha IS NOT INITIAL.
CALL FUNCTION 'RP_GET_PERNR_FROM_USERID'
EXPORTING
begda = w_date
endda = w_date
usrid = w_fourtha
usrty = '010'
IMPORTING
usr_pernr = w_userid_fourtha
EXCEPTIONS
retcd = 1
OTHERS = 2.
IF sy-subrc <> 0.
" NO action
ENDIF.
ENDIF.
IF hohradmn_usrid = w_userid_fa OR hohradmn_usrid = w_use
rid_sa OR
hohradmn_usrid = w_userid_ta OR hohradmn_usrid = w_use
rid_fourtha.

w_flag_1 = 'X'.

ENDIF.

CLEAR: w_lines.

DESCRIBE TABLE it_details LINES w_lines.

IF w_lines = 4.

wf_level = 'HO HR ADMIN'.

ELSEIF w_lines = 3.

wf_level = 'UNIT HEAD'.

ELSEIF w_lines = 2.

wf_level = 'UNIT HEAD'.


ELSEIF w_lines = 1.

IF frstapp_usrid IS NOT INITIAL AND frstapp_usrid = uni
thd_usrid.

wf_level = 'FIRST APPRAISER'.

ELSE.

wf_level = 'UNIT HEAD'.

ENDIF.
ENDIF.
ENDIF.

** Case handelling for the workflow that has been forwarded to some other a
gent.

IF wi_agent IS NOT INITIAL AND wf_level IS INITIAL.
CLEAR: w_lines.
DESCRIBE TABLE it_details LINES w_lines.

IF w_lines = 1.

IF frstapp_usrid IS NOT INITIAL. " AND frstapp_usrid =
unithd_usrid.

wf_level = 'FIRST APPRAISER'.

ELSEIF frstapp_usrid IS INITIAL AND scndapp_usrid IS NO
T INITIAL .

wf_level = 'SECOND APPRAISER'.

ELSEIF frstapp_usrid IS INITIAL AND scndapp_usrid IS IN
ITIAL .

wf_level = 'UNIT HEAD'.

ENDIF.

ELSEIF w_lines = 2.

IF scndapp_usrid IS NOT INITIAL AND scndapp_usrid = uni
thd_usrid.

wf_level = 'SECOND APPRAISER'.

ELSEIF scndapp_usrid IS NOT INITIAL .

wf_level = 'SECOND APPRAISER'.

ELSEIF scndapp_usrid IS INITIAL.

wf_level = 'UNIT HEAD'.

ENDIF.

ELSEIF w_lines = 3.


wf_level = 'UNIT HEAD'.


ENDIF.


ENDIF.

ENDIF.

ENDIF.
ENDIF.

******************************End of Leave service*************************
******************************

WHEN 'WS90100003'. " Master data workflow

wf_level = 'HR ADMIN'.

WHEN 'WS90100004'. " Master data workflow

wf_level = 'HR ADMIN'.

WHEN 'WS90100013'. " Asset workflow

wf_level = 'HR ADMIN'.

WHEN 'WS90100014'. " Loan workflow

* Getting the workflow container data

CALL FUNCTION 'SWW_WI_CONTAINER_READ'
EXPORTING
wi_id = w_wihead
TABLES
wi_container = it_event_container
EXCEPTIONS
container_does_not_exist = 1
read_failed = 2
OTHERS = 3.

IF sy-subrc = 0.

LOOP AT it_event_container WHERE element = 'YLOAN'.

is_loan = it_event_container-value.
SHIFT is_loan LEFT DELETING LEADING space .
SHIFT is_loan LEFT DELETING LEADING 'YHRLOAN' .
SHIFT is_loan LEFT DELETING LEADING space .
w_object_key = is_loan.
swc_create_object w_loan 'YHRLOAN' w_object_key.
w_hr_admin = w_object_key+33(12) .
swc_get_property w_loan 'W_UNIT_HEAD' w_unit_head."#EC *
swc_get_property w_loan 'W_UNIT_HR' w_unit_hr."#EC *


EXIT.
ENDLOOP.
ENDIF.
* Checking for workflow level
IF w_forwarded IS INITIAL. " If workitem has not been forwarded b
ut gone to the agent by WF
IF agent IS NOT INITIAL.

IF agent = w_hr_admin.

wf_level = 'HR ADMIN'.

ELSEIF agent = w_unit_head+2(12).

wf_level = 'UNIT HEAD'.

ELSEIF agent = w_unit_hr+2(12).

wf_level = 'UNIT HR'.
ENDIF.
ELSE. " Only in this case workflow will be pending with no agen
t
wf_level = 'UNIT HR'.
ENDIF.


ELSE. " If workitem has been forwarded manually

wf_level = w_forwarded. " The person who has forwarded the WI


ENDIF.

WHEN 'WS90100018'. "INDUCTION-LATERAL workflow

* Getting the workflow container data

CALL FUNCTION 'SWW_WI_CONTAINER_READ'
EXPORTING
wi_id = w_wihead
TABLES
wi_container = it_event_container
EXCEPTIONS
container_does_not_exist = 1
read_failed = 2
OTHERS = 3.
IF sy-subrc = 0.

LOOP AT it_event_container WHERE element = 'W_LEVEL'.

w_level = it_event_container-value.
EXIT.
ENDLOOP.

IF w_level = '1'.

wf_level = 'FIRST APPRAISER'.

ELSEIF w_level = '2'.

wf_level = 'SECOND APPRAISER'.

ELSEIF w_level = '3'.

wf_level = 'UNIT HEAD'.

ELSEIF w_level = '4'.

wf_level = 'FUNCTION HEAD'.


ELSEIF w_level = '5'.

wf_level = 'UNIT HR ADMIN'.


ENDIF.
ENDIF.
WHEN 'WS90100019'. "INDUCTION-AUT workflow

* Getting the workflow container data

CALL FUNCTION 'SWW_WI_CONTAINER_READ'
EXPORTING
wi_id = w_wihead
TABLES
wi_container = it_event_container
EXCEPTIONS
container_does_not_exist = 1
read_failed = 2
OTHERS = 3.

IF sy-subrc = 0.
LOOP AT it_event_container WHERE element = 'W_LEVEL'.

w_level = it_event_container-value.
EXIT.
ENDLOOP.

IF w_level = '1'.

wf_level = 'PROCESS OWNER'.

ELSEIF w_level = '2'.

wf_level = 'UNIT HEAD'.

ELSEIF w_level = '3'.

wf_level = 'FUNCTION HEAD'.


ELSEIF w_level = '4'.

wf_level = 'UNIT HR ADMIN'.


ENDIF.
ENDIF.
WHEN 'WS90100020'. "APPRAISAL workflow

* Getting the workflow container data

CALL FUNCTION 'SWW_WI_CONTAINER_READ'
EXPORTING
wi_id = w_wihead
TABLES
wi_container = it_event_container
EXCEPTIONS
container_does_not_exist = 1
read_failed = 2
OTHERS = 3.

IF sy-subrc = 0.
LOOP AT it_event_container WHERE element = 'W_LEVEL'.

w_level = it_event_container-value.
EXIT.
ENDLOOP.

IF w_level = '1'.

wf_level = 'FIRST APPRAISER'.

ELSEIF w_level = '2'.

wf_level = 'SECOND APPRAISER'.

ELSEIF w_level = '3'.

wf_level = 'UNIT HEAD'.


ELSEIF w_level = '4'.

wf_level = 'FUNCTION HEAD'.

ELSEIF w_level = '5'.

wf_level = 'HO-HR'.



ENDIF.
ENDIF.
WHEN 'WS90100021'. "DPS workflow

* Getting the workflow container data

CALL FUNCTION 'SWW_WI_CONTAINER_READ'
EXPORTING
wi_id = w_wihead
TABLES
wi_container = it_event_container
EXCEPTIONS
container_does_not_exist = 1
read_failed = 2
OTHERS = 3.
IF sy-subrc = 0.

LOOP AT it_event_container WHERE element = 'W_LEVEL'.

w_level = it_event_container-value.
EXIT.
ENDLOOP.

IF w_level = '1'.

wf_level = 'FIRST APPRAISER'.

ELSEIF w_level = '2'.

wf_level = 'SECOND APPRAISER'.


ENDIF.
ENDIF.
WHEN 'WS90100022'. "IELS workflow

* Getting the workflow container data

CALL FUNCTION 'SWW_WI_CONTAINER_READ'
EXPORTING
wi_id = w_wihead
TABLES
wi_container = it_event_container
EXCEPTIONS
container_does_not_exist = 1
read_failed = 2
OTHERS = 3.
IF sy-subrc = 0.

LOOP AT it_event_container WHERE element = 'W_LEVEL'.

w_level = it_event_container-value.
EXIT.
ENDLOOP.

IF w_level = '1'.

wf_level = 'FIRST APPRAISER'.

ELSEIF w_level = '2'.

wf_level = 'FUNCTION HEAD'.


ENDIF.
ENDIF.
WHEN 'WS90100023'. "POTENTIAL REVIEW workflow

* Getting the workflow container data

CALL FUNCTION 'SWW_WI_CONTAINER_READ'
EXPORTING
wi_id = w_wihead
TABLES
wi_container = it_event_container
EXCEPTIONS
container_does_not_exist = 1
read_failed = 2
OTHERS = 3.
IF sy-subrc = 0.

LOOP AT it_event_container WHERE element = 'W_LEVEL'.

w_level = it_event_container-value.
EXIT.
ENDLOOP.

IF w_level = '0'.

wf_level = 'FIRST APPRAISER'.

ELSEIF w_level = '1'.

wf_level = 'SECOND APPRAISER'.

ELSEIF w_level = '2'.

wf_level = 'UNIT HEAD'.

ELSEIF w_level = '3'.

wf_level = 'FUNCTION HEAD'.


ENDIF.

ENDIF.
WHEN 'WS90100024'. "TRAINING workflow

* Getting the workflow container data

CALL FUNCTION 'SWW_WI_CONTAINER_READ'
EXPORTING
wi_id = w_wihead
TABLES
wi_container = it_event_container
EXCEPTIONS
container_does_not_exist = 1
read_failed = 2
OTHERS = 3.

IF sy-subrc = 0.
LOOP AT it_event_container WHERE element = 'W_LEVEL'.

w_level = it_event_container-value.
EXIT.
ENDLOOP.

IF w_level = '0'.

wf_level = 'EMPLOYEE LEVEL'.

ELSEIF w_level = '1'.

wf_level = 'FIRST APPRAISER'.

ELSEIF w_level = '2'.

wf_level = 'SECOND APPRAISER'.

ELSEIF w_level = '3'.

wf_level = 'UNIT HR'.


ENDIF.
ENDIF.

ENDCASE.

ENDIF.
ENDIF.
ENDFUNCTION.

You might also like