on 10-24-2014 9:39 AM
On our R/3 ECC6 production system ,we have one aRFC call by external system,there are 200000 times per day.
and the response time for the RFC call is 35ms ,Some times its response time(commit time) are much longer and up to 2 seconds.
There is very simple code for the RFC as shown below
......
insert ztable from table lt_internal_table.
commit work
call function 'function_name'
starting new task 'N'.
tables
it_tab = lt_internal_table.
Regards,
ShiChunQing
Dear Randorlf ,
Now i can determine that statement "commit work" have a high cost some times.
I write a simple report as show below,
One high cost will occurs per several minutes.
________________________________
report ztest.
...............
do 10 times.
............
GET RUN TIME FIELD t1.
INSERT ytest_table FROM TABLE lt_tab.
GET RUN TIME FIELD t2.
t1 = t2 - t1.
WRITE:/ 'insert:',t1,sy-uzeit.
COMMIT WORK.
GET RUN TIME FIELD t3.
t2 = t3 - t2.
WRITE: 'commit:',t2,sy-uzeit.
enddo.
_________________________________________
Run results:
_________________________________________________
insert: 879 16:23:02 commit: 1,713 16:23:02
insert: 1,607 16:23:05 commit: 4,434 16:23:05
insert: 1,265 16:23:08 commit: 3,790 16:23:08
insert: 648 16:23:11 commit: 1,195 16:23:11
insert: 659 16:23:14 commit: 390,208 16:23:15
insert: 640 16:23:18 commit: 1,032 16:23:18
__________________________________________________
Best regards
shichunqing
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi ShiChunQing,
Why do you complain about the bad response time - is somebody waiting on the return of the aRFC?
How many entries does LT_INTERNAL_TABLE have in a single call?
Is it possible to combine data of several calls to reduce the number of aRFCs and commits?
Are you sure that response time is determined by commit time?
Best regards, Randolf
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Shichunqing,
You should not call a RFC to insert and commit a single line. The additional costs for the RFC are higher than the costs of the insert. Also, RFC calls with little data cannot make use of data compression during transfer. Instead bundle many lines (~100) into one call and do one commit for them. Of course, error handling will become a little bit more complicated then, but you save resources like network and database.
Best Regards, Randolf
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.