Skip to Content

How to ‘logically delete’ workflows

Introduction

 

In this first blog of a 73-part series ‘The Overworked Workflow Administrator’,  I hope to give a definitive answer to the commonly-asked question: ‘How do you logically delete a workflow?’.

 

Note that when I say ‘workflow’ I mean ‘workflow instance’ – for example, a purchase approval for a certain tractor costing $120,000. A ‘workitem’ is a step in that workflow instance that may appear in an inbox.

 

What does it mean to ‘logically delete’?

 

Simply put, when you ‘logically delete’ a workflow, it is set to status ‘Logically Deleted’ (aka CANCELLED) and so are all of its incomplete child workitems. These workitems are then immediately removed from users’ inboxes, and the workflow can be archived.

 

This is quite different from physically ‘deleting’ a workflow. When you ‘delete’, the workflow disappears out of the system completely. You may occasionally want to do this in a Development or Test system (for example if the system has been flooded with test workflows), but please do not delete workflows in a Production system. It can wreck absolutely everything, as Jocelyn D. entertainingly described here.

 

Why would you want to?

 

You may want to logically delete workflows if:

  • a workflow is in error and there is no possiblity / desire to restart it
  • an external event has occurred (e.g. an employee was terminated) that makes an unfinished workflow redundant
  • multiple workflows were generated by mistake, and are embarrassingly clogging up the Manager’s inbox

 

 

How to logically delete a single workflow instance

 

If there is one piece of advice that you remember from this blog, let it be this: we logically delete top-level (WS*) workflow instances only, not (TS*) workitems.

 

When you logically delete a workflow, all of its child workitems are automatically deleted as well, so the whole workflow is finalized in one fell swoop. It gives you ‘closure’. If you foolishly decide to delete a workitem, the top-level workflow remains in status ‘In Process’ and will be a blight on your workflow statistics forever.

To logically delete a single workflow from SWIA:

  • select a line (NB select the top-level WS* tasks only!). These will have status ‘STARTED’.
  • Execute the menu item Edit > Work Item > Logically Delete
  • Refresh

 

To logically delete a single workflow from anywhere:

  • go to the current workflow log (click on the ‘scroll’ button when you’re viewing a workflow in SWI2_FREQ etc)
  • click on the first line (i.e. the top-level workflow header)
  • choose the menu item Goto > Technical Workitem Display
  • choose the menu item Edit > Change
  • click the ‘Logically Delete’ button

 

 

If you then go back into the workflow log, the workflow icon is now a faded cube. It has the status ‘Logically Deleted’, as does the last workitem.

 

How to logically delete a lot of workflows

 

The above manual procedure works fine but can get tedious after a few hours. Luckily SAP has added the ‘logically delete’ function to transaction SWIA (Process workitem as administrator) although – if you are on a SAP_BASIS release before 7.11 – it may not be visible to the naked eye.

 

SAP Note 1286336 (‘New logically delete function for mass processing’) adds the function code ADMC (Administrator Cancel) to transaction SWIA. You can check the SAP Note to see if you already have the requisite support pack; if not, you can use SNOTE to put this note in yourself.

 

So, to logically delete multiple workflows:

 

  • run transaction SWIA, selecting only top-level (WS*) workflows
  • using ‘shift’ (or ‘control’), select all the workflows that you want to delete
  • type ADMC (‘Administrator Cancel’) in the (top-left) function code box, and press ‘Enter’

 

  • click the ‘Refresh’ button

 

 

All selected items should now have the status CANCELLED (aka ‘Logically Deleted’).

 

Any questions?

 

Q: Is it possible to reverse a logical deletion if I change my mind?

A: Unfortunately not. But all the information is in the log to start a new workflow instance with the same parameters, if required.

 

Q: Is ‘logically deleting’ the same as ‘manually completing’ a workflow or workitem?

A: No, not the same at all. When you choose to ‘manually complete’ a workitem (via SWIA), you are forced to choose an outcome for the current workitem. The workflow then continues on from that point.

 

Q: What impact does deletion have on the Universal Worklist?

A: This is another reason to always choose ‘logical deletion’. If you have (say) a million rogue items in the UWL, and you physically delete the workflows, these items disappear from the UWL but will remain in the back-end SWN_NOTIF table. In contrast, if you ‘logically delete’ the workflows, the items in SWN_NOTIF are updated to status ‘L’ and will be removed by normal housekeeping (program RSWNNOTIFDEL).

 

Good luck!

