Skip to Content
0

SMQ1 QRFC issue

Aug 14, 2017 at 11:34 AM

102

avatar image
Former Member

Hi All, There are few RFC that we called from one of the system for eg:

1 call RFC in update task --> Standard RFC

2 call RFC in update task --> Standard RFC

3 call RFC in update task-->standard RFC (there is a commit work here)

4 call RFC in update task -- > Custom RFC

this all are lined up in QRFC(SMQ1) in sequence and are executing the same in sequence upto 3rd RFC where commit works. Now the issue is , once it trigger Commit it is executing in sequence upto 3rd RFC but 4RFC is also executing before 3rd RFC. what could be the possible reason for this even though all are set in sequence ?? Also i want 4th RFC to get Execute only after the 1st three has completed.

Thanks.

Rakesh

10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

4 Answers

Best Answer
avatar image
Former Member Aug 29, 2017 at 08:27 AM
0

Solve by myself

Share
10 |10000 characters needed characters left characters exceeded
Mike Pokraka Aug 14, 2017 at 01:17 PM
1

If you do a commit, the queue is complete and gets executed. From what you have explained, RFC4 will create a new LUW in a new queue, and if that runs faster it's well possible to complete before the other three. If you need to preserve the sequence they need to be in the same LUW.

Show 3 Share
10 |10000 characters needed characters left characters exceeded
Former Member

Hi Mike,

To make them in the same LUW, i have to call RFC4 before RFC3 . But my RFC4 is depedent on RFC 3 .

As RFC3 Create the open Item and RFC4 just clear that open item in case payment is received.

Thanks

Rakesh

0

No, you just need to make sure the commit happens after RFC4. The queue will then ensure they get executed in sequence.

0
Former Member

Yaah mike ,

But the problem here is RFC3 is called in a standard program/Class and it passes commit = 'X' inside the RFC. And if there is no commit in RFC3 then it wont create open item .which is required by RFC4.

Also, if RFC4 is in queue before RFC3, then RFC4 will not execute and throw the error as RFC4 looks for the open item created by RFC 3.

Thanks,

Rakesh

0
Mike Pokraka Aug 15, 2017 at 07:52 PM
0

OK, I have not explained all the possibilities here, it can get a bit lengthy. The most likely scenario is the first one I explained. In more detail:

RFC1-3 go into LUW1, gets placed on queue. Commit. LUW gets processed by queue manager. RFC4 goes into LUW2. If there is any reason for delays beyond the queue (such as a V2 update or follow-on activities), then LUW2 can now overtake whatever process LUW1 is doing.

Most important question: are you using the same queue name?

Check the timing of your RFC calls. Try (for test purposes) to put a delay in your code before submitting RFC4. Are you sure the business transaction is really complete, not just from the RFC/LUW point of view?

Show 1 Share
10 |10000 characters needed characters left characters exceeded
Former Member

Hi Mike,

yes i lined up the RFC4 with the same queue name and it show in sequence in SMQ1 as well.

i did tried putting the wait statement before RFC4 call as commit trigger at RFC3. but output is not consistent.

Thanks

Rakesh

0
avatar image
Former Member Aug 18, 2017 at 09:27 AM
0

Hi All,

Any input on the above requirement ???

Thanks

Rakesh

Share
10 |10000 characters needed characters left characters exceeded