Skip to Content
Technical Articles

A Neanderthal guide to configuration of Fiori my Inbox App with SAP business workflow

This article contains information about the configuration of Fiori my inbox App with workflow on a gateway central hub deployment.

In a standard work item that appears in your inbox, there is always a workflow id and step id assigned to it. This workflow id and step id when viewed in T-Code SWDD appears as a workflow activity with a task id assigned to the workflow activity. This task id should be noted as it will be later maintained in the scenario definition on the front end server.

Backend configuration

For the backend configuration, we would look to maintain both the workflow id and step id for the standard workflow we want to configure for fiori. In this case we would be configuring workflow for purchase requisition. Sometimes we might not have the workflow id but have the business object (BOR) instead. If this is the case we could execute transaction SWE2 to search for the corresponding workflow id.

Go to transaction SWDD and enter the workflow template to view its steps. We can then identify the workflow activities we need to find it step id. For some instances there might be different work flow processes with it corresponding sub workflow. The sub workflow will have activities with its corresponding task id also.

Transaction SWDD showing the Purchase Requisition workflow template

 

We will need to navigate to Maintain Task Names and Decision Options via T-Code SPRO. This where the workflow id and step id for the workflow activity will be maintained and be given the ability to approve or reject using the decision keys. For the scenario where there is a workflow process and  its sub workflow, the workflow id and step id for both  workflow process and  its sub workflow would be maintained in Task names and decision option. The sub workflow activities would be further maintained with decision keys i.e (Approve, reject or release).

Navigation to Task names and Decision Options via SPRO

 

Enhancement Implementation for Workflow

To be able to handle the approval for every work item in my fiori inbox we must be able to somehow access workflow id and step id of the work item. And to achieve this, we would create an enhancement implementation in an enhancement spot of name /IWWRK/BADI_WF_BEFORE_UPD_IB. This  enhancement spot reads release codes and FIORI rejection and approval comments.

For Implementation – Make sure to add correct filter values

For below we have WS90100004 (PR Approval Workflow) with Step id 28 and 59 as decision tasks for different levels based on workflow logic.

WS90100006 and Task 5 is rejection workflow which triggers Rejection Notification to the PR creator.

Enhancement implementation created in the enhancement spot

“Enter the code shown in between the Method and End Method.
"1. Variables
DATA abs_object TYPE swr_obj_2.
DATA abv_retcode TYPE sy-subrc.
DATA abt_container TYPE TABLE OF swr_cont.
DATA abs_container_line TYPE swr_cont.
DATA abt_msg_lines type sapi_msg_lines.
DATA abt_msg_struc type sapi_msg_struc.
DATA FORMNUMBER TYPE SWXFORMABS-FORMNUMBER.
DATA abs_formabs TYPE swxformabs.

"2. Get Workitem Details
CALL FUNCTION 'SAP_WAPI_GET_OBJECTS'
  EXPORTING
    WORKITEM_ID            = is_wi_details-wi_id
*   LANGUAGE               = SY-LANGU
*   USER                   = SY-UNAME
*   BUFFERED_ACCESS        = 'X'
IMPORTING
*   LEADING_OBJECT         =
   RETURN_CODE            = abv_retcode
   LEADING_OBJECT_2       = abs_object
TABLES
*   OBJECTS                =
   MESSAGE_LINES          = abt_msg_lines
   MESSAGE_STRUCT         = abt_msg_struc
*   OBJECTS_2              =
          .
"3. Get Document Number
MOVE abs_object-instid TO formnumber.

*4. Get Decision Based on the Workitem ID
CALL FUNCTION 'SAP_WAPI_READ_CONTAINER'
  EXPORTING
    WORKITEM_ID                    = is_wi_details-wi_id
*   LANGUAGE                       = SY-LANGU
*   USER                           = SY-UNAME
*   BUFFERED_ACCESS                = 'X'
IMPORTING
   RETURN_CODE                    = abv_retcode
*   IFS_XML_CONTAINER              =
*   IFS_XML_CONTAINER_SCHEMA       =
TABLES
   SIMPLE_CONTAINER               = abt_container
   MESSAGE_LINES          = abt_msg_lines
   MESSAGE_STRUCT         = abt_msg_struc
*   SUBCONTAINER_BOR_OBJECTS       =
*   SUBCONTAINER_ALL_OBJECTS       =.

"5. Get Application Data
select single * from swxformabs into abs_formabs where formnumber = formnumber.

"6. Set Decision Value
CASE iv_decision_key.
  WHEN 0001. "Approved
    abs_container_line-value = 'A'.
    abs_formabs-procstate = 'A'.
  WHEN 0002. "Rejected
    abs_container_line-value = 'R'.
    abs_formabs-procstate = 'R'.
ENDCASE.

