Call RFC function module
Hi all,
i try to call a remote enabled function module via rfc from erp to apo.
CALL FUNCTION 'Z_XXXXXXXXXXXX
DESTINATION XXXXX
EXPORTING
wa_truid = it_tab_pre-trguid
IMPORTING
status = wa_status.
In debugging the parameter it_tab_pre-trguid is filled correctly (in ERP).
But in APO the field is empty.
Any ideas?
regards
Hi!
Calling an FM with RFC means, you just simply run it on their system with giving some parameters to it.
It will use the remote database to select data.
Log into the APO system and run the FM there, with the same parameters, and you'll see, what's wrong.
Regards
Tamá
Similar Messages
-
Error when call RFC Function module in R/3
Dear All,
We are trying to call RFC function module CBIF_GLM1_PROCESS_ORDER_READ (This is not a BAPI and also not released ) in R/3 from XI system.
we are facing the error "Error while lookup Exception during processing the payload. Error when calling an adapter by using the communication channel CC_PPPI_MES_RFC_Rcvr (Party: , Service: WCD_320, Object ID: 16563889b449328eac76caa6a3bc592e) XI AF API call failed. Module exception: 'error while processing the request to rfc-client: com.sap.aii.adapter.rfc.afcommunication.RfcAFWException: error while processing message to remote system:com.sap.aii.adapter.rfc.core.client.RfcClientException: failed to parse BAPI response due to: com.sap.aii.adapter.rfc.util.bapi.BapiException: Parameter with name RETURN not found.'. Cause Exception: 'com.sap.aii.adapter.rfc.afcommunication.RfcAFWException: error while processing message to remote system:com.sap.aii.adapter.rfc.core.client.RfcClientException: failed to parse BAPI response due to: com.sap.aii.adapter.rfc.util.bapi.BapiException: Parameter with name RETURN not found.'."
This is the first time we are doing this configuration.
Could you please let me know what woulbe the reason.read the original message
We are trying to call RFC function module CBIF_GLM1_PROCESS_ORDER_READ (This is not a BAPI and also not released ) in R/3 from XI system.
I am talking about the above Receiver RFC channel which you guys are using to call R/3 from XI. That where you need to change the commit parameter -
Standard Component in CRM that will call RFC Function Module
HI all,
Is there any Standard Component in CRM that will call RFC Function Module from ECC and that called RFC FM should Fetch the data from ECC.You can call RFC from different places, like programs, function modules, web dynpros, classes...
So you just have to have appropriate RFC on ERP side and call it from CRM side. To call it you use the following statement...
CALL FUNCTION 'YOUR RFC FUNCTION'
DESTINATION i_dest "name of server
EXPORTING
your export parameters
IMPORTING
your import parameters
Regards. -
Call RFC Function Module and return 1000 records at a time
I would like to call a Remote Enabled Function Module from a non SAP system. This function module will select data from the database and return it to the calling program.
Suppose there are 100,000 records that need to be returned, but the calling module would like the data in chunks of 1000 records. Therefore the calling program would call the FM 100 times.
How do I code the function module to know on each subsequent call to grab the next chunk of 1000 records?
Let me know if additional information is needed.
Thanks,
AaronHello,
Here is how you can go for this issue:
1. Create one RFC function module with following parameter. These parameters are with respective of chunking logic.
Import: Package Size
Export: Total number of records
Changing: chunk count
Implement following logic:
1. First of you need to know how many chunks you need to fetch for that get the count of total number of records. This is one
time activity so you better maintain one flag import parameter will be set to 'X' only first call.
2. Get the number of chunk using total number of records / chunk size for e.g. 1000 / 100 so chunk count = 10.
3. Define internal chunk counter in function module which will be used to locate the correct chunk depending on the chunk
counter value sent from calling program.
4. Send first call with package size 100 and chunk count = 1, execute select statement and increment internal
chunk count check if chunk count = internal chunk count in current case chunk count = 1 so exit select statement and return
with first chunk.
5. Send second call with package size 100 and chunk count = 2. Execute select statement and check chunk count with internal
chunk counter, in current case it will be 1 so skip that data and go for next chunk of 100 records increment internal chunk
counter. In this case it will match with external chunk count = 2. load output table with that data and return to calling program.
6. Repeat step 4 until you reach last chunk.
You need to use SELECT...ENDSELECT with PACKAGE SIZE addition so for every loop it will return number of records mentioned in package size.
Hope this helps.
Thanks,
Augustin. -
Calling RFC Function module from JAVA
Hi All,
We have created a RFC Function Module for Billing Plan tab in Sales order (BDC). The function Module contains BDC. When we are running the same function module in SAP it is working fine. But when the FM is called in Java , it is allowing only maximum of 5 entries , when we trying to insert at 6th position in billing plan tab, we are getting an error.
Can any one help on this.
Points will be rewarded for helpful answers.
Thanks & Regards,
Kiran II think the problem is because of the number of lines displayed on the screen in the BDC session in the Billing Plan.
You might have to add the page down logic to your BDC program. -
Call RFC Function Module in R/3 via XI during Mapping
Hi,
I have an XI scenario where I have to fill the IDoc ADRMAS03 in XI and send it to R/3. Unfortunately the sender system does not provide the required address number (ADRNR) for the Business Partner, only the Business Partner number. Therefore I want to call a Function Module in R/3 during the mapping in order to get the ADRNR.
Does anybody know which RFC-Function Module I can call in R/3 4.6c providing the Busness Partner number in order to get the ADRNR?
Thanks.
AlexHi,
no need for RFC lookup it's better to do as he wants
(inside an exit in R3) - just my point of view
BTW
don't use a FM just find a table with both values
and create a select statement youself
Regards,
michal
<a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a> -
Calling RFC function module in other SAP system...
Hi,
I have a report on one SAP system and a function module on other system. The function module is RFC enabled. How can I call this RFC enabled function module from other SAP system in the report which is different SAP ?
system.
Thanks.
Regards,
Rajesh.call the function module in orginal system in se38 ,copy the function module ,paste the function module in other system,and maintain destination here ,otherwise you will get short dump.
here detination should be SM59 destination,this is case sensitive.
Reward Points if it is helpful
Thanks
Seshu -
Problem while calling RFC function module in java
Hi all
com.sap.mw.jco.JCO$Exception: (102) RFC_ERROR_COMMUNICATION: Connect to SAP gateway failed
Connect_PM GWHOST=<system.ab.ydydy.yyyd.com>, GWSERV=sapgw00, ASHOST=<system.ab.ydydy.yyyd.com>, SYSNR=00
LOCATION CPIC (TCP/IP) on local host
ERROR hostname '<system.ab.ydydy.yyyd.com>' unknown
TIME Mon Jun 06 14:50:25 2005
RELEASE 640
COMPONENT NI (network interface)
VERSION 37
RC -2
MODULE ninti.c
LINE 332
DETAIL NiPGetHostByName2: hostname '<system.ab.ydydy.yyyd.com>' not found
SYSTEM CALL gethostbyname_r
COUNTER 1
at com.sap.mw.jco.rfc.MiddlewareRFC$Client.nativeConnect(Native Method)
at com.sap.mw.jco.rfc.MiddlewareRFC$Client.connect(MiddlewareRFC.java:1098)
at com.sap.mw.jco.JCO$Client.connect(JCO.java:2983)
at MyProject.Bapi2.<init>(Bapi2.java:43)
at MyProject.Bapi2.main(Bapi2.java:231)
Pl help me
pradeepHi
This is my code....
Created on Jun 2, 2005
To change the template for this generated file go to
Window>Preferences>Java>Code Generation>Code and Comments
package MyProject;
@author pradeep
To change the template for this generated type comment go to
Window>Preferences>Java>Code Generation>Code and Comments
import com.sap.mw.jco.*;
public class Bapi2 extends Object {
JCO.Client mConnection;
JCO.Repository mRepository;
public Bapi2() {
try {
// Change the logon information to your own system/user
mConnection =
JCO.createClient("122", // SAP client
"<pradeep>", // userid
"*****", // password
"EN", // language
"<abc11.aa.abc23.company.com>", // application server host name
"<00>");//system no
mConnection.connect();
mRepository = new JCO.Repository("HLL", mConnection);
catch (Exception ex) {
ex.printStackTrace();
System.exit(1);
JCO.Function function = null;
JCO.Table codes = null;
try {
function = this.createFunction("BAPI_COMPANYCODE_GETLIST");
if (function == null) {
System.out.println("BAPI_COMPANYCODE_GETLIST" +
" not found in SAP.");
System.exit(1);
mConnection.execute(function);
JCO.Structure returnStructure =
function.getExportParameterList().getStructure("RETURN");
if (! (returnStructure.getString("TYPE").equals("") ||
returnStructure.getString("TYPE").equals("S")) ) {
System.out.println(returnStructure.getString("MESSAGE"));
System.exit(1);
codes =
function.getTableParameterList().getTable("COMPANYCODE_LIST");
codes.setRow(2);
codes.deleteRow();
codes.deleteRow(5);
codes.appendRow();
codes.setValue("XXXX", "COMP_CODE");
codes.setValue("Does not exist", "COMP_NAME");
codes.appendRows(2);
codes.setValue("YYYY", "COMP_CODE");
codes.setValue("Does not exist either", "COMP_NAME");
codes.nextRow();
codes.setValue("ZZZZ", "COMP_CODE");
codes.setValue("Nor does this", "COMP_NAME");
for (int i = 0; i < codes.getNumRows(); i++) {
codes.setRow(i);
System.out.println(codes.getString("COMP_CODE") + '\t' +
codes.getString("COMP_NAME"));
catch (Exception ex) {
ex.printStackTrace();
System.exit(1);
try {
codes.firstRow();
for (int i = 0; i < codes.getNumRows(); i++, codes.nextRow()) {
function = this.createFunction("BAPI_COMPANYCODE_GETDETAIL");
if (function == null) {
System.out.println("BAPI_COMPANYCODE_GETDETAIL" +
" not found in SAP.");
System.exit(1);
function.getImportParameterList().
setValue(codes.getString("COMP_CODE"), "COMPANYCODEID");
mConnection.execute(function);
JCO.Structure returnStructure =
function.getExportParameterList().getStructure("RETURN");
if (! (returnStructure.getString("TYPE").equals("") ||
returnStructure.getString("TYPE").equals("S") ||
returnStructure.getString("TYPE").equals("W")) ) {
System.out.println(returnStructure.getString("MESSAGE"));
JCO.Structure detail =
function.getExportParameterList().
getStructure("COMPANYCODE_DETAIL");
System.out.println(detail.getString("COMP_CODE") + '\t' +
detail.getString("COUNTRY") + '\t' +
detail.getString("CITY"));
catch (Exception ex) {
ex.printStackTrace();
System.exit(1);
mConnection.disconnect();
public JCO.Function createFunction(String name) throws Exception {
try {
IFunctionTemplate ft =
mRepository.getFunctionTemplate(name.toUpperCase());
if (ft == null)
return null;
return ft.getFunction();
catch (Exception ex) {
throw new Exception("Problem retrieving JCO.Function object.");
public static void main (String args[]) {
Bapi2 app = new Bapi2();
This is the error i'm getting...
com.sap.mw.jco.JCO$Exception: (102) RFC_ERROR_COMMUNICATION: Connect to SAP gateway failed
Connect_PM GWHOST=<abc11.aa.abc23.company.com>, GWSERV=sapgw00, ASHOST=<abc11.aa.abc23.company.com>, SYSNR=00
LOCATION CPIC (TCP/IP) on local host
ERROR hostname '<abc11.aa.abc23.company.com>' unknown
TIME Mon Jun 06 17:15:12 2005
RELEASE 640
COMPONENT NI (network interface)
VERSION 37
RC -2
MODULE ninti.c
LINE 332
DETAIL NiPGetHostByName2: hostname
'<abc11.aa.abc23.company.com>' not
at com.sap.mw.jco.rfc.MiddlewareRFC$Client.nativeConnect(Native Method)
at com.sap.mw.jco.rfc.MiddlewareRFC$Client.connect(MiddlewareRFC.java:1098)
at com.sap.mw.jco.JCO$Client.connect(JCO.java:2983)
at MyProject.Bapi2.<init>(Bapi2.java:45)
at MyProject.Bapi2.main(Bapi2.java:233)
Thx
PRadeep -
RFC function module with call transaction and Import memory ID
Hi,
I am calling RFC function module from R/3 which exists in BW.
In BW stand alone function module works fine.
When I am Calling from R/3 it is not working,
Can you tell me is it because of the below code, And suggest if any corrections required.
I am calling the call transaction and using EXPORT memory iD inside the program
and IMPORT in after that.
And populating RFC table's table " p_i_tcode_user" finally.
set parameter id 'TCD' field p_tcode.
call transaction 'Z_BW_RSUSR002' AND SKIP FIRST SCREEN.
ENDIF.
get the final user data from submitted program
import gt_users_complete from memory id tcode_userid.
LOOP AT gt_users_complete.
lwa_tcode_user-tcode = p_tcode.
lwa_tcode_user-uname = gt_users_complete-Bname.
APPEND lwa_tcode_user TO p_i_tcode_user.
ENDLOOP.
Thanks,
Veerendra.HI,
Can you just exaplin it clearly plz..
Thanks
Mahesh -
RFC Function module is not working in program while Background
Hi All,
we have a one program in BI system which is calling RFC function module. it is executing the program in foreground very well. Same program we have executed in background , it is not working at all. Thiis RFC function module exists in R/3 4.6c system.Hello Raju,
Transactional call of a remote-capable function module specified in func using the RFC interface. You can use the addition DESTINATION to specify an individual destination in dest. If the destination has not been specified, the destination NONE is used implicitly. Character-type data objects are expected for func and dest.
When the transactional call is made, the name of the called function, together with the destination and the actual parameters given in parameter list, are registered for the current SAP LUW in the database tables ARFCSSTATE and ARFCSDATA of the current SAP system under a unique transaction ID (abbreviated as TID, stored in a structure of type ARFCTID from the ABAP Dictionary, view using transaction SM58). Following this registration, the program making the call is continued by way of the statement CALL FUNCTION.
When executing the COMMIT WORK statement, the function modules registered for the current SAP LUW are started in the sequence in which they were registered. The statement ROLLBACK WORKdeletes all previous registrations of the current SAP LUW.
If the specified destination is not available for COMMIT WORK, an executable called RSARFCSE is started in the background. This attempts to start the functional modules registered for an SAP LUW in their destination, every 15 minutes up to a total of 30 times. You can make changes to these parameters using transaction SM59. If the destination does not become available within the given time, this is noted in the database table ARFCSDATA as a CPICERR entry. By default, this entry in database table ARFCSSTATE is deleted after 8 days.
Thanks and Regards,
SAP Shori -
Program making a RFC call to Function Module not working in background
Hi All,
I have an ABAP Program which is used to do a reconciliation check between the R/3 and BI system for Invoice Data. Please find below the details of the program flow:
1. Program counts the number of records in the DSO table and aggregates the Net_Value based on the date range (passed as parameters)
2. Program calls a Function Module (RFC Call) which counts the number of records in the R/3 table and aggregates the Net_Value for the same date range
3. Function Module Passes back the count values and aggregated Net_Value to the program
4. Program compares the count and aggregated Net_Value from EDWH and MSP systems and sends an email mentioning whether the counts match or not
However we are facing an issue.
Whenever, we execute the program in dialog mode, it works fine and fetches results within 5-6 minutes. However if we schedule the program to run in background (parameters through a variant), it gives no results even after running for over 3-4 hours. We tried figuring it out yesterday but could not come to any conclusion. Since there is a RFC call being to the function module, we were wondering if we need to specify some other parameter as well.
Thanks & Regards
DharmendraRFC Call is a procedure for executing remote enables function modules. It is done via the 'Remote Enabled' radio button on the function module's attribute screen.
-
ABAP Dump due to RFC Function module call in another thread
Hi,
I am facing some problem since yesterday. In one of my executable program I am calling a RFC fm as below mentioned
REPORT ZREPORT.
CALL FUNCTION 'Z_XXXXXXXXX'
STARTING NEW TASK L_NAME
DESTINATION IN GROUP 'TASK'
PERFORMING RETURN_INFO ON END OF TASK
EXPORTING
P_exp1 = l_emp
TABLES
R_VBELN = r_it_vbeln
EXCEPTIONS
NO_DATA_TO_PROCESS = 1
OTHERS = 2.
wait until v_task = 1.
update ztable.
Due to some data inconsistence one of the SAP function
module which I am calling in my function module Z_XXXXXXXXX
is generating dump with message type X. Since there is data inconsistence it is generating dump that's OK.
But the problem i am getting is, report ZREPORT is generating dump at WAIT statement saying illegal statement even though I am calling that function module
Z_XXXXXXXXX as a separate new task.
Can somebody help me.
Thanks,
Amara.hi, Amara
I agree with Rich said, and do a simulate test in my server, here is the analysis.
Assume we have a RFC, like this:
FUNCTION ZGZL_DUMPTEST.
*"*"Local interface:
*" EXPORTING
*" VALUE(OUT) TYPE I
*" EXCEPTIONS
*" CONVERT_FAIL
data:a type i.
a = 'A'.
ENDFUNCTION.
And call this RFC like you way:
REPORT ZGZL_DUMPTEST .
DATA:
SEMAPHORE(1) VALUE SPACE,
LC_OUT TYPE I.
CALL FUNCTION 'ZGZL_DUMPTEST'
STARTING NEW TASK 'DUMP'
PERFORMING RETURN_INFO ON END OF TASK.
WAIT UNTIL SEMAPHORE = 'X'.
WRITE: 'OVER'.
FORM RETURN_INFO USING TASKNAME.
RECEIVE RESULTS FROM FUNCTION 'ZGZL_DUMPTEST'
IMPORTING OUT = LC_OUT.
SEMAPHORE = 'X'.
ENDFORM. " RETURN_INFO
if we run the RFC in se37 directly, obviously it will occur a rumtime error CONVT_NO_NUMBER, and dump.
But if we run the above application to call the RFC, we will get a different runtime error CALL_FUNCTION_REMOTE_ERROR.
Error Analysis in ST22 like this:
An error occurred when executing a REMOTE FUNCTION CALL.
It was logged under the name "CONVT_NO_NUMBER"
on the called page.
I think that means the application receive the runtime error from RFC when call <b>RECEIVE RESULTS</b>.
In normal CALL FUNCTION, the external application will accept the rumetime error throw from FM, that's correct, because it let the caller can handle these runtime errors.
In you case, you said RFC run in a new task, yes, that's true, so you can call the RFC like this:
CALL FUNCTION 'ZGZL_DUMPTEST'
STARTING NEW TASK 'DUMP'
PERFORMING RETURN_INFO ON END OF TASK.
WAIT UNTIL SEMAPHORE = 'X'.
WRITE: 'OVER'.
FORM RETURN_INFO USING TASKNAME.
SEMAPHORE = 'X'.
ENDFORM. " RETURN_INFO
It will goes well, no dump. Why? because we don't use RECEIVE RESULT. RECEIVE RESULT will bring the result from FM, also bring the runtime error from FM.
So if you want to call the FM and receive the result, handle the runtime error in FM inside at first.
like this:
CATCH SYSTEM-EXCEPTIONS CONVT_NO_NUMBER = 1.
a = 'A'.
ENDCATCH.
IF SY-SUBRC = 1.
RAISE CONVERT_FAIL.
ENDIF.
And then you call FM like this:
CALL FUNCTION 'ZGZL_DUMPTEST'
STARTING NEW TASK 'DUMP'
PERFORMING RETURN_INFO ON END OF TASK.
WAIT UNTIL SEMAPHORE = 'X'.
WRITE: 'OVER'.
FORM RETURN_INFO USING TASKNAME.
RECEIVE RESULTS FROM FUNCTION 'ZGZL_DUMPTEST'
IMPORTING OUT = LC_OUT
EXCEPTIONS CONVERT_FAIL = 1.
SEMAPHORE = 'X'.
ENDFORM. " RETURN_INFO
That's will be ok for your scenario.
Hope my reply is useful.
thanks -
Is it possible to call custom designed RFC function module, apart from BAPI
Hi Friends,
1. Is it possible to call custom designed RFC function module, apart from BAPI.
2. Why we call it Adaptive RFC layer, Since every time the JCO layer updated with SAP, Why cant be dynamic.
Thanx for Ur time.
Cheers,
SamAlso check <a href="http://help.sap.com/saphelp_nw04/helpdata/en/41/38bc8f813719488ddc9d9b21251ec3/frameset.htm">here</a> for more information on aRFC. Here you can find why it is called adaptive.
Regards,
Christophe -
Problem while calling an RFC Function Module in Background
Hello,
I have created a RFC function module for reading data from an external DB system. The FM calls an external RFC program (coded in C++ using RFC SDK), which delivers the required data. This external program is maintainged as an TCP RFC Connection in SM59.
Further I have created a report, that calls the RFC function module to get the data from the external RFC programm.
My problem is, when I call the report in foreground, everything works OK, the RFC connection works and data can be read from the external program.
However, when I schedule the report to run in background as a job, the report is stating in the protocoll that there was a problem calling the defined RFC connection (although the connection is working properly at that time).
More funny is, this particular problem with running in background occurs only in the productive system, in test and development system the report works correctly also while running as a job in background.
Can you suggest the solution to this problem? Could it be something with authorisations or server settings?
I will be on holiday for the next 6 weeks, so take your time to answer .
Regards,
Dusan.
Edited by: Julius Bussche on Jan 22, 2009 7:19 PM
Please read the forum rules about u r g e n t ...This is an external RFC server program, not a remote enabled ABAP RFC function module as the others seem to be assuming, right?
Is it possible that your DEV and QAS systems only have one application server, but the PROD has many and dedicated one(s) for processing low priority background jobs?
It might be that the target server of your TCP connection is not this BTC instance, and your RFC server is returning the data "locally" - so, into nirvana...
Just guessing, but might be worth checking.
Cheers,
Julius -
Unknown error calling a RFC Function Module in BODI
Hi all,
I am having an issue identifying the error that my batch job in BODI is giving with regards to a RFC function module call in my query. The value returned by the standard parameter 'AL_RFC_RETCODE' are square characters ( ).
At the completion of the job, the error message 'RFC CallReceive error <Function ZCT_INDSLS_SLS_TRN_INSERT: Invalid request.. Invalid request.>.' is being output.
Correct me if I'm wrong but the parameter 'AL_RFC_RETCODE' should return standard values as per the techical manual provided to undertand any errors that might occur during a RFC FM call.
Can anyone help me on this?
Best regards,
Andrew WongHi Senthil,
I think you answered your query in your question itself
The user ID and password need to be maintained in RFC destination in SM59.
Go to SM59 and then click on test connection..if it does not ask for ID and passwoed that means correct ID and password is maintained in SM59 otherwise maintain it.
Regards,
Atish
Maybe you are looking for
-
Sharing files with other members of my family on the wireless network
I would like to share my files with other members of my family on the wireless network. Unfortunately, their pcs are MS Windows OS and connected in workgroup type while I am on Mac. I can access internet via the same wireless router but cannot see ot
-
Snapshots... How do they work precisely?
In RawShooter we have this one-click snapshot feature. We can make several of these on the fly, delete them, select between them in lightning speed, but lightning speed and easy interface does not surprise, its RawShooter after all, the best of the b
-
New hard drive in, not recognized when boot from DVD
Well, I installed my new Seagate ST3750640AS, 750 GB Baracuda and when I boot from the Tiger install DVD, there is no Hard Drive listed. What could have gone wrong. I have an early model G5 iMac.
-
Streaming video on Solaris 10?
Hi, Is there any good solution for streaming video with Solaris 10. I got a v245 server. I have no experience on this and appreciate any detailed reply. Thanks
-
Lastest Reply link not working?
In a thread with multiple pages, clicking on the "Latest Reply" link does not seem to take me to the lastest reply. It doesn't seem to do anything. Is it my set up? Or is it not yet functional. Using Chrome.