Download as pdf or txt
Download as pdf or txt
You are on page 1of 28

SAP Flexible Workflow Custom Scenario development with My Inbox

Integration

181425,567

1. Background:

Flexible Workflow is a new concept introduced in SAP S/4HANA with the


objective to simplify workflow configuration. It is recommended that we use
the new Flexible Workflow functionality in S/4HANA.

The flexible workflow is based on a set of predefined workflow scenarios and


tasks. This provides the functionality to define condition-based workflow for
different processes in the system.

It is possible to define single or multi step approval processes, and the relevant
workflow items are made available in the My Inbox Fiori App for the
approvers. Manage Workflows Fiori App is available to configure flexible
workflow scenario, and these apps allow the Business process specialist to set
up workflows based on the business requirement.

SAP pre-delivered many such flexible scenario in procurement, finance etc.


And SAP help is available to set up/activate those templates. However, I found
some difficulty to create custom template by using this new technology and
integrate them in my inbox. To address that, I have prepared this blog post to
fulfil one simple multi step scenario which we come across in every
implementation.

2. Multi step Approval/Reject Scenario


Multi Step Approval Flow

3. Objects Involved in this development

• Flexible workflow scenario Development


• Responsibility rule to get L1 approver
• Workflow Class to manage workflow
• My inbox task configuration
• Manage Workflow setup for custom workflow
• Email Templates

4. Flexible Scenario development:


Tcode : SWDD_SCENARIO

New tcode being used to create flexible scenarios in S4 system. Flexible block
is the main component which will play important role in scenario. We have to
first decide all possible decision tasks and activities (background method
executions) as per business requirement. As per our sample workflow, we have
3 decision tasks and 1 activity.

Create new flexible workflow scenario with class based.

New Scenario details

Create one container element employee of class type to hold all employee object
details.
Workflow Element

Go to Header and update start event details. I have created one START event in
custom class which will be used to trigger this WF.
Create all required activities as per business requirement. As per our sample
requirements, we have user decision steps like Level1 Approval, Level 2
Approval, To Requestor and activity like Post Employee data by final approver.
Activites

Create all required Agent rules as per business conditions. For the sake of POC,
I have used one responsibility rule with one agent maintained manually to get
L1 Approver. But in real time scnario, these agents will be determined in FM
based on some roles or any other conditions. That FM being used in PFAC rule.
PFAC Rule
The moment we create activities in Flexible block, it will ask us to provide all
task details for that activity. We need to provide required task details whether
user decision or activity. I’m not going too much here as this is normal
workflow functionality. The moment we create activity, then flow will be
created for this activity. Since we have 4 activities in sample workflow, so we
can see 4 flows visible in this workflow.
5. Workflow Triggering logic (Workflow class logic )

Flexible workflow triggering is just same as classic workflow mechanism. We


can trigger this either by using BO or Class events. I have created one simple
method in class to trigger this wf with some event parameters. I’m passing
employee details to workflow through start event for the sake of POC.

Redefine standard WF interface methods at least with empty implementation


and activate class.

I have declared one public key attribute in this class and instantiated this value
in constructor of the class.
START Event to trigger workflow
Event Parameters

STARTWF method code to trigger this workflow: Below is the sample code to
trigger workflow. In real time situations, you can use your own event
parameters and populatate those. Based on your requirement, we will call this
event in some exits, badis, Odata function imports or create/update methods or
custom programs etc.

DATA lv_objkey TYPE sibfinstid.


DATA ls_empdetails TYPE zhcm_st_telecommuting.
DATA lv_param_name TYPE swfdname.
DATA lr_event_parameters TYPE REF TO if_swf_ifs_parameter_container.

DATA g_evt_param_container TYPE REF TO if_swf_cnt_container.


DATA l_event_ref TYPE REF TO if_swf_evt_event.
DATA vl_returncode TYPE sysubrc.
DATA l_objtype TYPE sibftypeid VALUE ‘ZCL_WF_EMPLOYEE_
FLEX’. DATA l_event TYPE swo_event VALUE ‘START’.
DATA l_event_container TYPE REF TO if_swf_ifs_parameter_container.

Lv_objkey = iv_employee.

CALL METHOD cl_swf_evt_event=>get_event_container