"7. Set Result Value Based on Decision
abs_container_line-element = '_WI_RESULT'.
"Update Container rows
MODIFY abt_container INDEX 3 FROM abs_container_line TRANSPORTING value.”
“8. Update Container
CALL FUNCTION 'SAP_WAPI_WRITE_CONTAINER'
  EXPORTING
    WORKITEM_ID                        = is_wi_details-wi_id
*   LANGUAGE                           = SY-LANGU
*   ACTUAL_AGENT                       = SY-UNAME
   DO_COMMIT                          = 'X'
*   IFS_XML_CONTAINER                  =
*   OVERWRITE_TABLES_SIMPLE_CONT       = ' '
*   CHECK_INBOX_RESTRICTION            = ' '
IMPORTING
   RETURN_CODE                        = abv_retcode
TABLES
   SIMPLE_CONTAINER                   = abt_container
   MESSAGE_LINES          = abt_msg_lines
   MESSAGE_STRUCT         = abt_msg_struc
   .

"9. Update App Data
abs_formabs-approvdate = sy-datum.
abs_formabs-approvby = sy-uname.
update swxformabs from abs_formabs.

*10. Complete the Task
CALL FUNCTION 'SAP_WAPI_WORKITEM_COMPLETE'
  EXPORTING
    WORKITEM_ID                     = is_wi_details-wi_id
*   ACTUAL_AGENT                    = SY-UNAME
*   LANGUAGE                        = SY-LANGU
*   SET_OBSOLET                     = ' '
   DO_COMMIT                       = 'X'
*   DO_CALLBACK_IN_BACKGROUND       = 'X'
*   IFS_XML_CONTAINER               =
*   CHECK_INBOX_RESTRICTION         = ' '
IMPORTING
   RETURN_CODE                     = 
“8. Update Container
CALL FUNCTION 'SAP_WAPI_WRITE_CONTAINER'
  EXPORTING
    WORKITEM_ID                        = is_wi_details-wi_id
*   LANGUAGE                           = SY-LANGU
*   ACTUAL_AGENT                       = SY-UNAME
   DO_COMMIT                          = 'X'
*   IFS_XML_CONTAINER                  =
*   OVERWRITE_TABLES_SIMPLE_CONT       = ' '
*   CHECK_INBOX_RESTRICTION            = ' '
IMPORTING
   RETURN_CODE                        = abv_retcode
TABLES
   SIMPLE_CONTAINER                   = abt_container
   MESSAGE_LINES          = abt_msg_lines
   MESSAGE_STRUCT         = abt_msg_struc
   .

"9. Update App Data
abs_formabs-approvdate = sy-datum.
abs_formabs-approvby = sy-uname.
update swxformabs from abs_formabs.

*10. Complete the Task
CALL FUNCTION 'SAP_WAPI_WORKITEM_COMPLETE'
  EXPORTING
    WORKITEM_ID                     = is_wi_details-wi_id
*   ACTUAL_AGENT                    = SY-UNAME
*   LANGUAGE                        = SY-LANGU
*   SET_OBSOLET                     = ' '
   DO_COMMIT                       = 'X'
*   DO_CALLBACK_IN_BACKGROUND       = 'X'
*   IFS_XML_CONTAINER               =
*   CHECK_INBOX_RESTRICTION         = ' '
IMPORTING
   RETURN_CODE                     = 
“abv_retcode
*   NEW_STATUS                      =
TABLES
*   SIMPLE_CONTAINER                = abt_container
   MESSAGE_LINES          = abt_msg_lines
   MESSAGE_STRUCT         = abt_msg_struc
   .

*11. Set Confirm
CALL FUNCTION 'SAP_WAPI_WORKITEM_CONFIRM'
  EXPORTING
    WORKITEM_ID                   = is_wi_details-wi_id
*   ACTUAL_AGENT                  = SY-UNAME
*   LANGUAGE                      = SY-LANGU
   DO_COMMIT                     = 'X'
*   CHECK_INBOX_RESTRICTION       = ' '
IMPORTING
   RETURN_CODE                   = abv_retcode
*   NEW_STATUS                    =
TABLES
   MESSAGE_LINES          = abt_msg_lines
   MESSAGE_STRUCT         = abt_msg_struc”
                    .


 

FRONT END CONFIGURATION

For this configuration we would need to  check the task id in the backend and maintain it in the scenario definition in the front end.

Navigation to scenario definition via SPRO

Create PR_RELEASE scenario identifier

Make sure to use the System Alias as assigned to the TaskProcessing Service in transaction /iwfnd/maint_services and assign it to Custom Release Task, in our case its TS90100009.

Remember the task id from the workflow activity in the backend, the task definition for scenario is where we would maintain the task id.

This completes the configuration of Fiori my inbox App for Purchase requisition.

 

Conclusion

I hope with this article you are able to configure workflow for FIORI successfully.

Most of the requirements to further customise your PR fiori inbox would be done in the enhancement spot provided above.

Keep an eye out, next I will be sharing a bite size information on how to create scenario specific inbox on FIORI lauchpad.

 

2 Comments
You must be Logged on to comment or reply to a post.