workflow sap worflow

24
*&********************************************************************&* *& 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 ,

Upload: somnathsap

Post on 19-Jan-2016

75 views

Category:

Documents


0 download

DESCRIPTION

SAP WSORKFLOW

TRANSCRIPT

Page 1: Workflow SAP WORFLOW

*&********************************************************************&**& 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 *

Page 2: Workflow SAP WORFLOW

  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,

Page 3: Workflow SAP WORFLOW

        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.

Page 4: Workflow SAP WORFLOW

      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'

Page 5: Workflow SAP WORFLOW

               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'.

Page 6: Workflow SAP WORFLOW

*                      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

Page 7: Workflow SAP WORFLOW

                                              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.

Page 8: Workflow SAP WORFLOW

                    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

Page 9: Workflow SAP WORFLOW

                            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

Page 10: Workflow SAP WORFLOW

                      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.

Page 11: Workflow SAP WORFLOW

                    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.

Page 12: Workflow SAP WORFLOW

                  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.

Page 13: Workflow SAP WORFLOW

                    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

Page 14: Workflow SAP WORFLOW

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

Page 15: Workflow SAP WORFLOW

          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

Page 16: Workflow SAP WORFLOW

          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

Page 17: Workflow SAP WORFLOW

              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'.

Page 18: Workflow SAP WORFLOW

              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'

Page 19: Workflow SAP WORFLOW

            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'.

Page 20: Workflow SAP WORFLOW

              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.

Page 21: Workflow SAP WORFLOW