on 12-07-2006 6:21 AM
Hi,
I have designed a PCR approval workflow and assigned BUS7051-CREATED as the starting event. The problem is this workflow is not getting triggered properly at times randomly. The event linkages are fine in SWETYPV and the binding also looks good as the whole approval process works fine whenever the workflow is triggered. I had switched on my Event trace and found that whenever my workflow fails to trigger i get the following message,
<b>Main Program : RSM13000
Action : Receiver started correctly
RFC Status : Exception condition "INT_SERVICE_REQUEST_NOT_FOUND</b>
What can be the problem???
We are at ECC5.0 with EP6.0.
Thanks,
Prasath N
Hi Prasath,
What I suspect is happeniong is a known issue with PCR/ISR forms that you can fix with a catcher workflow.
Because the notification is saved first and then the PCR/ISR form data, if there is a lot of form data or you have a system delay (more likely in production than development) then the BUS7051.CREATED event can be raised before the form data is actually saved. At this point therefore the event cannot determine which scenario is relevant to the form, and therefore which workflow to start.
There are a few ways to delay the event being raised but all of these use an arbitrary time delay in the hope that this is enough to capture the form.
An approach I usually use instead is to create a separate catcher workflow where a notification is created but scenario is empty. In this case the workflow adds a delay of a few minutes (5 should be enough) and then checks again and if the scenario is there raises the BUS7051.CREATED event again. If the scenario is not there by that time then clearly something has gone wrong with the saving of the form, and an email notification is sent to the form creator basically apologising for this and asking them to submit a new form.
Hope that helps.
Regards,
Jocelyn
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Jocelyn,
Thanks a lot. You have once again given me a wonderful solution. I think building a catcher workflow should definitely solve my issue.
This catcher workflow would be triggered by BUS7051-CREATED which would wait for 5 minutes and then trigger the correct workflow. But i think i cant use the same CREATED event to trigger the PCR Approval workflow as the catcher workflow will also be linked to the same event. Instead i might have to create a custom event through delegation and use that to trigger the workflows.
Hope my understanding is correct.
Thanks,
Prasath N
Hi Prasath,
Yes you can use the same event - just add a start condition in transaction SWB_COND to each event linkage. i.e. the normal workflow starts when BUS7051.scenario = XXXX and the catcher workflow starts when BUS7051.scenario = blank. You need to have an attribute e.g. scenario, that will return the scenario from the ISR form - make sure it returns blank and not an error if the form does not exist.
Regards,
Jocelyn
P.S. if you are looking for a temporary solution to at least reduce the incidence of the problem while you are putting together the catcher workflow then you mark your existing event linkage as using the event queue, and schedule the event queue job in transaction SWEQADM. This should at least slow it down a little - it might even be enough on its own.
Hi Jocelyn,
Below is the code that causes this exception,
-
Source Code Extract |
-
Line | SourceCde |
-
24 | CALL FUNCTION 'ISR_SPECIAL_DATA_BUFFER_GET' |
25 | IMPORTING |
26 | ET_SPECIAL_DATA = special_data |
27 | ED_SCENARIO = scenario |
28 | EXCEPTIONS |
29 | BUFFER_EMPTY = 1. |
30 | |
31 | IF sy-subrc eq 0. |
32 | EXIT. |
33 | ENDIF. |
34 | |
35 |
|
36 | SELECT SINGLE * FROM qmel INTO ls_notif |
37 | WHERE qmnum = notification_no. |
38 | IF sy-subrc NE 0. |
39 | RAISE invalid_notif_number. |
40 | ELSEIF ls_notif-auswirk IS INITIAL. |
41 | RAISE no_internal_service_request. |
42 | ENDIF. |
43 | |
44 |
|
45 | scenario = ls_notif-auswirk. |
46 | |
47 |
|
48 | CALL METHOD cl_isr_xml_document=>read_for_display |
49 | EXPORTING id_notif_no = notification_no |
50 | IMPORTING er_isr_xml_document = lr_isr_document |
51 | EXCEPTIONS bds_error = 1. |
52 | |
53 | IF sy-subrc NE 0. |
>>>>> | RAISE int_service_request_not_found. |
55 | ENDIF. |
56 | |
57 |
|
58 | CALL METHOD lr_isr_document->get_data_from_xml |
59 | IMPORTING general_data = lt_dummy |
60 | special_data = special_data. |
61 | |
62 |
|
63 | |
64 | ENDFUNCTION. |
-
As you said the code tries to read the XML document and raises this event whenever failed.
For using the start conditions I think i am stuck at this. I am unable to set the start conditions in SWB_COND. Whenever i run the transaction SWB_COND and choose the business object event BUS7051-CREATED i get the exception INVALID_NOTIF_NUMBER. Below thread gives details on this.
Because of this I am unable to assign any start conditions for this business object event. I have raised this issue with SAP as well.
So, for the time being i will try using SWEQADM.
Thanks,
Prasath N
Try enabling BUS7051-FORAPPROVAL also. May be both collectively will capture all the PCRs...
Ram
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
you could check the system log, SM21, there maybe you can find out what is causing this.
Kind regards, Rob dielemans
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
91 | |
10 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.