Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

RFC dialog processes

Former Member

WHile connecting to RFC using nco connector from .NET it is creating dialogue process. so we have 25 parallel program to run from SAP dashboard which calls 25 times .NET api and creates connection with SAP system. while calling RFC it is creating 25 dialogue user in SAP system which creates bottleneck in SAP and causing performance issue. is there a way I can call RFC from .NET using nco connector without creating a dialogue user in SAP? please provide some solution on this else we are not able to move our code to other environment.

35 REPLIES 35

Sandra_Rossi
Active Contributor

The right term to use is "occupying a dialog workprocess", not "creating a dialogue user".

Sandra_Rossi
Active Contributor
0 Kudos

Why can't you just limit the number of calls at the same time, by your program?

Did you analyze why there is a "bottleneck" issue? (that's weird, for only 25 calls... or did I not understand?)

Otherwise, ask the system administrator if he/she can do something about your issue.

PS: You are just experiencing the DoS attacks, but you do them from the inside 🙂

0 Kudos

HI Sandra,

i have checked with my admin team and i found they set the dialogue process count as 19. SO they mentioned BODS use background worker process so we have to use BODS as this is approved by SAP. So is there a way i can call RFC from .NET without creating dialogue process. They mentioned we can't use NCO Connector to call RFC's as it creates dialogue process also RFC's are not meant for bulk data transaction.

0 Kudos

No. RFC is always processed by a dialog workprocess (whatever it is synchronous, asynchronous, etc.) HTTP/SOAP work the same.

Your admins are right, RFC is not for mass processing. But we still don't know what your issue is. Could you describe the "bottleneck" in détails, and why it is an issue? (25 quick RFCs should be fine, but are they quick?)

Mass processing should be scheduled as a background job (in background workprocesses). Dialog workprocesses should be reserved to user activity or to user-like activity (quick actions and processing).

0 Kudos

Yea I got your point so here the challange for me we have 25 different SAP jobs scheduled in SAP dashboard in different times. Now each SAP job calls .NET Api internally. .NET API internally calls SAP RFC to read huge data from SAP and post the data to some other database. to connect SAP RFC from .NET we use nco connector and while doing that it creates dialogue process. So now what Admins are thinking because we have 25 jobs scheduled from SAP in time diff of 10 mins also users will login to the SAP system frequently. So our admins are thinking if some job take lots of time to process huge data so SAP will block the dialogue process for certain time and as we have 25 jobs running so there may be sometime where all it may create more than 25 dialogue process as we are using nco connector to call RFC. which may cause performance issue or bottleneck in SAP system. so there is no other option from .NET without create dialogue process i can all RFC.

0 Kudos

Hi Sandra,

thank you for the information. Can I consume SAP web Service from .NET? Does it create dialogue process? What I am planning is i will write select query in my RFC and the RFC i will call inside the web service. This SAP web service i will consume from the .NET application rather than calling SAP RFC directly from .NET as it creates dialogue process.

0 Kudos

Hi. RFC is done via dialog workprocess because it's intended for short operations. It's the same for web services.

Big processing should be done via background workprocesses. The admins didn't tell you?

0 Kudos

Hi Sandra,

i found in one article that Communication User type is specifically for External RFC Calls. So if i use the same user type to call RFC or Web Service still it will create dialogue process.

https://help.sap.com/saphelp_nw70ehp2/helpdata/en/3d/3272396ace5534e10000000a11405a/frameset.htm

this is the link

0 Kudos

For RFC and HTTP, it's always a dialog workprocess. Whatever user type you choose.

0 Kudos

You are correct i have tested and found any user type is creating dialogue process if i call RFC externally. I find the documentation is quite misleading here they mentioned Communication user type is meant for dialogue free external RFC call but still it creates dialogue process. I am not SAP person just reading the docs and trying to implement.

0 Kudos

No problem. Feel free to ask. My only surprise is that the admins didn't suggest you a workaround.

Yea they asked us to use BODS as it is doing direct database connection instead of RFC. as per our company policy they never expose their DB to external system or ETL tool. that is why we tried to consume RFC from .NET but i think we need to use BODS only as it can connect to direct table in SAP. but thank you for the clarification.

matt
Active Contributor
0 Kudos

What's misleading you is the term "dialogue" process. You think it means a user being logged in - which in fairness at one time it probably did. However really it's just a way of balancing load between online processing and batch processing, in order to get the best performance from the system. Many systems switch the number of types of processes overnight to accomodate batch jobs.

0 Kudos

I am not SAP person i am trying to do integration SAP and .NET. So i am using Nco connector to call RFC from .NET but as per the our Admins if we can RFC from external system it will create dialogue process and we have near about 25 .NET API scheduled. What they are thinking is if these 25 interfaces triggered in same time then it will create 25 dialogue process and also we have lots of user who can login to SAP system so it may cause ending up with lots of dialogue process and which creates bottleneck/performance issue in SAP system. That is why they are sugeesting not to call RFC from .NET better use BODS and directly read the data from SAP tables.

matt
Active Contributor

I've fixed the subject. Sundaram Das, please make the effort to use the correct terminology. Precision and accuracy are important in development.

horst_keller
Product and Topic Expert
Product and Topic Expert

0 Kudos

HI Horst,

i have checked with my admin team and i found they set the dialogue process count as 19. SO they mentioned BODS use background worker process so we have to use BODS as this is approved by SAP. So is there a way i can call RFC from .NET without creating dialogue process. They mentioned we can't use NCO Connector to call RFC's as it creates dialogue process also RFC's are not meant for bulk data transaction.

Former Member
0 Kudos

Hey Matthew, I am not a SAP guy so don't know about any terminology just hearing from my colleagues while integrating SAP data transaction with .NET Application and try to replicating the same words here. I am sorry if i create any confusion here.

vinita_kasliwal
Active Contributor
0 Kudos

Hi Sundaram

When using .NET you are using RFC? did you try with SOAp as well does it work the same way

To understand your integration better you are trying to call the SAP systems 25 times and each time you need a different user ? Can you not use the same user when calling the system.

I am not so sure why you need so many users. When a RFC call is done from the external system it can be called multiple times with the same user do you have an issue doing that ? Read this link here; https://help.sap.com/saphelp_sm71_sp11/helpdata/en/c2/5d2ac570228941bc60c0e66580b18a/frameset.htm

Did you try the Asynchronous Methods as mentioned here; https://help.sap.com/saphelp_sm71_sp11/helpdata/en/d9/15cd02ea537a47ac150de532cc1a79/frameset.htm

Pl advise more details and review the links to check if its helpful

Regards

Vinita

0 Kudos

Hi Vinita,

i find your answer more relevant. I am using the same user to call different RFC function of on each call. Is it possible to create different dialog process for same user on 25 times call. so i have 25 different .net apis and i scheduled these 25 .net apis from sap dash board everyday 2 times. so every day 25 times my .net api will trigger and it will create connection between the sap system and .net. Along with that in SAP system manually lots of user can login so our admin team is thinking if 25 times .net api calls then it will create dialogue process and also if at a a time 30 user login to sap system so it will also create dialogue process it can create bottleneck in the sap system. could you please suggest what will be the best option in that scenario.

0 Kudos

One more doubt if i call 25 time sap system from .net with same user will it create 25 dialogue process or only one dialogue process as i am using the same user to call RFC from .NET.

0 Kudos

hI Sundaram

As far as I know all RFC users are treated as System users and not Dialog users ?

I dont think it would create dialog processes with a system user but better for you to check after you change the user type. Check this link

https://help.sap.com/saphelp_nw70ehp2/helpdata/en/3d/3272396ace5534e10000000a11405a/frameset.htm

Let me know if it helps!

Regards

Vinita

0 Kudos

Thank you Vinita for your help let me show this to my admins and test.

0 Kudos

I have tested using Communication type user but still in SAP it is creating dialogue process. i find the documentation is quite misleading here they mentioned Communication user type is meant for dialogue free external RFC call but still it creates dialogue process.

0 Kudos

As far as I know all RFC users are treated as System users and not Dialog users ?

Nope. While it makes sense to do that, it in the end down to local policies.

0 Kudos

find the documentation is quite misleading here they mentioned Communication user type is meant for dialogue free external RFC call but still it creates dialogue process.

Not really, you are simply reading into it a meaning that isn't there. All it means a comms user type is not for logging in.

pokrakam
Active Contributor
0 Kudos

I think you need to look beyond just RFC and BODS. The scenario you describe is a piece of cake. Right now I'm sitting on a development system with 80 dialog processes available. I've worked on systems processing 1000's of RFCs per second.

Firstly, an RFC call should be short and simple. Otherwise look at asynchronous designs, batching whatever you're doing into one call, or maybe it's a bottleneck in your code.

It seems strange to me that SAP calls something external that does an RFC call back to the same system, something smells fishy and it has nothing to do with RFC.

Former Member
0 Kudos

Hi Mike,

Let me explain you the arch. we have SAP system and external system now in external system we don't have access to push data directly from SAP. So what we thought we will introduce .NET API and that API will get the data from RFC and through API it will push the data to external system. so we have like 25 APIs in place whcih does the same. so when we can RFC from .NET API it creates dialogue process. So our admins are thinking if 25 API's get triggered at same time then it will create 25 dialogue process and there are lots of users who can login to the same SAP system which can exceed the dialogue process limit set by the admin team (19) due to this it will create performance issue or bottleneck in SAP system. the RFC's are simple which read the data from SAP table and send to .NET API but the data volume is huge like 50K.

matt
Active Contributor
0 Kudos

Then Mike is right. This is fishy. Normally an external application having effectively direct access to SAP tables is a no-no. For a start, it completely ignores any authorisation concept. Potentially everyone has access to everything - unless you replicate the SAP security in the .net application.

btw - you've explained your scenario several times. No need to do it again.

pokrakam
Active Contributor
0 Kudos

Please look into one of the many interface mechanisms available. If fetching data is all that's needed, this should be a simple webservice call, no need to faff about with APIs and RFCs.

Former Member
0 Kudos

Does qRFC create dialogue process? actually we have checked with MuelSoft technical person and i read this is the only SAP certified ESB they mentioned if we call QRFC from Muel it will not create dialogue process. but some where in google i read all RFC call create dialogue process. Am I missing any point here or what Muel technical person is telling it is wrong.

pokrakam
Active Contributor

I think you should get an expert in. Seriously.

Not a third party software expert who should by the sounds of it stick to what he knows, but someone with the SAP technical know how. This is not something that should be solved over the internet, so please look either within your company or else get an outside consultant in for a day or two. It will be cheaper in the long run.

matt
Active Contributor
0 Kudos

As I understand this question, there's a .net app that has 25 possible calls into SAP. Each interface does something difference. The admin team are worried that if all 25 are called at once, there will be a performance issue.

Frankly, unless each process is doing a huge amount of work, it's unlikely to cause a performance hit at all. 25 users logging on at once? There are systems without thousands of dialog processes which have thousands of users logged in at a time.

Former Member
0 Kudos

Does qRFC create dialogue process? actually we have checked with MuelSoft technical person and i read this is the only SAP certified ESB they mentioned if we call QRFC from Muel it will not create dialogue process. but some where in google i read all RFC call create dialogue process. Am I missing any point here or what Muel technical person is telling it is wrong.

Sandra_Rossi
Active Contributor
0 Kudos

Please give the references to what you mention.

All kind of RFC execute ABAP in dialog workprocesses.