EXPORTING
im_objcateg = cl_swf_evt_event=>mc_objcateg_cl
im_objtype = l_objtype
im_event = l_event
RECEIVING
re_reference = lr_event_parameters.
*
ls_empdetails-ei_employeeno = iv_employee.
Ls_empdetails-ei_lastname = ‘Veshala’.
Ls_empdetails-ei_firstname = ‘Naveen’.
Ls_empdetails-ei_postitle = ‘Consultant’.
Ls_empdetails-hr_telestartdate = sy-datum.
Lv_param_name = ‘EMPDETAILS’.
*
CALL METHOD lr_event_parameters->set
EXPORTING
name = lv_param_name “#EC NOTEXT
value = ls_empdetails.
**
TRY.
CALL METHOD cl_swf_evt_event=>raise
EXPORTING
im_objcateg = cl_swf_evt_event=>mc_objcateg_cl
im_objtype = l_objtype
im_event = l_event
im_objkey = lv_objkey
im_event_container = lr_event_parameters.

CATCH cx_swf_evt_invalid_objtype.
CATCH cx_swf_evt_invalid_event.
ENDTRY.

COMMIT WORK.

6. Manage Workflow App – Workflow development and activation

Open Manage Workflow app in Fiori launch pad and configure new workflow
based on our custom template. As per our flow, we have 3 steps in workflow,
L1 approval, L2 approval and finally posting data into SAP. When L1 or L2
clicks on Return button , then workitem routed back to Requestor and then
restart workflow when Requestor clicks on Resubmit button. Let us configure
workflow to fulfil this business scenario.

Open our custom scenario in Manage Workflow fiori app and click on + add
button to create new workflow
Valid from and Valid to need to updated if we want to configure workflow for
certain period of time else, leave it blank.

Configure steps. Click on Add in step sequence section and create new step.
Step1 – Level1 Approval

Choose Level1Approver Agent role in receipents. Pls note that these roles are
coming from Agent Rules in Flexi block. So based on our business requirement,
we have to create different rules to determine agents and use those rules in
workflow step configuration.

Add Exception Handling actions as per our flow.

If approver Rejects – then workfow would get cancelled.

Returns – Then workflow routed back to Requestor.


Note : I have used our other decision step To Requstor as required action for
Return action and selected Restart workflow as action result. Due to this, When
requstor clicks on Resubmit button, it will again routed back to L1 Approval for
review and approval.

Similarly, add other 2 steps as well.


Save and Activate workflow.

7. My Inbox Task Configuration

Generally, we will activate task filter in real time scenario to display ONLY
required workflow tasks work items in My Inbox App. So, unless we add these
in Task settings, new decision tasks won’t be displayed in My Inbox app.

SPRO->SAP Netweaver -> SAP Gateway Service Enablement -> Content ->
Workflow Settings -> Maintain Task Names and Decision Options
Sample Decision Keys for Return to Tequestor task, These desions will be
displayed as buttons in My Inbox App.

Note: These are minimum steps needed to create one custom scenario and
expose it to My inbox app. Let us start testing now.

8. Testing
Login with requestor role and execute test method STARTWF in our workflow
class.

Login fiori launchpad with Level 1 Approver and check the work item in My
Inbox app.

Click on Return button . As per our flow, it will be routed back to requestor.
Click on Resubmit, Workflow will restart again and work item goes to L1
Approver for approval.

Resubmitted by requestor and approved by L1. Workitem is awaiting final


approval now.
Final L2 approver approved. As per flow, it called background activity and
posted data and log updated and workflow got completed.
9. Dead line Monitoring :

From S4 1909 onwards, SAP has provided to enable dead line feature for
decision taks steps in Manage workflow configuration.
As shown below , overdue item was triggered after 10 min and reflected that in
SBWP and My Inbox app of L2 approver.
10. Email Templates

SAP provided Email template options to generate emails through flexible


workflow scenario. Email template name plays main role while sending mail.
We have to follow same naming convention as per our scenario to send email.

Copy Pre-delivered email template SWF_CRT_NOTIFY_RECIPIENTS and


make changes as per your business requirement in custom template. When
copying, you can name custom template as per your scenario correctly.
Naming Standards:

To send email before particular task id : YY1_(Scenario_ID)_CRT_(stepid)

For Ex : YY1-ZZ1_YY1_90000005_CRT_87 to send mail for L2 Approver

To send mail to requestor after completion of workflow with Approved or


Rejection

Approve – YY1_(Scenario_ID)_COMPLETE_POSITIVE

Rejected – YY1_(Scenario_ID)_COMPLETE_NEGETIVE

Create one email template for L2 Approver as shown in below screenshot

L2 Email Template

You might also like