Plain call function versus destination 'none'
we have an RFC enabled function module which is being used as an rfc by external calls but is also used within the same sap system as a conventional function mdoule.
Currently the call in the same sap system uses a DESTINATION 'NONE' clause and I have noticed that in the SE30 Runtime analysis there is sometimes an expensive 'WAIT for RFC' against this function module call.
Can I simply remove the DESTINATION 'NONE' clause or is there a good reason for it being there?
Will a call without the clause always be more efficient than one with it or is there no difference?
Currently the call in the same sap system uses a DESTINATION 'NONE' clause and I have noticed that in the SE30 Runtime analysis there is sometimes an expensive 'WAIT for RFC' against this function module call.
I wish I had a running SAP system to quickly test this. Did you enable also profiling of RFC calls in SE30? Couldn't the trivial reason just be that the function module takes some time and since it's a synchronous calls the calling program has to wait for it to return?
Can I simply remove the DESTINATION 'NONE' clause or is there a good reason for it being there?
Well, I'd be really careful and first make sure that I understand why somebody put it there. Note that an RFC call is executed in it's own context (e.g. see comments in ABAP online documentation on [RFC destination|http://help.sap.com/abapdocu_70/en/ABENRFC_DESTINATION.htm]), so if that was the reason why the destination 'NONE' was introduced you probably shouldn't change it.
Also, a [synchronous RFC call|http://help.sap.com/abapdocu_70/en/ABAPCALL_FUNCTION_DESTINATION.htm] triggers an implicit database commit. In theory a program shouldn't rely on that, but I've seen my fair share of programs where developers were not aware of some side effects (and actually relied on them).
Or how about a funky setup where your RFC module actually has coding to call the original system back (i.e. usage of RFC destination 'BACK'); so removing the 'NONE' should cause trouble in this case as well...
There's probably lots of other possible traps once you start thinking about it. Most likely they are not relevant, but it definitely helps a lot if you can judge the skill set of the programmer who introduced this possibly unnecessary RFC call...
As far as performance is concerned I doubt that you'd gain much if it's a synchronous RFC (and the function module runs for some time and is not executed tons of times). Note though that RFC calls are limit to some stricter resource management (e.g. they can be controlled via quite a few profile parameters), so your RFC might timeout due to lack of resources, where your direct function call wouldn't do that. But if your RFC does some substantial work I doubt that the overhead for the RFC calls will be measurable.
Cheers, harald
Similar Messages
-
Call function..Destination
Hi Experts,
My requirement is to call a RFC Java function in SAP. The Java function is an encryption function which has 4 parameters (Password, Message, Strength128, Strength256). I need to pass the data for the parameters from SAP to JAVA. With the help of SDN, I tried to call this function in ABAP. A destination named 'INTEGRATION' is created in SM59, with the registered Program ID 'ASEncryptionHelper'. ASEncryptionHelper is the Java function name and the program ID is registered with this name only. The following is the code I wrote in my report
DATA: XPASS TYPE STRING.
XPASS = 'PASS'.
CALL FUNCTION 'ASENCRYPTIONHELPER' DESTINATION 'INTEGRATION'
EXPORTING
PASSWORD = XPASS
MESSAGE = XML_RESULT
STRENGTH128 = ' '
STRENGTH256 = 'X'
I have created a RFC function module in my SAP system with the name ASENCRYPTIONHELPER
FUNCTION ASENCRYPTIONHELPER.
""Local Interface:
*" IMPORTING
*" VALUE(PASSWORD) TYPE STRING
*" VALUE(MESSAGE) TYPE STRING
*" VALUE(STRENGTH128) TYPE BOOLEAN
*" VALUE(STRENGTH256) TYPE BOOLEAN
ENDFUNCTION.
When I execute the program I get a runtime error "Bean ASENCRYPTIONHELPER not found on host HOSTNAME".
I am not able tofigure out the exact problem.
Also I wanted to know whether the way I am coding is right. Do I need to create a RFC function module in SAP also as I did above?
Does the Uppercase of the function 'ASENCRYPTIONHELPER' matter? In SM59 the program id is mentioned as 'ASEncryptionHelper'.
I tried to change the function name with 'ASEncryptionHelper' in the CALL FUNCTION, but then I get another error, "JCO.Server could not find server function 'ASEncryptionHelper' '. What is wrong? I am confused.
Please guide.
Thanks
Anu.Hi,
I didn't get your requirement wxatly but you can do as below,
What I am assuming is you have a java batch file at your desktop and you want to encrypt the file through this batch file execution from SAP.
Now to execute the batch file at runtime and to pass data at runtime you can use below function module
W_RFCENCRY = 'C:\Encrypt\enc.exc C:\Encrypt\test.txt'.
W_RFCDEST = 'ZRFC'.
CALL FUNCTION 'RFC_REMOTE_PIPE'
DESTINATION W_RFCDEST
EXPORTING
COMMAND = W_RFCENCRY
EXCEPTIONS
COMMUNICATION_FAILURE = 1
SYSTEM_FAILURE = 2
OTHERS = 4.
Here ZRFC is the RFC created in SM59 as below
1) select TCP/IP and create ZRFC
in program option type as below C:\RfcSdk\bin\rfcexec.exe
Note: RFCDSK folder is required to execute the batch file at your workstation at path specified as above
2) In activation type select start on front end work station radio button.
Now save the RFC and check the connection, same will be there if RFC SDK folder is available as specified in the program option
In W_RFCENCRY give the inputs that you want to pass with the batch file.
here I have mentioned as 'C:\Encrypt\enc.exc C:\Encrypt\test.txt'. in the program where C:\Encrypt\enc.exc is the path for batch file and C:\Encrypt\test.txt is the path of the file on the work station which is to be encrypted.
Hope this will help you, I think at your end batch file can be different and inputs to be passed in the batch file can also be different. -
Remote call function and destination
Hi all @SAPforums,
I used to call remotely a custom function, in a report, from many backends:
CALL FUNCTION ZFOO destination mydest
where mydest is a string containing the name of an RFC destination.
My question is: is there a way, on the destination machine, to get the name/id of the "caller" ?
The question arises from this task: I have to use the caller ID in a WHERE clause of a SELECT statement I have to write in ZFOO. I can - of course - pass the caller ID by adding a new parameter to the function, but this would make necessary a change on the CALL FUNCTION in every backend (quite expensive task, in terms of time). So if it's possible, from the callee, to get the name of the caller, I could just modify the function leaving the calls in every backend as they are.
Thanks in advance>
Matteo Montalto wrote:
> Hello Wolfgang,
> sorry for the stupid question... what does "destination" stands for?
> Thanks for the help
Hi ,
they are two types of RFC calling is ther..
1......
CALL FUNCTION "function0module-name' DESTINATION "DEST"
--that means you are picking data from another r/3 sytem using detination from 'DEST'..
2....
CALL FUNCTION "function0module-name' IN BACKGROUND TASK DESTINATION "DEST"
--that means you are sending data to another r/3 sytem or any other sytem XI or and EDI
using detination from 'DEST'..
for 1 and 2..
--go to t-code SM59 and see the DEST what type of connection is and what system it is connected..
Regards,
Prabhudas -
Call Function using DESTINATION
Hi there!
Abapers, I'm needing some help here with RFCs.
My destinations (SM59):
ERP_100
ERP_120
ERP_130
PI_200
PI_300
I have to call a function in PI from ERP. I'm doing in this way:
CALL FUNCTION 'pi_function_module' DESTINATION 'PI_200' ...
It's working. But the destination can not be hard coded. With the program in ERP_100 (DEV) and ERP_120 (QAS) the destination is PI_200 (PI DEV) and with the program in ERP_130 (PRD) the destination is PI_300 (PI PRD).
How can I handle this?
Thanks in advance!
Best regards,
CharlesHi Charles,
Refer [this|Re: Deciding RFC destination dynamically; thread.
I quote the last post by Micky Oestreich - "This solely depends on the naming conventions you are using. Since the name of the RFC destination is arbitrary, there is 'no' way of determining the name of the destination."
So, your design approach could either be by building a customizing table where you maintain the destination values or use a 'CASE' statement in your code before calling the remote function module....something like:
DATA:
lv_own_system TYPE logsys,
lv_rfcdest TYPE rfcdest.
CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
IMPORTING
own_logical_system = lv_own_system
EXCEPTIONS
own_logical_system_not_defined = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CASE lv_own_system.
WHEN 'ERP_100' or 'ERP_120'.
lv_rfcdest = 'PI_200'.
WHEN 'ERP_130'.
lv_rfcdest = 'PI_300'.
WHEN OTHERS.
ENDCASE.
"Now call the remote function
CALL FUNCTION 'pi_function_module' DESTINATION lv_rfcdest ...
Hope this helps,
Cheers,
Sougata. -
Short Dump on BAPI_TRANSACTION_COMMIT with destination NONE
Hi All
I am using SAP-PM with Compatible Unit(CU) functionality in ECC6 environment.
After we release the CU design to Generate order we get SHORT DUMP.
Any help will be of great help.
I am pasting the details from the dump file here.
Please let me know.
Appretaite your help.
Thanks
Meghana
Runtime Errors CALL_FUNCTION_REMOTE_ERROR
Date and Time 27.08.2007 18:01:10
Short text
"The current application triggered a termination with a short dump."
What happened?
Error in the ABAP Application Program
The current ABAP program "/***/SAPLCUORDER_N" had to be terminated because it
has
come across a statement that unfortunately cannot be executed.
The error occurred during an RFC call to another system.
In the target system, a short dump has been written as well.
More detailed information on the error cause can be found there.
What can you do?
Note down which actions and inputs caused the error.
To process the problem further, contact you SAP system
administrator.
Using Transaction ST22 for ABAP Dump Analysis, you can look
at and manage termination messages, and you can also
keep them for a long time.
Error analysis
An error occurred when executing a REMOTE FUNCTION CALL.
It was logged under the name "MESSAGE_TYPE_X"
on the called page.
How to correct the error
Please refer to the notes described in the
short dump.
System environment
SAP-Release 700
Application server... "MB1ES1005"
Network address...... "10.191.97.206"
Operating system..... "Windows NT"
Release.............. "5.2"
Hardware type........ "2x Intel 801586"
Character length.... 16 Bits
Pointer length....... 32 Bits
Work process number.. 3
Shortdump setting.... "full"
Database server... "MB1ES1005"
Database type..... "ORACLE"
Database name..... "EC6"
Database user ID.. "SAPSR3"
Char.set.... "C"
SAP kernel....... 700
created (date)... "Jul 25 2007 00:57:05"
create on........ "NT 5.0 2195 Service Pack 4 x86 MS VC++ 13.10"
Database version. "OCI_10201_SHARE (10.2.0.1.0) "
Patch level. 121
Patch text.. " "
Database............. "ORACLE 9.2.0.., ORACLE 10.1.0.., ORACLE 10.2.0.."
SAP database version. 700
Operating system..... "Windows NT 5.0, Windows NT 5.1, Windows NT 5.2, Windows
NT 6.0"
Memory consumption
Roll.... 8176
EM...... 14633136
Heap.... 0
Page.... 131072
MM Used. 5005432
MM Free. 1263944
User and Transaction
Client.............. 200
User................ 10086330
Language key........ "E"
Transaction......... "/***/DESIGN "
Transactions ID..... "409954DC5D77F1C58E2D0013725D3B3B"
Program............. "/***/SAPLCUORDER_N"
Screen.............. "/***/SAPLCUORDER_N 2000"
Screen line......... 34
Information on where terminated
Termination occurred in the ABAP program "/***/SAPLCUORDER_N" - in
"SAVE_DESIGN".
The main program was "/***/SAPLCUORDER_N ".
In the source code you have the termination point in line 594
of the (Include) program "/***/LCUORDER_NF07".
Source Code Extract
Line
SourceCde
564
ENDIF .
565
ENDLOOP .
566
IF l_ret-type = 'E' OR
567
l_ret-type = 'A' .
568
CLEAR: save_okcode .
569
570
Show Messages
571
CALL FUNCTION '/***/N_LOG_ADD_MSG'
572
EXPORTING
573
i_log_type = 'G'
574
TABLES
575
t_ret = t_ret.
576
PERFORM log_order_create_show .
577
Show first Message
578
MESSAGE ID l_ret-id TYPE l_ret-type NUMBER l_ret-number
579
WITH
580
l_ret-message_v1 l_ret-message_v2
581
l_ret-message_v3 l_ret-message_v4.
582
CALL FUNCTION '/***/N_DESIGN_INIT' .
583
ELSE .
584
IF g_design_mode = con_mode_crea.
585
Need to update DMS documents with real design number
586
PERFORM document_prepare_002 USING con_desnum_tmp_1
587
lv_desnum.
588
ENDIF.
589
Commit design BAPI's
590
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .
591
592
IF save_okcode = con_order.
593
Commit order BAPI's
>>>>>
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
595
DESTINATION 'NONE'.
596
597
call of fct. RFC_CONNECTION_CLOSE is important to get a new
598
initial roll area with initial internal tables next time
599
CALL FUNCTION 'RFC_CONNECTION_CLOSE'
600
EXPORTING
601
destination = 'NONE'
602
EXCEPTIONS
603
destination_not_open = 1
604
OTHERS = 2.
605
ENDIF.
606
607
IF lv_desnum IS INITIAL .
608
lv_desnum = /***/cudesign-desnum .
609
ENDIF .
610
SET PARAMETER ID '/***/DESNUM' FIELD lv_desnum .
611
Changes saved
612
MESSAGE ID '/***/MSG' TYPE 'S' NUMBER '529' WITH lv_desnum .
613
ENDIF .
Contents of system fields
Name
Val.
SY-SUBRC
0
SY-INDEX
0
SY-TABIX
1
SY-DBCNT
1
SY-FDPOS
0
SY-LSIND
0
SY-PAGNO
0
SY-LINNO
1
SY-COLNO
1
SY-PFKEY
2000
SY-UCOMM
CU01
SY-TITLE
Change Design: 50000109
SY-MSGTY
X
SY-MSGID
00
SY-MSGNO
341
SY-MSGV1
MESSAGE_TYPE_X
SY-MSGV2
SY-MSGV3
SY-MSGV4
SY-MODNO
0
SY-DATUM
20070827
SY-UZEIT
180110
SY-XPROG
SAPMSSY1
SY-XFORM
XAB_READ
Active Calls/Events
No. Ty. Program Include Line
Name
4 FORM /***/SAPLCUORDER_N /***/LCUORDER_NF07 594
SAVE_DESIGN
3 FORM /***/SAPLCUORDER_N /***/LCUORDER_NF07 2616
CHECK_AND_SAVE_F07
2 FORM /***/SAPLCUORDER_N /***/LCUORDER_NF04 311
USER_COMMAND_D2000
1 MODULE (PAI) /***/SAPLCUORDER_N /***/LCUORDER_NI05 28
USER_COMMAND_2000
Chosen variables
Name
Val.
No. 4 Ty. FORM
Name SAVE_DESIGN
%_DUMMY$$
2222
0000
0000
0000
CL_GUI_RESOURCES=>COL_TEXTAREA
31
1000
F000
G_DESIGN_MODE
R
5
2
0
0
CON_MODE_CREA
I
4
9
0
0
GT_NODE_CUI
Table[initial]
SY-REPID
/***/SAPLCUORDER_N
2454254544545445542222222222222222222222
F35DF310C35F2452FE0000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
CON_DESNUM_TMP_1
TM00000001CY
543333333345
4D0000000139
000000000000
000000000000
LV_DESNUM
222222222222
000000000000
000000000000
000000000000
SAVE_OKCODE
CU01
4533222222222222222222222222222222222222222222222222222222222222222222
3501000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
CON_ORDER
CU01
4533222222222222222222222222222222222222222222222222222222222222222222
3501000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
SY-XPROG
SAPMSSY1
5454555322222222222222222222222222222222
310D339100000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
CON_DELETE
LVMS
4545222222222222222222222222222222222222222222222222222222222222222222
C6D3000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
No. 3 Ty. FORM
Name CHECK_AND_SAVE_F07
CL_GUI_ALV_GRID=>MC_MB_VIEW
&MB_VIEW
2445544522222222222222222222222222222222222222222222222222222222222222
6D2F695700000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
GT_OP
Table IT_303[2x1320]
PROGRAM=/***/SAPLCUORDER_NDATA=GT_OP
Table reference: 118
TABH+ 0(20) = 7039FC3C5824DB3C00000000760000002F010000
TABH+ 20(20) = 0200000028050000FFFFFFFF0400000030140000
TABH+ 40( 8) = 08000000C1308001
store = 0x7039FC3C
ext1 = 0x5824DB3C
shmId = 0 (0x00000000)
id = 118 (0x76000000)
label = 303 (0x2F010000)
fill = 2 (0x02000000)
leng = 1320 (0x28050000)
loop = -1 (0xFFFFFFFF)
xtyp = TYPE#000093
occu = 8 (0x08000000)
access = 1 (ItAccessStandard)
idxKind = 0 (ItIndexNone)
uniKind = 2 (ItUniqueNon)
keyKind = 1 (default)
cmpMode = 8 (cmpManyEq)
occu0 = 1
groupCntl = 0
rfc = 0
unShareable = 0
mightBeShared = 0
sharedWithShmTab = 0
isShmLockId = 0
gcKind = 0
isUsed = 1
isCtfyAble = 1
>>>>> Shareable Table Header Data <<<<<
tabi = 0x2010FC3C
pgHook = 0x00000000
idxPtr = 0x00000000
shmTabhSet = 0x00000000
id = 234 (0xEA000000)
refCount = 0 (0x00000000)
tstRefCount = 0 (0x00000000)
lineAdmin = 8 (0x08000000)
lineAlloc = 8 (0x08000000)
shmVersId = 0 (0x00000000)
shmRefCount = 1 (0x01000000)
>>>>> 1st level extension part <<<<<
regHook = 0x60B7153D
collHook = 0x00000000
ext2 = 0x1024DB3C
>>>>> 2nd level extension part <<<<<
tabhBack = 0xE00FFC3C
delta_head = 0000000000000000000000000000000000000000000000000000000000000000000000000000000
pb_func = 0x00000000
pb_handle = 0x00000000
G_BADI_PROGRAM
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
LOG_ERROR
2
0
0
0
CON_BUTT_DELETED
@11QDelete@
43355466676422222222222222222222222222222222
011C145C545000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
G_CU_EXIT_CU_EXPLODE
F0000000
F0000000
/***/CUDESIGN-OBJNR
CY00000000000000008835
4533333333333333333333
3900000000000000008835
0000000000000000000000
0000000000000000000000
CL_GUI_RESOURCES=>COL_TEXTAREA
31
1000
F000
G_SEC_COUNT
0
0000
0000
LV_UPD
X
5
8
0
0
%_SPACE
2
0
0
0
GS_ROW_NO
0.0.0.1.
0000
1000
0000
0000
SCREEN
/***/CUDESIGN-GLTRP
2454245445444244555222222222222222222222222222222222222222222222222222222222222222222222222222
F35DF3545397ED7C420000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
SY-MSGID
00
33222222222222222222
00000000000000000000
00000000000000000000
00000000000000000000
SWO_%CONTAINER
000000000
2222222222222222222222222222222233333333322222222222222222222222222222222222222222222222222222
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
SPACE
2
0
0
0
SY-MSGNO
341
333
341
000
000
/***/CVCUI-CUTYP
2
0
0
0
SY-MSGV1
MESSAGE_TYPE_X
44554445555455222222222222222222222222222222222222
D533175F4905F8000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
SY-MSGV2
22222222222222222222222222222222222222222222222222
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
SY-MSGV3
22222222222222222222222222222222222222222222222222
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
SY-MSGV4
22222222222222222222222222222222222222222222222222
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
No. 2 Ty. FORM
Name USER_COMMAND_D2000
/***/CVCUI
0.0.0.0.0.0.0.1. 000000
2220000000022222222222222222222222222222222222222222222222222222222222222222222222223333332222
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
SYST-REPID
/***/SAPLCUORDER_N
2454254544545445542222222222222222222222
F35DF310C35F2452FE0000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
CON_MODE_COPY
C
4
3
0
0
LT_BAPI_RETURN
Table IT_1778[2x1088]
PROGRAM=/***/SAPLCUORDER_NFORM=USER_COMMAND_D2000DATA=LT_BAPI_RETURN
Table reference: 310
TABH+ 0(20) = 8837083D407E1C3D0000000036010000F2060000
TABH+ 20(20) = 0200000040040000FFFFFFFF04000000F0170000
TABH+ 40( 8) = 08000000C1308101
store = 0x8837083D
ext1 = 0x407E1C3D
shmId = 0 (0x00000000)
id = 310 (0x36010000)
label = 1778 (0xF2060000)
fill = 2 (0x02000000)
leng = 1088 (0x40040000)
loop = -1 (0xFFFFFFFF)
xtyp = TYPE#000113
occu = 8 (0x08000000)
access = 1 (ItAccessStandard)
idxKind = 0 (ItIndexNone)
uniKind = 2 (ItUniqueNon)
keyKind = 1 (default)
cmpMode = 8 (cmpManyEq)
occu0 = 1
groupCntl = 0
rfc = 1
unShareable = 0
mightBeShared = 0
sharedWithShmTab = 0
isShmLockId = 0
gcKind = 0
isUsed = 1
isCtfyAble = 1
>>>>> Shareable Table Header Data <<<<<
tabi = 0x50C6073D
pgHook = 0x00000000
idxPtr = 0x00000000
shmTabhSet = 0x00000000
id = 1534 (0xFE050000)
refCount = 0 (0x00000000)
tstRefCount = 0 (0x00000000)
lineAdmin = 8 (0x08000000)
lineAlloc = 8 (0x08000000)
shmVersId = 0 (0x00000000)
shmRefCount = 1 (0x01000000)
>>>>> 1st level extension part <<<<<
regHook = 0x00000000
collHook = 0x00000000
ext2 = 0x6067033D
>>>>> 2nd level extension part <<<<<
tabhBack = 0xE82F063D
delta_head = 0000000000000000CF000000000000000400000020180000000000004D00430055004F000000000
pb_func = 0x00000000
pb_handle = 0x00000000
CON_MODE_ORDE
O
4
F
0
0
TGSBT
22222222222222222222222222222222222222
00000000000000000000000000000000000000
00000000000000000000000000000000000000
00000000000000000000000000000000000000
CL_GUI_RESOURCES=>COL_TEXTAREA
31
1000
F000
LS_NUMBERS-AUFNR_NEW
000001000677
333333333333
000001000677
000000000000
000000000000
T024I
200UT10100PG for Term & Comp
33355333335426672567622246672222222222222222
20054101000706F20452D0603FD00000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
LS_T399X
200UT10UM01 X INST 30UT01UT01
3335533543322222222222222222252222445522335533553322222222222222222222222222222222222222222222
20054105D01000000000000000000800009E3400305401540100000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
CON_VBKZ_U
U
5
5
0
0
/***/CU_ORDER_IO-DISP_FACTOR
2097152
0
0
LS_DESIGN
200########000050000109DDCY00000000000000008835PROFILE1 0001UT10UM0100220100MWH001
333D5FC807333333333333344453333333333333333333355444443223333553354333333333345433322222222222
200CDB1E02B00005000010944390000000000000000883502F69C5100000154105D0100220100D7800100000000000
000599F215300000000000000000000000000000000000000000000000000000000000000000000000000000000000
0004C91D3DB00000000000000000000000000000000000000000000000000000000000000000000000000000000000
/***/CUDESIGN
200########000050000109DDCY00000000000000008835PROFILE1 0001UT10UM0100220100MWH001
333D5FC807333333333333344453333333333333333333355444443223333553354333333333345433322222222222
200CDB1E02B00005000010944390000000000000000883502F69C5100000154105D0100220100D7800100000000000
000599F215300000000000000000000000000000000000000000000000000000000000000000000000000000000000
0004C91D3DB00000000000000000000000000000000000000000000000000000000000000000000000000000000000
G_DROP_COUNT
0
0000
0000
LS_DESIGN-DESNUM
000050000109
333333333333
000050000109
000000000000
000000000000
No. 1 Ty. MODULE (PAI)
Name USER_COMMAND_2000
GT_SELTAB_INIT
Table[initial]
Internal notes
The termination was triggered in function "RfcExtendedReceive"
of the SAP kernel, in line 422 of the module
"//bas/700_REL/src/krn/rfc/abrfcrcv.c#4".
The internal operation just processed is "FUNC".
Internal mode was started at 20070827180011.
Status of connection:
RFC state: " "
RFC error text: "RFC_ERROR_SYSTEM_FAILURE"
CPI-C error text: "The current application triggered a termination with a short
dump."
Active Calls in SAP Kernel
Lines of C Stack in Kernel (Structure Differs on Each Platform)
SAP (R) - R/3(TM) Callstack, Version 1.0
Copyright (C) SAP AG. All rights reserved.
Callstack without Exception:
App : disp+work.EXE (pid=26488)
When : 8/27/2007 18:1:10.942
Threads : 2
Computer Name : MB1ES1005
User Name : ec6adm
Number of Processors: 2
Processor Type: x86 Family 15 Model 4 Stepping 10
Windows Version : 5.2 Current Build: 3790
State Dump for Thread Id 5e10
eax=000f93c0 ebx=0000042c ecx=00003118 edx=00000000 esi=0000042c edi=00000000
eip=7c82ed54 esp=056d71f0 ebp=056d7260 iopl=0 nv up ei ng nz ac po cy
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00200297
function : KiFastSystemCallRet
7c82ed54 c3 ret
7c82ed55 8da42400000000 lea esp,[esp] ss:056d71f0=7c822124
7c82ed5c 8d642400 lea esp,[esp] ss:62bd5803=00000000
FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name
056d7260 77e6ba42 0000042c 0001d4c0 00000000 056d7298 ntdll!KiFastSystemCallRet
056d7274 0109504d 0000042c 0001d4c0 00000001 7c38b5c8 kernel32!WaitForSingleObject
056d7298 00582118 00582151 7c38b5c8 7c38b5c8 7c38b5c8 disp+work!NTDebugProcess (ntstcdbg.c (501))
056d729c 00582151 7c38b5c8 7c38b5c8 7c38b5c8 01e9b1b8 disp+work!NTStack (dptstack.c (1367))
056d72b8 00582185 7c38b5c8 00000000 008b7ec8 7c38b5c8 disp+work!CTrcStack2 (dptstack.c (352))
056d72c4 008b7ec8 7c38b5c8 00000000 005f0059 00330030 disp+work!CTrcStack (dptstack.c (182))
056d72e8 008bb39f 00711076 056d8018 056d7be8 00200020 disp+work!rabax_CStackSave [abrabax.c (7063)
056d7b90 009eca8b 020b9e4c 020b9e14 000001a6 5d88acf0 disp+work!ab_rabax (abrabax.c (1243))
056d7bcc 009ed19e 00000003 00711076 00000020 00000000 disp+work!rcv_message (abrfcrcv.c (422))
056d8068 009ed29d 00000003 00000000 00710c47 056d80c0 disp+work!RfcExtendedReceive [abrfcrcv.c (14
056d808c 00714873 00000003 00710c47 056d80c0 00711076 disp+work!ab_rfcreceive (abrfcrcv.c (59))
056d80e4 0071886b 2694a7c8 2694a7cc 2694a7cc 2694a7cc disp+work!jfunc_get (abfunc.c (5103))
056d89f4 007191d0 00000003 000000b4 00000000 05e8b7c0 disp+work!jfunc_nonstandard [abfunc.c (1655)
056dcfb0 006e3e2d 00000003 3ced8f90 00000000 056dd018 disp+work!ab_jfunc (abfunc.c (554))
056dd018 0081cb5e 00000000 3ced8f90 056dd164 3cedb514 disp+work!ab_extri (abextri.c (552))
056dd02c 00897dbd 00000000 3cedae46 005bf4cd 3ceda13c disp+work!ab_xevent (abrunt1.c (281))
056dd038 005bf4cd 3ceda13c 000000ea 3cedae46 00000000 disp+work!ab_dstep (abdynpro.c (492))
056dd164 005c25be 3ced8f90 3ced8f90 056dfc78 00000000 disp+work!dynpmcal (dymainstp.c (2398))
056dd178 005c1def 00000001 3ced8f90 00000003 056dfc78 disp+work!dynppai0 (dymainstp.c (1004))
056dd194 00595e69 3ced8f90 00000001 00000001 00000001 disp+work!dynprctl (dymainstp.c (360))
056dfcec 00490e06 00000004 0049d15f 00000004 01dadd00 disp+work!dynpen00 (dymain.c (1628))
056dfcf4 0049d15f 00000004 01dadd00 00000003 00000002 disp+work!Thdynpen00 (thxxhead.c (4773))
056dfee0 0049d6d6 00000001 00000000 00000000 00430000 disp+work!TskhLoop (thxxhead.c (4455))
056dff00 00421c36 00000000 00000000 7ffde000 056dff60 disp+work!ThStart (thxxhead.c (1173))
056dff14 00401080 00000003 05876980 00000001 00000000 disp+work!DpMain (dpxxdisp.c (1121))
056dff60 01242970 00000003 05876980 05877a10 01cce000 disp+work!nlsui_main (thxxanf.c (82))
056dffc0 77e523e5 00000000 00000000 7ffde000 8967f020 disp+work!wmainCRTStartup (crtexe.c (395))
056dfff0 00000000 0124282d 00000000 00905a4d 00000003 kernel32!IsProcessorFeaturePresent
State Dump for Thread Id 61fc
eax=00000000 ebx=00000103 ecx=0587a700 edx=02714360 esi=00000000 edi=00000000
eip=7c82ed54 esp=0799fec0 ebp=0799ff04 iopl=0 nv up ei pl zr na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
function : KiFastSystemCallRet
7c82ed54 c3 ret
7c82ed55 8da42400000000 lea esp,[esp] ss:0799fec0=7c821514
7c82ed5c 8d642400 lea esp,[esp] ss:64e9e4d3=00000000
FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name
0799ff04 0119030a 000006e0 00000000 00000000 0587a798 ntdll!KiFastSystemCallRet
0799ff84 7c349565 00000000 00000000 00000000 0587a700 disp+work!SigIMsgFunc (signt.c (610))
0799ffb8 77e6608b 0587a700 00000000 00000000 0587a700 MSVCR71!endthreadex
0799ffec 00000000 7c3494f6 0587a700 00000000 00000000 kernel32!GetModuleFileNameA
List of ABAP programs affected
Index
Typ
Program
Group
Date
Time
Size
Lang.
0
Prg
/***/SAPLCUORDER_N
0
10.08.2007
10:12:44
541696
E
1
Typ
/***/CUDESIGN
0
10.08.2007
10:05:19
7168
2
Typ
/***/CU_ORDER_IO
0
10.08.2007
09:53:38
4096
3
Typ
/***/DESTYPE
0
10.08.2007
10:05:21
2048
4
Typ
/***/PRF_ORD
0
10.08.2007
10:05:21
4096
5
Prg
SAPMSSYD
0
04.04.2007
10:28:36
21504
E
6
Prg
SAPFSYSCALLS
0
09.09.2004
14:18:32
8192
E
7
Typ
/***/G_CUST
0
10.08.2007
09:53:39
3072
8
Prg
/***/SAPLTABLES
8
10.08.2007
10:13:00
19456
E
9
Typ
/***/G_CHAR
0
10.08.2007
10:05:21
3072
10
Prg
SAPLCTCE
10
09.09.2004
14:18:34
9216
E
11
Typ
CABN
0
18.09.2001
10:02:26
12288
12
Prg
SAPLICON
12
04.04.2007
10:10:28
27648
E
13
Prg
%_CICON
12
07.02.2006
10:40:00
104448
E
14
Typ
ICONT
0
04.04.2007
10:10:08
2048
15
Typ
NRIV
0
02.04.1998
08:14:54
3072
16
Prg
SAPLBSVA
16
04.04.2007
14:47:00
296960
E
17
Typ
/***/CU_ORDER_S_OP_N
0
10.08.2007
09:53:39
14336
18
Prg
CL_GUI_CONTROL================CP
18
28.02.2005
21:03:09
112640
E
19
Prg
%_CCNTL
18
18.02.2005
14:15:08
15360
E
20
Typ
OBJ_RECORD
0
14.02.1998
08:30:43
2048
21
Prg
CL_GUI_OBJECT=================CP
21
05.07.2005
13:10:15
375808
E
22
Prg
CL_GUI_CFW====================CP
22
28.02.2005
21:03:09
172032
E
23
Prg
CL_GUI_PROPS_CONSUMER=========CP
23
18.02.2005
14:15:08
30720
E
24
Prg
SAPLTHFB
24
04.04.2007
13:24:38
390144
E
25
Typ
EUDB
0
06.11.2003
20:28:08
8192
26
Prg
SAPLSFES
26
08.08.2007
16:46:17
259072
E
27
Prg
SAPLSPLUGIN
27
09.09.2004
14:18:36
8192
E
28
Prg
SAPLSTTMYes even i find it strange. But there is no syntax error and the fact is that it was working 2 days back. Suddenly it has started giving us this dump.
The code is as follows.
Commit design BAPI's
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .
IF save_okcode = con_order.
Commit order BAPI's
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
DESTINATION 'NONE'.
Here con_order is CU01.
Please let me know if anybody has faced this problem earlier.
Thanks in Advance
Meghana -
RFC Destination None Error for MIGO
Hi,
I am getting RFC Destinatnation NONE error while posting Goods Receipt. GTS service for SD and MM is not active. Error showing for FM GRC01_COST_OBJECT_COST.
Can any one help in this regard.
Thanks in advance.
SP RajHi,
Pl find the details below of the error.
Short text
RFC destination "NONE" does not exist.
What happened?
Error in the ABAP Application Program
The current ABAP program "SAPLCK36" had to be terminated because it has
come across a statement that unfortunately cannot be executed.
Error analysis
The 'destination' "NONE" for a Remote Function Call
is unknown.
You can display the RFC destinations available in the system using
the transaction SM59.
Trigger Location of Runtime Error
Program SAPLCK36
Include ISAUTO_CK_SAPLCK36============E
Row 812
Module type (FORM)
Module Name PRICE_STRATEGY_NEW
806 ************************************************************************
807 * DOERNER, GRC, 10/11/1999: Add one new strategy:
808 * 3b. Create costestimate during goods receipt
809 ************************************************************************
810 when 4.
811 if k_debug_loc is initial.
>>>>> call function 'GRC01_COST_OBJECT_COST' destination 'NONE'
813 exporting
814 im_vbeln = f_mtcom-vbeln
815 im_posnr = f_mtcom-posnr -
Call Function Destination in a background job
I am having a problem using:
CALL FUNCTION 'TABLE_ENTRIES_GET_VIA_RFC'
DESTINATION p_dest
in a background job.
I am working on a program that would compare the same table in 2 different systems and write the differences. It works when I run it in the foreground. However, I want to run this in a nightly background job. However, it is failing and I beleive that it is the result of the program needing a user to interactively logon to the remote system.
How can I bypass the logon screen or enter information into the logon screen using a background job?
Thanks.
JonHi Jonathan,
Would you like to reward some points to the poster to thank them as a part of SDN Contributor Recognition Program?
You can click on the yellow star on the right of each post header to reward points.
For more information:
https://www.sdn.sap.com/sdn/index.sdn?page=crp_help.htm
John. -
Call function destination XI exception
Hello,
in R3 i call to function in XI, it's follow:
call function 'XXX'
--destination 'XI'
--exporting
AA = aa
--importing
BB = bb
--exceptions
system_failure = 1
communication_failure = 2
other = 3
when this call produce a exception, why sometimes I can not see anything in XI - SXMB_MONI / runtime workbench -?
thank you very muchHI,
If in case the message failed at entry point i.e. RFC sender communication channel, then it would not be available in SXMB_MONI.
You may trace it from Communciation Channel Monitoring from RWB..
Thanks
Swarup -
Hi,
Call Function 'FM' starting new task task-name
Exporting
What does this statement does.Hi
chk this out
CALL FUNCTION STARTING NEW TASK
Variant 2
CALL FUNCTION func ...STARTING NEW TASK task name.
Extras:
1. ... DESTINATION dest
2. ... DESTINATION IN GROUP group name
3. ... DESTINATION IN GROUP DEFAULT
4. ... PERFORMING form ON END OF TASK
5. ... EXPORTING p1 = f1 ... pn = fn
6. ... TABLES p1 = itab1 ... pn = itabn
7. ... EXCEPTIONS syst_except = rc MESSAGE mess
Effect
Starts the function module func asynchronously in a new session. In contrast to normal function module calls, the calling program resumes processing as soon as the function module is started in the target system. It does not wait until the function module has finished. Using CALL SCREEN, the called function module can, for example, display a screen and thus interact with the user. Note that taskname must be a valid string of at least 2 characters, preferably fewer than 8 characters. You cannot use either ' ' or SPACE as tasknames.
Notes
Note that under certain circumstances, an RFC may cause a database commit. For this reason, do not insert an RFC between two OpenSQL statements that open and close a database cursor (such as SELECT...ENDSELECT).
This variant applies only from R/3 Release 3.0, so both the client system and the server system must have Release 3.0 at least.
With this variant, the called function module must also be flagged in the Function Builder as externally callable, even if it is executed locally (without the addition Destination).
There can be no function call to the destination 'BACK' in the called function module (for more information about the destination 'BACK', see CALL FUNCTION func DESTINATION dest).
This variant does not allow you to execute external programs that you access from a TCP/IP-type detination asynchronously. (See the Transaction Tools -> Administration, Administration -> Network -> RFC destinations for maintaining destinations).
Neither does this variant allow you to display images such as lists or screens in a separate window during RFC communication using a SAProuter.
From Release 4.0 onwards, you can carry out a new, stricter system load check on RFC destinations. (In RFC destination maintenance of an R/3 connection, choose Destination -> ARFC-Optionen). Before the function module is executed, the system checks that the destination has sufficient resources available. If not, the system delays execution of the function module for a given period of time. The algorithm used to determine the system load on the target machine is the same as that used for an asynchronous RFC with the DESTINATION IN GROUP addition. Note that this option is only available for target systems from Release 3.1H onwards. This procedure is active as default.
In principle, parallel processing makes sense whenever application servers have the necessary resources. In this case, the application servers must be configured with at least 3 dialog work processes.
A program that is run in the background and uses RFC parallel processing requires at least 1 dialog work process per application server (because parallel processing takes place in a dialog work process).
If the instance profile parameter 'auth/rfc_authority_check' is set to 1, the system automatically performs an RFC authorization check. The authorization check refers to the relevant function group for the function module to be called. If no authorization is found, a runtime error occurs. You can check the authorization in advance with the function module AUTHORITY_CHECK_RFC. If the RFC communication takes places in one system and in the same user context (that is, the same client and User ID) the system does not perform an RFC authority check. For more information, see: RFC Authorization Concept.
When you are using asynchronous RFC to implement parallel windows, all these windows are closed if the caller session is the only session and terminates.
Note that asynchronous tasks that have been started are not necessarily closed when the calling program ends.
See also RFC Logons to the Target System (Remote Logon).
Addition 1
... DESTINATION dest
Effect
Executes the function module externally as a Remote Function Call (RFC); dest can be a literal or a variable. The R/3 System where the function module is executed depends on the specified destination. Externally callable function modules must be flagged as such in the Function Builder (of the target system).
Note
If the destination is not explicitly specified, the system uses the default destination 'NONE'.
Note
If, during a Remote Function Call, an error occurs in the target system, details of the error message are passed back to the calling system in the following system fields: SY-MSGNO, SY-MSGID, SY-MSGTY, SY-MSGV1, SY-MSGV2, SY-MSGV3, and SY-MSGV4. These fields are initialized before every RFC. If a short dump or a type X message occurs, the short text of the dump is transferred to the caller, and the contents of SY-MSGID, SY-MSGTY, SY-MSGNO, and SY-MSGV1 assigned by the system.
In RFC-enabled function modules, no ABAP statements are allowed that would end the RFC connection (for example, either LEAVE or SUBMIT without the AND RETURN addition).
Note
Note that a database commit occurs at each Remote Function Call (RFC). Consequently, you cannot use Remote Function Calls between pairs of statements that open and close a database cursor (such as SELECT ... ENDSELECT).
Addition 2
... DESTINATION IN GROUP group name
Addition 3
... DESTINATION IN GROUP DEFAULT
Effect
You use this addition to perform parallel execution of function modules (asynchronous calls) on a predefined group of R/3 System application servers.
You use addition 2 (DESTINATION IN GROUP group name) to perform parallel execution of function modules on a predefined group of application servers. To maintain the RFC groups, choose Tools -> Administration -> Administration ->Network -> RFC destinations -> RFC -> RFC groups. The application programmer is responsible for the availability of RFC groups in the production system. In this case the group name variable must be of the type RZLLITAB-CLASSNAME
You use addition 3 (DESTINATION IN GROUP DEFAULT) to perform parallel execution of function modules (asynchronous calls) on all currently available R/3 System application servers. However, instead of this variant, you are recommended to use an RFC group with appropriate resources for parallel processing of asynchronous calls (at least for performance reasons). Please note that the addition DESTINATION IN GROUP ' ' has the same effect as the addition DESTINATION IN GROUP DEFAULT.
When you first call a function module with these additions, the system initializes the specified RFC group (unless the group has already been explicitly identified).
To obtain current information about resources (that is, the resources available to process function modules), you can also initialize the RFC group explicitly in the program using the function module SPBT_INITIALIZE. You must perform this action before the first function module call.
In both cases, the system first ascertains the currently available resources (work processes) on the available application servers (either a group of servers or all servers). By checking the current system load of each application server, the system determines how many work processes are available to execute asynchronous calls.
After ascertaining the available resources, the asynchronous call is executed to one of the
destinations. If no resources are available at that particular time, the system executes the
exception routine RESOURCE_FAILURE (see the addition EXCEPTIONS). In the case of
an asynchronous function module call, this exception must be handled by the application
program (see example).
No resources are made available by the system if resource availability limits are exceeded:
Notes
To be taken into consideration for RFC parallel processing, an application server must have at least 3 free dialog processes.
The system triggers the exception RESOURCE_FAILURE only for asynchronous RFCs with the additions DESTINATION IN GROUP group name and DESTINATION IN GROUP DEFAULT.
At present, only one RFC group per program environment is supported for parallel execution of asynchronous calls. Using both the additions DESTINATION IN GROUP group name and DESTINATION IN GROUP DEFAULT in a program is thus not allowed.
To find out which destination was automatically selected, call the function module SPBT_GET_PP_DESTINATION immediately after the function module call with the two additions. This returns the selected RFC destination.
If you want to delete an application server from the list of the configured RFC group at runtime (for example, when the application server is not accessible for technical reasons), use the function module SPBT_DO_NOT_USE_SERVER.
Addition 4
... PERFORMING form ON END OF TASK
While the parameters for receiving results (that is IMPORTING and TABLES parameters) are specified directly as additions in the case of "conventional" function modules (see variant 2), these are logged in the FORM routine form when making an asynchronous call (see RECEIVE).
Notes
If a function module returns no result, and you are not interested in error messages that arise when executing the function module, this addition (... PERFORMING form ON END OF TASK) can be omitted.
If you want to handle the error messages that arise when executing the asynchronous function module call, you must use this addition. Also, when receiving the results in the FORM routine (see RECEIVE), you must react accordingly to the system exceptions SYSTEM_FAILURE and COMMUNICATION_FAILURE.
With asynchronous RFC, the task name uniquely identifies the asynchronous connection and thus the context called.
If several asynchronous function modules are executed consecutively to the same destination, you must assign a different task name to each.
A calling program that starts an asynchronous RFC with the PERFORMING form ON END OF TASK addition cannot switch roll areas or change to an internal mode. This is because the asynchronous function module call reply cannot be passed on to the relevant program. You can perform a roll area switch with SUBMIT or CALL TRANSACTION.
If a calling program makes asynchronous calls, finishes, and then expects responses, it cannot receive these responses.
To wait for the reply to a started asynchronous function module, use the WAIT command with the addition PERFORMING form ON END OF TASK. Here, WAIT must be in the same program context (mode).
Note that executing asynchronous calls is subject to a roll area change.That is, subroutines performed to receive asynchronous calls can take place while other asynchronous calls are being made. Thus as a developer you must ensure that subroutines can be executed at any time. You must not make assumptions about the implicit processing sequence.
Addition 5
... EXPORTING p1 = f1 ... pn = fn
Effect
Passes values of fields and field strings from the calling program to the function module. In the function module, the formal parameters are defined as import parameters.
Addition 6
... TABLES p1 = itab1 ... pn = itabn
Effect
Passes references to internal tables.
Addition 7
... EXCEPTIONS syst_except = rc MESSAGE mess
Effect
While any exceptions arising in the called function module are handled by the second
addition (see the FORM subroutine RETURN_INFO), this addition can handle two special
system exceptions, (as with function module calls with the DESTINATION addition):
SYSTEM_FAILURE
is triggered, if a system crash occurs on the receiving side.
COMMUNICATION_FAILURE
is triggered if there is a connection or communication problem.
In both cases, you can get a description of the error with the optional ... MESSAGE messaddition
Note
In principle, you should always react to these two system exceptions, whether you are making an asynchronous function module call or receiving results.
Examples
Calling a transaction in a seperate session.
DATA: MSG_TEXT(80) TYPE C. "Message text
Asynchronous call to Transaction SM59 -->
Create a new session
CALL FUNCTION 'ABAP4_CALL_TRANSACTION' STARTING NEW TASK 'TEST'
DESTINATION 'NONE'
EXPORTING
TCODE = 'SM59'
EXCEPTIONS
COMMUNICATION_FAILURE = 1 MESSAGE MSG_TEXT
SYSTEM_FAILURE = 2 MESSAGE MSG_TEXT.
IF SY-SUBRC NE 0.
WRITE: MSG_TEXT.
ELSE.
WRITE: 'O.K.'.
ENDIF.
Using RFC groups to parallelize function module calls(RFC parallel processing)
TYPES: BEGIN OF TASKLIST_TYPE,
TASKNAME(4) TYPE C, "Verwaltung der Tasks
RFCDEST LIKE RFCSI-RFCDEST,
END OF TASKLIST_TYPE.
DATA: INFO LIKE RFCSI, C, "Message text
JOBS TYPE I VALUE 10, "Number of parallel jobs
SND_JOBS TYPE I VALUE 1, "Sent jobs
RCV_JOBS TYPE I VALUE 1, "Received replies
EXCP_FLAG(1) TYPE C, "Number of RESOURCE_FAILUREs
TASKNAME(4) TYPE N VALUE '0001', "Task name administration
TASKLIST TYPE TABLE OF TASKLIST_TYPE,
WA_TASKLIST TYPE TASKLIST_TYPE.
DO.
CALL FUNCTION 'RFC_SYSTEM_INFO'
STARTING NEW TASK TASKNAME DESTINATION IN GROUP DEFAULT
PERFORMING RETURN_INFO ON END OF TASK
EXCEPTIONS
COMMUNICATION_FAILURE = 1
SYSTEM_FAILURE = 2
RESOURCE_FAILURE = 3.
CASE SY-SUBRC.
WHEN 0.
Administration of asynchronous tasks
WA_TASKLIST-TASKNAME = TASKNAME.
CLEAR WA_TASKLIST-RFCDEST.
APPEND WA_TASKLIST TO TASKLIST.
WRITE: / 'Started Task: ', WA_TASKLIST-TASKNAME COLOR 2.
TASKNAME = TASKNAME + 1.
SND_JOBS = SND_JOBS + 1.
JOBS = JOBS - 1. "Number of existing jobs
IF JOBS = 0.
EXIT. "Job processing finished
ENDIF.
WHEN 1 OR 2.
Handling of communication and system failure
WHEN 3. "No resources available at present
Receive reply to asynchronous RFC calls
IF EXCP_FLAG = SPACE.
EXCP_FLAG = 'X'.
First attempt for RESOURCE_FAILURE handling
WAIT UNTIL RCV_JOBS >= SND_JOBS UP TO '0.01' SECONDS.
ELSE.
Second attempt for RESOURCE_FAILURE handling
WAIT UNTIL RCV_JOBS >= SND_JOBS UP TO '0.1' SECONDS.
ENDIF.
IF SY-SUBRC = 0.
CLEAR EXCP_FLAG. "Reset flag
ELSE. "No replies
"Endless loop handling
ENDIF.
ENDCASE.
ENDDO.
Receive remaining asynchronous replies
WAIT UNTIL RCV_JOBS >= SND_JOBS.
LOOP AT TASKLIST INTO WA_TASKLIST.
WRITE:/ 'Received Task:', WA_TASKLIST-TASKNAME COLOR 1,
30 'Destination: ', WA_TASKLIST-RFCDEST COLOR 1.
ENDLOOP.
FORM RETURN_INFO USING TASKNAME.
RECEIVE RESULTS FROM FUNCTION 'RFC_SYSTEM_INFO'
IMPORTING RFCSI_EXPORT = INFO
EXCEPTIONS
COMMUNICATION_FAILURE = 1
SYSTEM_FAILURE = 2.
RCV_JOBS = RCV_JOBS + 1. "Receiving data
IF SY-SUBRC NE 0.
Handling communication and system failure
ELSE.
READ TABLE TASKLIST WITH KEY TASKNAME = TASKNAME
INTO WA_TASKLIST.
IF SY-SUBRC = 0. "Daten registrieren
WA_TASKLIST-RFCDEST = INFO-RFCDEST.
MODIFY TASKLIST INDEX SY-TABIX FROM WA_TASKLIST.
ENDIF.
ENDIF.
ENDFORM.
plz reward if useful -
Calling Function Modules from BSP
Hi,
Can we call Remote Function Modules from a BSP page? If yes, can they be called from both Layout and Events and what's the proper way of calling them?
Any help will be great.HI Aurang
Calling RFC is similar to calling any other Function Module..Only thing is you need to provide the DESTINATION name of RFC Destination..
And you can call it from Event like OnInputprocessing...
inside your BSP Page..
For Example
CALL FUNCTION 'ZFI_FUNC_IM_DISPLAY_ASSE_CA_AS' DESTINATION 'Provide the RFC Destination here'
EXPORTING
I_PRCAT = 'CA'
I_DOCNO = VAR_DOCNO
IMPORTING
E_ASSE_HDR = WA_HDR
E_TEXT = VAR_STATUS
TABLES
T_ASSE_LIT = T_T900.
If you are calling from same server..Write destination as NONE
Cheers:)
Mithlesh -
Computer name in R3 when call function RFC from CRM to R3
Hi all,
i nead the computer name in R3 when I come to R3 from CRM .
In R3 i call function 'TERMINAL_ID_GET' in R3 but I don't retrieve the computer name.
i tried also to call function 'TERMINAL_ID_GET' in destination 'CRM' but I don't retrieve the computer name.
The code in R3:
CALL FUNCTION 'TERMINAL_ID_GET' DESTINATION 'R3GETCRM'
EXPORTING
username = sy-uname
IMPORTING
terminal = l_terminal_usr41
EXCEPTIONS
multiple_terminal_id = 1
no_terminal_found = 2
OTHERS = 3.
This function works ok when i call her direct from R3 or direct from CRM,
but not give me in R3 the computer name when i came to R3 From CRM.
Thanks for your cooperation.
danythats because 'TERMINAL_ID_GET' is not a RFC (check the attributes tab of the FM from SE37)
if you dont find a RFC to do t his you can wrap this FM with a custom RFC and use it.
if you want all the logged on users info (computer name and other info) then you can use THUSRINFO FM which a RFC
Raja -
CALL FUNCTION 'RFC_REMOTE_PIPE' throwing exception as 1
Hi Sapients,
I am using CALL FUNCTION 'RFC_REMOTE_PIPE' to rename a file at the UNIX level..Though this runs well... sometimes this is giving an exception as ''1'' (System Failure).. if we execute the same after 3 or 4 hours this RFC is again successfully executed...Can anyone throw some light on why this is happening and how we can avoid the same.
CALL FUNCTION 'RFC_REMOTE_PIPE'
DESTINATION 'SERVER_EXEC'
EXPORTING
COMMAND = l_command
READ = c_yes
EXCEPTIONS
system_failure = 1
communication_failure = 2
OTHERS = 3.
where the l_command is mv old_file_name New_file_name
and C_yes is XHi,
Maybe my answer comes too late.
Could be helpful for others anyway.
We got the same trouble and it was due to the RFCEXEC.SEC file.
Installing the SDK7.20 the RFCEXEC files were missing and old RFCEXEC.SEC was not in the same format...
Please look also to OSS notes #1592501 and #1581595
Thanks
//Philippe. -
CALL FUNCTION 'RFC_REMOTE_PIPE' throwin exception ''1''
Hi Sapients,
I am using CALL FUNCTION 'RFC_REMOTE_PIPE' to rename a file at the UNIX level..Though this runs well... sometimes this is giving an exception as ''1'' (System Failure).. if we execute the same after 3 or 4 hours this RFC is again successfully executed...Can anyone throw some light on why this is happening and how we can avoid the same.
CALL FUNCTION 'RFC_REMOTE_PIPE'
DESTINATION 'SERVER_EXEC'
EXPORTING
COMMAND = l_command
READ = c_yes
EXCEPTIONS
system_failure = 1
communication_failure = 2
OTHERS = 3.
where the l_command is mv old_file_name New_file_name
and C_yes is X
<promise removed by moderator>
Edited by: Thomas Zloch on Mar 16, 2011 1:00 PMHi,
Maybe my answer comes too late.
Could be helpful for others anyway.
We got the same trouble and it was due to the RFCEXEC.SEC file.
Installing the SDK7.20 the RFCEXEC files were missing and old RFCEXEC.SEC was not in the same format...
Please look also to OSS notes #1592501 and #1581595
Thanks
//Philippe. -
CALL FUNCTION WITH STARTING NEW TASK
Hi All,
i'm call a function module through
CALL FUNCTION 'Y_WIN' DESTINATION 'rfc_destination' then it's give right result but when i want to call with starting new task then
CALL FUNCTION 'Y_WIN' STARTING NEW TASK 'INFO' DESTINATION 'rfc_destination'
it does nt provide me any data. i have check in debugger call fm is wkging fine so pls clear me why i'm nt geeting result.
pls give ur suggestions,
AnujDid you use the PERFORMING <form> ON END OF TASK to get the results back; like in the following sample
CALL FUNCTION 'SAPWL_STATREC_READ_FILE'
STARTING NEW TASK taskname
DESTINATION list-name
PERFORMING read_outtab ON END OF TASK
EXPORTING
read_start_date = s_date
read_start_time = '000000'
read_end_date = s_date
read_end_time = '235959'
EXCEPTIONS " failure when calling RFC
communication_failure = 1 MESSAGE msg_text
system_failure = 2 MESSAGE msg_text
RESOURCE_FAILURE = 3.
and
FORM read_outtab USING taskname.
* Receive results back
RECEIVE RESULTS FROM FUNCTION 'SAPWL_STATREC_READ_FILE'
TABLES
v2_normal_records = outtab
EXCEPTIONS " from the called FM
nodata = 1.
Regards -
Error BT616 when calling function module SXPG_COMMAND_EXECUTE in background
Hi All,
We use function module SXPG_COMMAND_EXECUTE with a custom command we defined in SM69 to move files in unix (mv command).
The function module call has worked fine for almost a year and recently we have been seeing an error (BT616) in our job lob (SM37) when the program is run in background. We have not been able to reproduce the error in foreground mode and it seems to be occuring only periodically in the background. (The appropriate SAP authorization objects where assigned to the batch job ID and the steps on the batch job.) We are in the process of setting up the trace flag and performing analysis on the trace log via ST11 to help identify the issue.
After perform analysis on SXPG_COMMAND_EXECUTE, the error is occurring when calling function module SAPXPG_END_XPG for exception 2, system failure, yet function module SAPXPG_END_XPG does not exist. I assume this is a program at the operating system level and is just a signature of the parameters to be passed to the operating system program.
Below is part of the SAP function module SXPG_COMMAND_EXECUTE that is failing.
* Now we have to wait for the termination of the external
* command if the caller wants us to.
IF TERMINATIONWAIT = 'X'.
CALL FUNCTION 'SAPXPG_END_XPG'
DESTINATION DESTINATION
IMPORTING EXITSTAT = STATUS
EXITCODE = EXITCODE
TABLES LOG = LOG
EXCEPTIONS COMMUNICATION_FAILURE = 1 MESSAGE MSG
SYSTEM_FAILURE = 2 MESSAGE MSG.
I performed a where used on function module SXPG_COMMAND_EXECUTE, and most of SAP programs call the function module with the parameter TERMINATIONWAIT = 'X', so I assume we should pass X as well.
Any ideas on what could be causing this issue?
Mike VondranI also remember I have this kind of issue, as I have some UNIX script at OS( UNIX) level . The problem was with the ID , as it dont have proper authorization at OS level ( UNIX ) . Please check this ID authorization. This could be the one of reasons if youre sure from SAP standpoint.
Hope thisll give you some guide line..
Thanks
Bye
Maybe you are looking for
-
"Invalid Cursor" Error in Form
Hi, I wrote a procedure that take a REF CURSOR as an IN OUT argument. This procedure does an "OPEN cursor FOR qry" with a dynamic query: OPEN l_cursor FOR 'SELECT A '|| 'FROM B '|| 'WHERE C = :l_var' USING myVar;After cal
-
Please reply it is production issue and urgent
In our demand planning implementation we are facing serious issue that the cvc are not there in the MPOS but they are visible in the planning books, we have created the these CVC manually and by mistake have not assigned the right charecter length fo
-
How to transfer free music on mp3 player into my PC
Hello: everybody I have a Creative zen touch mp3 player(20G), there 59 classical music in it. Those music are free to give consumer by Creative, but I am't satisfied with listening to them in mp3 player. I want to transfer them to my PC for appreciat
-
Cannot copy music from library to a new playlist?
Help. I backed up all my music from itunes. I then installed a new operating system. I put all the music back into itunes after re-installing itunes. Now when I take a song from my library and try to put it into a new playlist it will not copy it int
-
How to covert byte[] to String format
I'm trying to print the reultset into a text file, but I'm having a prb converting byte[] to String. Here is my Code PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("C:\\MyFile.txt"))); while (rs1.next()) { byte[] _id = rs