48 Comments
You must be Logged on to comment or reply to a post.
  • Good job! But I would add that, depending on your version, it can be even easier to logically delete multiple workflows:

    – go to SWIA

    – select a number of top-level workflow workitems using Ctrl or Shift

    – Edit > Work Item > Logically Delete

    – Refresh

  • Thanks for all the encouraging comments. I was always daunted by the idea of blogging but it’s actually quite fun.

    I think Rick Bakker should stop lurking and do some as well.

    If the ‘sophomore syndrome’ doesn’t hit, I’ll post the second epistle next week. 🙂

  • Thanks Paul. I found this blog quite useful recently. Also this topic came up in a discussion on Linked In and I gave a link to this blog.

    I’m looking forward to the next 72 installments. 🙂

  • Hi Paul Thanx for the tutorial.Is it possible to logically delete a wf from report ( calling the SWIA)? at the moment i’m justing completing programmatically one of my workitem, that completes my wf not “delete it”.

    Regards.

    • Andre,

        Yes, you can logically delete workflows from a program by calling the function module SAP_WAPI_ADM_WORKFLOW_CANCEL.

      cheers

      Paul

  • Ok, nice explanation, but I have one question related to this:

    we logically delete top-level (WS*) workflow instances only, not (TS*) workitems

    What about tasks like TS00008068 or TS20000051? this is not WS but it is on top level, can I logically delete it?

     

     

    • Andrej: Yes, you’ are right: if the workflow consists of a single TS item, then it is of course the top-level item (and is ok to logically delete).

  • I want to  “complete manually” the workflow items but it is not available for multiple items in bulk. the system is allowing me to do one by one item individually. Pl suggest how to “complete manually” multiple items

     

  • thanx for this blog, Paul … I found it during a search for a real MASS deletion of top-level workflows and i wanted to avoid creating a report without doing a “google”

    Did anyone ever considered doing a “logical delete” as a background task (SM37)?

    My problem is that i have to delete the workflows of the last 6 month, as our external delevoper switched on the IDOC-workflow for event “INPUTSUCCESS” – well, there exist now ~150.000 workflows in status ERROR for each month!

    meanwhile we are searching for a better start-event filter, but yet there is no conclusion … 😛

     

    • I am facing the same issue . I want to schedule this logical deletion

      our business case is as follows:

      Workflow item was triggered,but resulted into an error.

      Due to business criticality,  the user has already completed the business transaction, outside of the workflow, hence the workflow is now sitting in user inbox but in error status, We have thousands of workflow items like this sitting in user inbox. We wan to schedule a batch job which can look for speciic tasks and delete the jobs where the start date 180 days in past.

      There do not seem to be any standard option.

      As Paul mentioned, only a custom development seem to be way out. 🙁

       

      Thanks Paul for the nice post.

        • the workflow is already been configured in production system. This issue occurs only when the business transaction fails and the user post the transaction without using the workflow workitem.

          Over a period of time, the workitem starts accunulating and result into a sizable number.

          Ofcourse we can do a periodic logical delete, but thats going to be a manual activity. If there is any stndard job ( somehow), it would help in development errorts…..

          • Using SWIA and ‘ADMC’, you can easily handle thousands of manual deletions  (but maybe not hundreds of thousands :-).

            That should do the job until you can fix the workflow. As Rob commented below, the completion of the task outside the workflow should trigger a terminating event, so the workflow can exit cleanly.

            It’s better to spend time developing that fix, rather than building a logical deletion program. As they say in the classics, we should treat the cause, not the symptom…

            cheers
            Paul

          • Thanks Paul 🙂

            treating the underlying cause … that is the choice…. but thanks for the suggession of investing time on rectifying the workflow than buildin gthe custom solution.:)

          • Hi,

            When I model business process with SAP workflow and some users are permitted to influence the process outside of workflow then I have to change my models accordingly.

            Usually every self contained process is modeled where it either expects the user to execute the workitem or a parallel branch is waiting for an event telling the workflow the step is executed outside of the workflow. You can also use terminating events on a task, which is how SAP has modeled the SAP standard PO release workflow.

            Kind regards, Rob Dielemans

          • Yes, this will be a way forward….. Thank you for the guidance 🙂 We will have to either ‘live-with-the-thing’ or invest in modifying the existing  workflow 🙂

            Than you to you for replying promptly.

  • Hello Paul,

     

    Thanks for the really nice article and the great discussion. I have a requirement to delete old Items from Inbox (over past 5 years).

    I have tried deleting the Workflow Items using SWIA – ADMC method and they do go to CANCELLED Status on the SWIA screen. However, When I go to the user’s Inbox, the executable task is still sitting there. After I click on that task, it goes into error status and upon refresh, I see that Item go away from the Inbox.

    Is there a back-end method to sync the User Inbox to Items, so I would not have to click each deleted Items to get to to disappear from the Inbox?

     

    Thanks

    • Hi,

      It sounds like the workitem is ‘gone’, but the inbox just needs refreshing.

      I’m not sure what type of inbox you are using, or what the refresh rate is. Do a refresh manually before you start executing items. Or wait a few minutes.

      cheers
      Paul

  • Dear Paul,

    I have reference number 000001647962, the CASE_GUID is 0050569CEE411ED992D67D87589408A5, PersonID is 10353215. the Status is ‘started’ in table T5ASRPROCESSES.

    1. I try to find workflow item by SWI6 with ABAP clase CL_HRASR00_WF_PROCESS_OBJECT and give GUID as object key, it shows: there are no workflows that have already worked with this object type. I can’t find workitem ID to cancel the workflow.

    2. For another reference number , the Status is ‘started’ in table T5ASRPROCESSES also. I can get work item by SWI6, but all workitems status are completed.

    My question:

    User still find the WF is ‘in process’ status by searching reference number. Could you please give me some suggestion, What should I do so that I can logical delete this kind of WF ?

    Thanks.