workflow sap worflow
DESCRIPTION
SAP WSORKFLOWTRANSCRIPT
*&********************************************************************&**& 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_werks, 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 = 'NBDC' OR v_werks = 'NDIS' OR v_werks = 'SDIS' OR v_werks = 'EDIS' OR v_werks = 'WDIS' ) AND ( v_yyjlevel = '60000001' OR v_yyjlevel = '60000002' OR 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 = 'MKDP' 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 = 'MKDP' 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' OR v_yyjlevel = '60000006' ). v_mltlvl = 'X'. " 5
ELSEIF ( v_werks = 'AECU' OR v_werks = 'AEGA' OR v_werks = 'AEPA' 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 = 'AEPA' 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 = '60000006' ). " 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 begda LE w_date AND endda 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 begda LE w_date AND endda 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_usrid ,unithd_usrid , w_endda) WHERE pernr EQ 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 the 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_userid_sa OR hohradmn_usrid = w_userid_ta OR hohradmn_usrid = w_userid_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 = unithd_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 agent.
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 NOT 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 = unithd_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 but 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 agent 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.