Logical deletion of workitems in fork branches.

Hi gurus,
I had to parallely execute some workitems and i used a fork for the same. But the workitems within the fork are getting logically deleted. Please give suggessions on how to avoid this.
Regards,
Sukumar.

Hi Sukumar,
that's SAP standard behaviour.
If you create a fork with a 1 out of 3 for succession, first 3 workitems will get created, if one of these branches reach the end of the fork, the condition is met and the other 2 will get logically deleted .
Kind regards, Rob Dielemans

Similar Messages

  • Ehat happen after logical deletion of workitem

    Hi experts,
    what happens after deletion of workitem.
    does it automatically restart the workflow of it only change the status of workitem to cancelled.???
    if it automatically restart the workflow how can we stop it.?????
    thanks in advance

    If you delete the workitem manually no workflow will be triggered automatically.
    Thanks
    Arghadip

  • Logical deletion of workitem from SAP INBOX

    Hello ,
    When we are trying to delete some work items related to generic
    decision task from SAP INBOX ,logically delte button is not visible and
    we searched in menu it is in display mode.
    The same button  is visble for other workitems related to error idocs .
    We have assigned the role to delete the work items of  type all.
    The button is visible for some type of tasks .
    We have some 30 to 40 workitems (decision task)  which are to be deleted .
    Can we use reports RSWWWIDE and RSWWHIDE without archiving of those?
    Kindly suggest us.
    Best Regards,
    Veena.

    Hi Veena,
    Please have a look at the 'Data Management guide' from service.sap.com/data-archiving, which tells you abou various options for deleting/archiving WI
    Also have a look at Note 49545.
    Hope this helps,
    Naveen

  • Wait for Event FIPP - Completed Logically Deleted

    Hi WF Experts,
    We have a WF for Release of payments.
    It has 1 Fork with 2 parallel branches (both necessary).
    1 Branch has the approval process for Amount release and the other branch calling the Account assignment approval Subworkflow.
    The approval process branch has the until loop with increment counter and it picks the agents within the loop until a loop condition is reached and thereby till no more approvals required.
    The other branch, before calling the subworkflow, it checks a WAIT FOR EVENT FIPP->COMPLETED with container element FIPPID.
    Both these branches needs to be completed so that the forks gets ended and the wf comes out of the fork.
    The approval process branch is working perfectly. But in the other branch the WAIT FOR EVENT FIPP->COMPLETED  gets logically deleted and thereby, this branch does not go firther to start the Account assignment approval Subworkflow. This way the Fork with the 2 necessary branches does not end, and thereby, the WF stops here and could not go further to set release indicators (Which is a backgorund task).This will confirm the end of WF process.
    When I pass the WI ID for this Wait event in the SWIA, it shows the status as CANCELLED.
    The WF User log as a whole shows the status as COMPLETED as all the approvers has approved the release.
    Why is the Wait for Event gets logically deleted ?Please advice.
    Edited by: Sameer Anwar on Jun 12, 2011 9:17 AM
    Edited by: Sameer Anwar on Jun 12, 2011 9:21 AM

    Dear Experts,
    Any update on this . I am unable to sort this out why the Workflow is getting stopped.
    -Anwar

  • Issue in workflow - Logically Deleted Scenario

    Hi,
    We have an issue in Journal Entry Workflow. The user has tried to upload a document for Journal Entry Posting. Document is in Parked Status. In the workflow, when it has come to the required step of workflow approval and checks for the document type, it has got logically deleted. Thereby the workflow got terminated.
    Kindly let us know as how to proceed further. What would have been the reason for this automatic logical delete? Mail us the solution regarding the same.
    Regards,
    Veera

    Automatic Logical deletion ! I think this is not possible check with the log of the workitem whose user id is appearing then in the code check weter you have assigned any FM to locially delete the work item which is being trigered by mistake if not just start another WF and proceed with your work.
    Regards
    Bikas

  • Send step in BPM is "logical deleted"

    Hi everybody,
    we are sending IDOCs from BPM to receiver determination (R/3 Backend).
    The BPM protocol marks the send step as "logically deleted".
    In SXMB_MONI strange!
    Sender = Receiver = BPM
    Any ideas?
    Regards Mario

    The required number in the fork was wrong!

  • Send Message in BPM gets "logically deleted"

    Hi everybody,
    we got a message split in BPM. The singel messages are send through "send context".
    Strange:
    In SXMB_MONI_BPE the message gets logically deleted.
    And in SXMB_MONI the BPM does not send the message to the configured receiver.
    The message is send back to the process !?
    Any suggestions?
    Thanks  a lot
    Regards Mario

    The required number in the fork was wrong!

  • Deleting unecessary workitems in production system.

    Hello Friends,
    There are so many workitems avaable in user  inbox. Earlier there was some problem in the workflow, when user manually released the PR( Purchase Requisition or PO ( Purchase Order), the workitem wasnot disappeared from user inbox. We fixed it but those workitem processing the older version of workflow.
    And worktiem related document was released already.
    So, User dont want them. Please how to clean the user inbox. I Know about SWWL.but SAP advices not to use in PRD environment.
    It is very urgent. Please give urs valuable solutions.
    Regards,
    Manoj

    Yes, well, of course I will disagree... even though I've done it myself.
    The point about deletion is that not only can you corrupt things (even with top-level) if you don't know exactly what you're doing; but this is also supposed to be an auditable process. Transactions and reports are logged on a statistical basis (i.e. number of executions over time), and evidence that <b>something</b> relating to PO release has been deleted with <i>no trace of what and by whom</i> is a very bad thing if spotted by an auditor having a bad day.
    Kjetil's suggestion will do the job if there are a lot of items, however the question sounds like it might just be one item. Go into the technical view of the top-level item, Edit->Change and logically delete it. This way the item is gone and the log shows who cancelled it.
    Cheers,
    Mike

  • Who deleted the WorkItem?

    Hi Guys,
    How can one find out who deleted the Workitem or which table would have that detail?
    Regards,
    Shashank.

    You will definately find the agent who deleted the work item (or workflow) from the workflow log. You should be able to change the personal workflow settings to "technical mode". Both the work item and workflow display. If you are able to check the workflow log in the technical mode, you can check each and every work item of the workflow, and see the action performed for them. Normally you should be at least find the user who logically deleted the workflow from the first (="header")work item of the workflow.
    Regards,
    Karri

  • Logically delete or Complete manually?

    Hi group,
    Sometimes we need to finish off a WF.  Examples:
    - A travel form has been approved in backend (PR05), and we need to end the WF that has the trip with the approver.
    - The leave request application sometimes gets messed up, and a WF needs to be terminated
    I am a little unsure whether to use "Logically delete" or "Complete manually" for the step.  Could anybody explain the difference? I am a little new with WF.  My hunch is that "Complete manually" just executes the step, whereas "Logically delete" stops the entire WF.  But I have not found good litterature on when to use these options.
    Thanks in advance
    Kirsten

    Hi Kibo,
    COmplete manulayy will come into picture if Approver is not able to execute workitem for some reason and you want to complete the rest of the Workflow steps e.g sending mail to initiator after approval, then if you complete the workitem the workflow will be completed as normal.
    However if by any chance, workflow is no more relevant and stes are not required after aapproval, then you can logically delete the workflow .
    Regards,
    Sangvir Singh

  • Logical delete in database adapter

    Hello
    I was wondering if someone has solution the problem with polling database. You can specify the logical delete column and you can give values for READ, UNREAD and RESERVED states. The problem is that when for example ESB project polls some specific table and starts an instance for every new row with specified logical delete field with value UNREAD, when something unexpected happens and something goes wrong the database adapter updates the row with READ value. This is problematic if we have thousands of rows, and we would like to separate the errored rows from the successfully read rows. Is there anyway (easy) way to update those rows that went wrong to some other value than READ?
    I don't know if anyone understood me, but just for clarification here's a example:
    I have a ESB-project which poll specific database table and parses and XML from the data. After this the ESB-project sends the data to some Web Service. The database table has column CONDITION_CODE in which value 0 means unread and value 1 means read. Now if everything goes fine there is no problems. But if the Web Service is unavailable or the data is malformed, the database adapter still updates the CONDITION_CODE to 1! We have no ways (except to listen ESB_ERROR topic and implement some error handling there) to know what rows were successfully delivered and which were not...
    Hope I was able to clarify the problem... And I hope someone could be able to provide me with answer.
    Best Regards Tuomas

    Did you use the RESERVED value property? How about the transaction mechanism? Do you have global transactions? I gues you would have to use them!

  • Logical delete in a DBAdapter

    Hi,
    I am using a logical delete to poll a table. A simple logic of unproccesed records assigned to 'N', processed ones to 'Y' and locked once to 'X' doesnt seem to work. The process doesnt pickup any inserted records.
    Are any other additional settings required for this logical delete to get working.
    Thanks,
    Valli.

    When you have the table definition which has the primary key defined already, the database adapter directly takes the field and constructs a where condition(update tbl set col1="", col2="" where primarykey=#input) based on the primary key; in this case your input should have the primary key field mapped from the BPEL process!
    If you don't have a primary key defined on that you obviously have to choose one otherwise db adapter will not proceed further and rest all the is the same logic!
    You can also observe that you can't select only few fields for updation as the XML schema generated will have all the columns available in the table. You can simply assign/tranform input data to what ever the fields which require for updation and rest all will not be treated as null but they will have the same value which is already existing in the database!!
    Hope it helps!! ( You can still have a question !! how do I change my primary key if required by the business !! ) - well I have no answer for this yet !!

  • Logical Delete in DB Polling - OSB

    Hello All,
    I have a question in polling. I have a logical delete column with Read value as 'P and unread value as 'N', Unlike BPEL, OSB's polling, does not make a record to 'P' until the process completes successfully. My DB polling adapter polls the same records while the previous instance is under processing or the previous instance ended in error. Is there a way to logically delete the record immediately once the record is read?
    To avoid this scenario, I added an error handler to make the record to 'E' if the instance encountered any error. By the time the error handler kicks in and updates the record, OSB polls the record a few times. I increased my polling frequency from 5 seconds to 30 seconds, but no luck. Any clue how to handle this scenario?
    Thanks,
    Dwarak

    Is there a way to logically delete the record immediately once the record is read?Dont do any logic in db adapter proxy. Instead make the proxy to just write to a jms queue and then have your processing logic in the jms proxy service which reads off the jms queue.

  • How to hide row from table after logical delete

    Hello.
    I am using Jdeveloper 11.1.1.3.0, ADF BC and ADF Faces.
    I want to implement Logical delete in my application.
    In my Entity object I have Deleted attribute and I override the remove() method in my EntityImpl class.
        @Override
        public void remove()
           setDeleted("Y");
        }and I added this condition to my view object
    WHERE NVL(Deleted,'N') <> 'Y'in my page I have a table. this table has a column to delete each row. I dragged and drop RemoveRowWithKey action from the data control
    and set the parameter to *#{row.rowKeyStr}* .
    I what I need is this:
    when the user click the delete button I want to hide the roe from the table. I tried to re-execute the query after the delete but the row is still on the page. Why execute query does not hide the row from the screen.
    here is the code I used for delete and execute query
        public String deleteLogically()
            BindingContainer bindings = getBindings();
            OperationBinding operationBinding = bindings.getOperationBinding("removeRowWithKey");
            Object result = operationBinding.execute();
            DCBindingContainer dc=(DCBindingContainer) bindings;
            DCIteratorBinding iter=dc.findIteratorBinding("TakenMaterialsView4Iterator");
            iter.getCurrentRow().setAttribute("Deleted", "Y");
            //iter.getViewObject().executeQuery();
            iter.executeQuery();
            return null;
        }as you see I used two method iter.getViewObject().executeQuery(); and  iter.executeQuery(); but the result is same.

    Thank you Jobinesh.
    I used this method.
        @Override
        protected boolean rowQualifies(ViewRowImpl viewRowImpl)
          Object attrValue =viewRowImpl.getAttribute("Deleted"); 
            if (attrValue != null) { 
             if ("Y".equals(attrValue)) 
                return false; 
             else 
                return true; 
            return super.rowQualifies(viewRowImpl);
        }But I have one drawback for using it, and here is the case:
    If the user clicks the delete button *(no commit)* the row will be hidden in the table, but when the user click cancel changes the row is not returned since it is not returned due to the rowQualifies(ViewRowImpl viewRowImpl) (the Deleted attribute is set to "N" now).
    here is the code for delete and cancel change buttons
        public String deleteLogically()
            BindingContainer bindings = getBindings();
            OperationBinding operationBinding =
                bindings.getOperationBinding("removeRowWithKey");
            Object result = operationBinding.execute();
            DCBindingContainer dc = (DCBindingContainer)bindings;
            DCIteratorBinding iter =
                dc.findIteratorBinding("TakenMaterialsView4Iterator");
            iter.getCurrentRow().setAttribute("Deleted", "Y");
             iter.executeQuery();
            AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance();
            adfFacesContext.addPartialTarget(this.getTakenMaterialsTable());
            return null;
        public String cancelChanges(String iteratorName)
            System.out.println("begin cancel change");
            BindingContainer bindings =
                BindingContext.getCurrent().getCurrentBindingsEntry();
            DCBindingContainer dc = (DCBindingContainer)bindings;
            DCIteratorBinding iter =
                (DCIteratorBinding)dc.findIteratorBinding(iteratorName);
            ViewObject vo = iter.getViewObject();
            //create a secondary RowSetIterator to avoid disturbing row currency
            RowSetIterator rsi = vo.createRowSetIterator(null);
            //move the currency to the slot before the first row.
            rsi.reset();
            while (rsi.hasNext())
                    currentRow = rsi.next();
                    currentRow.setAttribute("Deleted", "N");
            rsi.closeRowSetIterator();
            iter.executeQuery();
            AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance();
            adfFacesContext.addPartialTarget(this.getTakenMaterialsTable());
            return null;
        }as example, if the user initially has 8 rows, then deleted 2 rows, in cancelChanges only 6 rows appears. and the deleted rows are not there??
    any suggestion?

  • How to specify custom SQL in polling db adapter with logical delete option

    Hi all,
    I am writing a SOA composite app using JDeveloper SOA Suite 11.1.1.4 connecting to a SQL Server db using a polling DB Adapter with the logical delete option to send data to a BPEL process.
    I have requirements which go beyond what is supported in the JDeveloper UI for DB Adapter polling options, namely:
    * update more than one column to mark each row read, and
    * specify different SQL for the logical delete operation based on whether bpel processing of the data polled was successful or not.
    A complicating factor is that the polling involves two tables. Here is my full use-case:
    1) Polling will select data derived from two tables: e.g. 'headers' and 'details' simplified for this example:
    table: headers
    hid - primary key
    name - data label
    status - 'unprocessed', 'processed', or 'error'
    processedDate - null when data is loaded, set to current datetime when row is processed
    table: details
    hid - foreign key pointed at header.hid
    attr - data attribute name
    value - value of data attribute
    2) There is a many:1 relationship between detail and header rows through the hid columns. The db adapter polling SELECT shall return results from an outer join consisting of one header row and the associated detail rows where header.status = 'unprocessed' and header.hid = details.hid. (This is supported by the Jdeveloper UI)
    3) The polled data will be sent to be processed by a bpel process:
    3.1) If the bpel processing succeeds, the logical delete (UPDATE) operation shall set header.status = 'processed', and header.processedDate = 'getdate()'.
    3.2) If bpel processing fails (e.g. hits a data error while processing the selected data) the logical delete (UPDATE) operation shall set header.status = 'failed', header.processedDate = 'getdate()', and header.errorMsg = '{some text returned from bpel}'.
    Several parts of #3 are not supported by the JDeveloper UI: updating multiple columns to mark the row processed, using getdate() to populate a value of one of those column updates, doing different update operations based on the results of the BPEL processing of the data (success or error), and using data obtained from BPEL processing as a value of those column updates (error message).
    I have found examples which describe specifying custom SQL using the polling delete option to create a template then modifying the toplink file(s) to specify custom select and update SQL to implement a logical delete. (e.g. http://dlimiter.wordpress.com/2009/11/05/advanced-logic-in-oracle-bpel-polling-database-adapter/ and http://myexperienceswithsoa.blogspot.com/2010/06/db-adapter-polling-tricks.html). But none of them match what I've got in my project, in the first case because maybe because I'm using a higher version of JDeveloper, and in the second I think because in my case two tables are involved.
    Any suggestions would be appreciated. Thanks, John

    Hi John,
    You've raised a good scenario.
    First of all let me say that the purpose of the DB polling transaction, is to have an option to initiate a process from a DB table/view and not to update multiple fields in a table (or have other complex manipulation on the table).
    So, when choose to update a field in a record, after reading it, you are "telling" the engine not to poll this record again. Sure, i guess you can find a solution/workaround for it, but I don't think this is the way....
    The question now is what to do?
    You can have another DB adapter where you can update the data after finishing the process. In that case, after reading the data (on polling transaction) - update the header.status = 'processed' for example, and after processing the selected data update the rest of the fields.
    Hope it make some sense to you.
    Arik

Maybe you are looking for

  • Ask toolbar wont let me open new tabs, got it from Java even when I unchecked it.

    You need to check out when an update from Java. It ask to to install Ask. I unchecked it and it still installed. Then wreaks havoc to Firefox.

  • Connecting printer to a new SSID

    I have an Acer Chromebook.   I cannot find how to get my printer to connect to my new SSID.  There is no HP softeware/driver for the Chromebook.  So I can't get my Chromebook to connect with my printer because my printer is offline.  Any suggestions?

  • Mysql python snow leopard, won't compile

    I am trying to crack open python for web development. step one ... get some db connectivity going. MySQL, Postgres (i don't really care) i have both installed and working within another php project. when trying to build and install the MySQL driver (

  • CRUD Ruby on Rails Oracle database

    A Create-Read-Update-Delete application may be developed with Ruby on Rails and Oracle database. http://www.regdeveloper.co.uk/2006/07/03/ruby_rails_part1/ http://www.regdeveloper.co.uk/2006/07/17/ruby_rails_part2/

  • Classpath and Servlets

    Hello, I created a Servlet which uses an "import" statement to import a servlet which is extended. The program that is being imported is in a directory that is not the "standard" directory where I would place all of the compiled "classes" - it is act