Implement Workflow Escalations in FAB

To escalate a FAB generated workflow work item to the next person in the approval process . Escalation of workflow workitems is recommended when the current approver has not actioned the item for a period of time.   

Escalations in FAB


As of FAB 2.0.6, escalation(s) of approval tasks is possible.

Escalations are configured in the FAB Workbench via the Workflow dialog. The logic for handling when an escalation is triggered is done in the implementation class in method ESCALATION_PROCESS.

In FAB 2.0.6, the escalation period can only be specified in hours.


Configure Escalations in FAB Workbench


Escalations are configured in the Escalations section.


  • Sequence – used to order the display of the configuration. Entries with Sequence = 0 will not be saved.
  • Approval Level – this is the approval level defined in the corresponding  “Status Changes for Action” section. In this example escalations are set up for approval level 1 (“Submitted”)

  • Escalation Level – a sequential number describing the escalation level. It is possible to have many escalations for one approval level.
  • Escalation Hours – the number of hours that must pass after the Form has reached the given approval level before the escalation is triggered. If more than one level of escalation are configured, the subsequent escalation hours refer to the number of hours after the preceding escalation level was reached.


Schedule Program /IQX/ESCALATIONS_PROCESS


Program /IQX/ESCALATIONS_PROCESS should be schedule according to your needs. It can be run for all Forms, or can be schedule per Form using a variant. A recommended scheduling period would be every 15 minutes.


Implement ESCALATION_PROCESS


In the FAB Implementation Class, redefine and implement method ESCALATION_PROCESS.

In this method the parameter IS_ESCALATION provides pertinent information such as the escalation level, approval level, and time the Form started the escalation count-down. Also provided is the Form data in IT_FORM_DATA.


An example implementation is as follows: This simply completes the current workflow task and starts a new one.


   CASE is_escalation-approval_level.

      WHEN 1.

        CALL METHOD me->complete_workflow_task
          EXPORTING
            i_instance  = is_escalation-zinstance
            i_form_name = is_escalation-zform_name.

        DATA: lt_long_text TYPE /iqx/tdline_tt.
        FIELD-SYMBOLS: <fs_long_text> LIKE LINE OF lt_long_text.

        APPEND INITIAL LINE TO lt_long_text ASSIGNING <fs_long_text>.
        <fs_long_text> = 'This was escalated'.

        CALL METHOD me->start_sap_workflow
          EXPORTING
            i_form_name            = is_escalation-zform_name
            i_instance             = is_escalation-zinstance
            i_work_item_text       = 'Escalated'
            it_work_item_long_text = lt_long_text.


        DATA: lv_message TYPE string.

        lv_message = |Escalated Level | && is_escalation-escalation_level.
        CALL METHOD me->add_to_log
          EXPORTING
            i_form_name = is_escalation-zform_name
            i_instance  = is_escalation-zinstance
            i_type      = 'S'
            i_message   = lv_message.

    ENDCASE.


Determine new approvers based on Escalation Level


Methods DETERMINE_APPROVERS_WORKFLOW and DETERMINE_APPROVERS_ON_SAVE have a method parameter I_ESCALATION_LEVEL which can be used to determine the appropriate approvers based on the escalation level. For example it may be desired to determine the approvers to be a higher-level manager, as well as the original approvers when a certain escalation level is reached.


Example:

               “Determine approvers as usual

      “At Escalation, add extra approvers

     IF i_escalation_level = 1.

        APPEND INITIAL LINE TO ct_approvers ASSIGNING <fs_approvers>.
        <fs_approvers>-objty = 'US'.
        <fs_approvers>-objid = 'APPROVER2'.

      ENDIF.

     IF i_escalation_level = 2.

        APPEND INITIAL LINE TO ct_approvers ASSIGNING <fs_approvers>.
        <fs_approvers>-objty = 'US'.
        <fs_approvers>-objid = 'APPROVER3'.

      ENDIF.



Monitoring in FAB Data Report (/IQX/FAB_DATA)


/IQX/FAB_DATA has a section called “Escalation” where a log of the escalation process can be seen



The log shows

  • Start Date and Start Time – when the count-down to escalation begins
  • Escalated flag and Escalation Date and Time – when the schedule program /IQX/ESCALATIONS_PROCESS determines that the escalation period has been reached, the log entry will be flagged as Escalated, and the date and time of escalation recorded
  • Cancelled flag and Cancelled Date and Time – the job /IQX/ESCALATIONS_PROCESS may cancel an escalation step if the workflow is no longer at the specified approval level (eg the approval step is completed by the designated agent)