Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Existing Roles can also be used for the System Task.

Image RemovedImage Added

System Tasks run in the background. If the processing fails, a dedicated Task can be created to notify the user of the issue

and to provide

. This also provides the user with the ability to make any corrections or re-submit the Task.

Image RemovedStep 6

In this example, the Administrator Task is used when the Update SAP Task fails.

Image Added

Step 1

Create a FAB application in transaction /n/IQX/FAB. Define the Properties, set the Workflow Mode to Process, and click Save.

Image Removed

Step 2

Image Added

Step 2

Add an Input control in the Form Container and bind it to field Field1 in the Data Model.

Image Added

Add a Text control in the Form Container and bind it to field Result in the Data Model.

Image Added

Step 3

Create an Implementation Class for the System Task. Go to Code to open the Form Life-Cycle dialog. Select the button Auto-Generate Class Name, followed by the button Generate Class.

The ABAP logic used by the System Task needs to be added in the ABAP Class that implements the /IQX/IF_SYSTEM_TASK Interface. You may create a dedicated Class for this, or you may use the Implementation Class of your application. In this example, we will use the latter option.

Image Added

Step 4

In the Form Life-Cycle dialog, select the button ABAP Routine next to the Perform System/Background Task to create an implementation and select it again to open the Class editor.

Image Added

Any logic can be implemented in method PERFORM_SYSTEM_TASK, but a boolean value (either ABAP_TRUE or ABAP_FALSE) must be returned in parameter E_SUCCESS.

In this example, we will only add a logic that generates a random number, log the results, and set the value of E_SUCCESS to ABAP_TRUE. However, in an actual implementation, you might need to use SAP master data or any transactional data.

Code Block
languageabap
method /iqx/if_forms_system_task~perform_system_task.
    move-corresponding cr_data to gs_data.
    "implement your actions.
    data: lo_ran type ref to cl_abap_random_int,
          lv_i   type i,
          lv_seed type i, 
		  lv_message type string.
    lv_seed = sy-timlo.
    lo_ran = cl_abap_random_int=>create( min = 1 max = 99999999 seed = lv_seed ).
    lv_i = lo_ran->get_next( ).
    gs_data-result = lv_i. "set result into data model
    lv_message = |Document | && gs_data-result && | created|.
    call method me->add_to_log   "log your results
      exporting
        i_form_name = i_form_name
        i_instance  = i_instance
        i_type      = 'S'
        i_message   = lv_message.
    move-corresponding gs_data to cr_data.
    e_success = abap_true. " or ABAP_FALSE.
endmethod.

In the Form Life-Cycle dialog, select the button ABAP Routine next to the Determine approvers for Roles Task to create an implementation and select it again to open the Class editor.

Image Added
Code Block
languageabap
method DETERMINE_APPROVERS_FOR_ROLE.
  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 'System User'.
        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 = 'WF-BATCH'.
    ENDCASE.
endmethod.

Step 5

Select the Workflow button to open the FAB Process Designer.

Step 36

Define the Roles. Create

Select the Add button to create 2 custom Roles for the Approvers. In this example, we will use the role Approver1 for the Approve Task and the System User for the Update SAP System Task.

Info

Step 47

Define the Levels. Select the Add button to create the Levels.

In this example, we will use the level Update SAP for the Update SAP System Task and Administrator for the Administrator

for……

Task.

Image RemovedImage Added

Step 58

Define the Tasks using the Template and the Add buttons.

In this example, the Administrator Task is used in situations where the Update SAP Task fails.

Info

Step 9

Define the Roles for each Task.

Start - Initiator

Draft - Initiator

Approve - Approver1

Update SAP - System User

Administrator - Administrator

Complete - No Role

In this example, the System Role, Administrator, is assigned to the Administrator Task. This allows the user with an administrator role to carry out the Administrator functions. A User can be configured as an Administrator in transaction /n/IQX/FAB_CONFIGRoles for Users and the Admin flag should be ticked.

Step 10

Set the Implementing Class of the System Task.

Select the Ellipsis button (More Task Settings) of the Update SAP task.

Tick the flag for the System Task or Recording and enter the class name in the Implementing Class field.

Step 7Select OK.

Image Added

Step 11

Define the Outcomes for each Task Action. Go to ActionsOutcomes.

Start and Draft Tasks

Draft - Draft

Submit - SubmitImage Added

Approve Task

Image Added

Approve - Update SAP Task

Reject - Draft

Update SAP Task

Success - Complete

Failure - Administrator

Administrator Task

Resubmit - Update SAPImage Added

Administrator Task

Image Added

The Process Flow will be as follows:

Image Added

Select Save & Close.

Step 12

Add a FAB Process Flow control by right-clicking on Page Add Process FlowAdd FAB Process Flow.

Image Added