Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
jose_sequeira
Active Participant
Hello,

In this Blog i'm gonna show you a alternative to a "common" question among the community: How do i know if a Workflow was executed coming from FIORI MyInbox or SBWP?

Well, there are a few ways to do that... This is one of them, a "coding" approach.

So let's get to it!

I've created a simple Workflow that looks like this:





As you can see, a simples decision task, following by a condition check and 2 message actions.

On the decision task, just a simple decision:



Created a variable called GV_FIORI on the Workflow Container, it will receive a X when executed from FIORI.



So here, i'm checking if there is a X to it, it's from FIORI, if not it was SBWP.



The FIORI Send mail action:



The SBWP Send mail action:



Our Workflow is all set!

Now, to be able to "know" if a Workflow came from FIORI, we have to implement the /IWWRK/BADI_WF_BEFORE_UPD_IB BADI. This BADI get's executed only when it comes from a FIORI Call, so inside of it we'll place our code to deliver a X on the GV_FIORI container variable of the Workflow process. So now the WF instance can be aware where it came from...

So i've created a implementation (you can find out more about the process here😞



Placed my Workflow ID and step ID on the filter:



So now let's implement the method:



Place the code below on it:
method /iwwrk/if_wf_wi_before_upd_ib~before_update.
data: lt_cont type table of swr_cont,
ls_root type swwwihead,
ls_cont type swr_cont.


"Get the parent Workitem...
call function 'SWI_GET_ROOT_WORKITEM'
exporting
wi_id = is_wi_details-wi_id
importing
root_item = ls_root
exceptions
workitem_does_not_exist = 1
others = 2.
if sy-subrc <> 0.
"Place the error message on the CT_RETURN...
exit.
else.
"Write data to the variable
ls_cont-element = 'GV_FIORI'.
ls_cont-value = 'X'.
append ls_cont to lt_cont.
"Write variable back to the Container...
call function 'SAP_WAPI_WRITE_CONTAINER'
exporting
workitem_id = ls_root-wi_id
tables
simple_container = lt_cont.
endif.

endmethod.

So now we're all set! Start a few Workflows, and execute from SBWP and MyInbox app, you'll see the below results:



Do you want to see it working? Check it out: DEMO Video.

Regards.
Labels in this area