cancel
Showing results for 
Search instead for 
Did you mean: 

WF not triggering properly randomly on PCR submission

Former Member
0 Kudos

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

Accepted Solutions (0)

Answers (3)

Answers (3)

Jocelyn_Dart
Product and Topic Expert
Product and Topic Expert
0 Kudos

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

Former Member
0 Kudos

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

Jocelyn_Dart
Product and Topic Expert
Product and Topic Expert
0 Kudos

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.

Former Member
0 Kudos

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

  • check notification number

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

  • set scenario

45

scenario = ls_notif-auswirk.

46

47

  • read ISR XML document

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

  • read data from XML document

58

CALL METHOD lr_isr_document->get_data_from_xml

59

IMPORTING general_data = lt_dummy

60

special_data = special_data.

61

62

  • TODO: check general_data against ls_notif data

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

Jocelyn_Dart
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi Prasath,

Yes I think raising a message to SAP is the correct approach. That exception is a killer - I'm sure the code did not work that way in earlier releases because the start condition approach worked fine. Definitely push to get that code changed.

Regards,

Jocelyn

Former Member
0 Kudos

Oops!

Message was edited by:

Ravi Dixit

Former Member
0 Kudos

Hi Ravi,

The code is as given above in one of my previous post in this thread. But the problem is this particular error occured in the SAP code and not my custom code.

Thanks,

Prasath N

Former Member
0 Kudos

Try enabling BUS7051-FORAPPROVAL also. May be both collectively will capture all the PCRs...

Ram

former_member186746
Active Contributor
0 Kudos

Hi,

you could check the system log, SM21, there maybe you can find out what is causing this.

Kind regards, Rob dielemans