Create an Enhanced Workflow
This article demonstrates how to create an Enhanced Workflow in the FAB Workbench.
Procedure
Creating an Application with a Simple Workflow
Step 1 | Create a FAB application in transaction /n/IQX/FAB. Define the Properties, set the Workflow Mode to Process, and click Save. |
Step 2 | Click the Workflow button to open the FAB Process Designer. In the FAB Process Designer, click the Template button and select Draft, Submit, Approve. Click Yes in the Apply Template? dialog. The following Process Flow will be generated. Click Save & Close. Save the application and notice that the Draft and Submit actions were added in the Footer bar. |
Step 3 | Add a FAB Process Flow control to the Page to display the Process Flow Diagram in the application. |
Using a Requirement in a Workflow
Requirements can be added to the Process Flow to specify whether a Task will be required or not depending on the conditions set. For example, you can set a requirement in the Workflow where an Approval Task is not required if the requested amount is less than $1000. To demonstrate this scenario, follow the steps below.
Step 1 | Create a Data Model field by right-clicking on the Root Node → Add Field of Type → Float. Set the Field Name and Description to RequestAmount. |
Step 2 | Add an Input control in the Form Element and bind it to field RequestAmount in the Data Model. You can drag and drop the Data Model Field onto the Form Element to easily create the Input Control and the binding. Set the Label of the Input control to Request Amount. Remove the Label of the Form Container. Set the Label of the Form to Request Details. Click Save. |
Step 3 | Click the Workflow button to open the FAB Process Designer. Go to the Requirements tab. Click the Add button and enter the requirement details. In this example, we will use the following values: Id: AMOUNT_GT_1000 Description: Amount > $1000 Go to the Tasks tab. Click the Requirements button of the Approve task and select the requirement. Click OK. Go to the Process Flow tab and the requirement is now reflected in the Approve task. Click Save & close. |
Step 4 | Implement the Requirement in ABAP by clicking the Code button. In the Form Life-Cycle dialog, click Auto-Generate Class Name button then click Generate Class. In the Workflow section, click the ABAP Routine button next to Evaluate Task/Outcome Requirements to create the implementation of the REQUIREMENT_EVALUATE method. Click the button again to open the class editor. Implement the following logic for the Requirement and Activate. method REQUIREMENT_EVALUATE.
e_required = abap_false.
MOVE-CORRESPONDING cr_data TO gs_data.
CASE i_requirement_id.
WHEN 'AMOUNT_GT_1000'.
IF gs_data-requestamount > 1000.
e_required = abap_true.
ELSE.
e_required = abap_false.
ENDIF.
ENDCASE.
endmethod. In the Form Life-Cycle dialog, click Save. |
Step 5 | Add an Action to Update the Process Flow Diagram when the Request Amount is Changed (optional). Configure a Default Path. Go to Workflow → Tasks → Actions (Approve Task). In the APPROVE action, click the Behaviour button and tick Default Path. Click OK. In the FAB Process Designer, click Save & Close. Test the application. |
Using Roles in a Workflow
Roles control who are the recipients of Workflow Tasks. Roles are assigned to Tasks and an ABAP code is used to define the actual users for each Role. A user-exit is provided for this purpose DETERMINE_APPROVERS_FOR_ROLE.
Step 1 | Implement the Role Determination in ABAP by clicking the Code button. In the Workflow section, click the ABAP Routine button next to Determine Approvers for Roles to create the implementation of the DETERMINE_APPROVERS_FOR_ROLE method. Click the button again to open the class editor. Implement the following logic for the user assignment and Activate. METHOD determine_approvers_for_role.
* NOTE - for this to work as intended, do not implement DETERMINE_APPROVERS_ON_SAVE, or call SUPER->DETERMINE_APPROVERS_ON_SAVE method if you do implement it
* example 1 (manually define approvers)
FIELD-SYMBOLS: <fs_approvers> LIKE LINE OF ct_approvers.
CASE i_role.
WHEN 'Approver1'.
APPEND INITIAL LINE TO ct_approvers ASSIGNING <fs_approvers>.
<fs_approvers>-approval_level = i_level.
<fs_approvers>-node_id = i_node.
<fs_approvers>-role_id = i_role.
<fs_approvers>-zinstance = i_instance.
<fs_approvers>-objty = 'US'.
<fs_approvers>-objid = 'FABAPPR1'.
WHEN 'Approver2'.
APPEND INITIAL LINE TO ct_approvers ASSIGNING <fs_approvers>.
<fs_approvers>-approval_level = i_level.
<fs_approvers>-node_id = i_node.
<fs_approvers>-role_id = i_role.
<fs_approvers>-zinstance = i_instance.
<fs_approvers>-objty = 'US'.
<fs_approvers>-objid = 'FABAPPR2'.
ENDCASE.
ENDMETHOD. Note here that we have assigned two user IDs FABAPPR1 and FABAPPR2 to Role Approver1 and Role Approver2, respectively. In the Form Life-Cycle dialog, click Save. Once DETERMINE_APPROVERS_FOR_ROLE has been implemented, it is possible to check the agents for each Task by clicking on the Task in the Process Flow Diagram of the application. |
Using View Control and View Variables in a Workflow
View Control lets you add a layer of security that regulates which users or roles can view and edit certain sections of the application.
View Variables lets you add a catalog of Data Model fields (Booleans) that can be used by the View Control.
To demonstrate this functionality, let us two create two sections in the application:
Request Amount
Approver Comments
In this application, only users with Role Approver1 should be able to edit the Approver Comments, and the Approver Comments should not be visible until the application has reached Level Approval or Complete.
Step 1 | Create a Data Model field by right-clicking on the Root Node → Add Field. Set the Field Name and Description to ApproverComments. |
Step 2 | Add a new Form with Label Approver Details. Add a Text Area in the Form Element and bind it to field ApproverComments in the Data Model. |
Step 3 | To control the visibility of the Approver Details Form, create a new Data Model field ApproverDetailsVisible type Boolean. The recommended practice is to place the view control variables in a dedicated Structure Type Node in the Data Model. In this example, we use ViewControl. |
Step 4 | Set the Visible Property of the Approver Details Form to ViewControl/ApproverDetailsVisible. Click Save. After saving, the Approver Details Form is no longer visible because the default value of a Boolean Field is false. |
Step 5 | The objective of this step is to restrict the editing of the Approver Comments to users with Role Approver1 and the Approver Comments should not be visible until the application has reached Level Approval. Click the Workflow button to open the FAB Process Designer. In the FAB Process Designer, go to View Variables tab. Click the Add button and enter the following information: Variable name: ViewControl/ApproverDetailsVisible Auto. Set to false at each new Level: Ticked Click Save. Go to View Control tab. Click the Add button and enter the following information: Level: Approve Role: Approver1 Variable name: ViewControl/ApproverDetailsVisible Click Save. |
Step 6 | The objective of this step is to allow the Initiator to view the Approver Details, but not edit them. To control the editability of the Approver Details Form, create a new Data Model field ApproverDetailsEditable type Boolean. |
Step 7 | Set the Editable Property of the Approver Comments Text Area to ViewControl/ApproverDetailsEditable. Click Save. |
Step 8 | Adjust the Workflow View Control Click the Workflow button to open the FAB Process Designer. In the FAB Process Designer, go to View Variables tab. Click the Add button and enter the following information: Variable name: ViewControl/ApproverDetailsEditable Auto. Set to false at each new Level: Ticked Click Save. Go to View Control tab. Click the Add button and enter the following information: Level: Approve Role: Approver1 Variable name: ViewControl/ApproverDetailsEditable Click Save. Click the Add button and enter the following information: Level: Approve Role: Initiator Variable name: ViewControl/ApproverDetailsVisible Click Save. |
Step 9 Optional | Check the application’s View Control settings using different Users. Initiator: Approver Details visible but not editable Approver: Approver Details visible and editable New Request: Approver Details not visible |
Step 10 | The objective of this step is to prevent the Request Amount from being changed by any of the Approvers. To control the editability of the Request Amount, create a new Data Model field RequestAmountEditable type Boolean. |
Step 11 | Set the properties of the Request Amount Input. Type to Float Editable Property to ViewControl/RequestAmountEditable Format Options to decimals 2 Click Save. |