Unable to retrieve parameters from RFC Function Module
Hi All,
I have created a model for the RFC Enabled function module BAPI_BUPA_CENTRAL_GETDETAIL within my webdynpro program. I am passing parameters to the function module BAPI_BUPA_CENTRAL_GETDETAIL and I have validated that this is being passed correctly by displaying the passed value from the node of the input parameters.
Code used to pass input parameters -
IWDMessageManager manager = wdComponentAPI.getMessageManager();
try
wdContext.currentBapi_Bupa_Central_Getdetail_InputElement().modelObject().execute();
size = wdContext.nodeCentraldataperson().size();
wdComponentAPI.getMessageManager().reportSuccess(Integer.toString(size));
wdContext.nodeOutput().invalidate();
catch(WDDynamicRFCExecuteException e)
manager.reportException(e.getMessage(), false);
I also see that it returns 1 record by using the code below:
IWDMessageManager manager = wdComponentAPI.getMessageManager();
try
wdContext.currentBapi_Bupa_Central_Getdetail_InputElement().modelObject().execute();
size = wdContext.nodeCentraldataperson().size();
wdComponentAPI.getMessageManager().reportSuccess(Integer.toString(size));
wdContext.nodeOutput().invalidate();
catch(WDDynamicRFCExecuteException e)
manager.reportException(e.getMessage(), false);
But, when I try to retrieve the value returned it does not fetch that value -
Bapi_Bupa_Central_Getdetail_Output getdata = wdContext.nodeBapi_Bupa_Central_Getdetail_Input().nodeOutput().currentOutputElement().modelObject();
Bapibus1006_Central_Person[] getres = new Bapibus1006_Central_Person[size];
for(int i=0; i<size; i++){
wdComponentAPI.getMessageManager().reportSuccess(Integer.toString(i));
getres<i> = getdata.getCentraldataperson();
//String fullname = wdContext.nodeBapi_Bupa_Central_Getdetail_Input().nodeOutput().nodeCentraldataperson().getElementAt(i).getAttributeValue("Fullname").toString();
String fullname = getres<i>.getFullname();
fullname += Integer.toString(i);
wdContext.currentContextElement().setFullname(fullname);
wdComponentAPI.getMessageManager().reportSuccess("fullname:" + fullname);
It always returns 0 or null. Can someone please help me with this issue. The BAPI returns values in structure format and not internal table and hence I dont see the issue there as well.
What can be the problem?
Thanks for all your help in advance.
Best regards,
Divya
Nikhil / Srihari,
I changed my code and it now looks like - I am trying get the return value into the context fullname but i still cant get the value although the size of nodeCentraldataperson() is thrown as 1 and the input is being passed correctly as i have validated this in this line of code [wdContext.nodeBapi_Bupa_Central_Getdetail_Input().currentBapi_Bupa_Central_Getdetail_InputElement().getBusinesspartner();]
IWDMessageManager manager = wdComponentAPI.getMessageManager();
try
wdContext.currentBapi_Bupa_Central_Getdetail_InputElement().modelObject().execute();
size = wdContext.nodeCentraldataperson().size();
wdComponentAPI.getMessageManager().reportSuccess(Integer.toString(size));
wdContext.nodeCentraldataperson().invalidate();
catch(WDDynamicRFCExecuteException e)
manager.reportException(e.getMessage(), false);
for(int i=0; i <size; i++){
String name = "FullName: ";
wdContext.nodeBapi_Bupa_Central_Getdetail_Input().nodeOutput().nodeCentraldataperson().setLeadSelection(i);
name += wdContext.nodeBapi_Bupa_Central_Getdetail_Input().currentBapi_Bupa_Central_Getdetail_InputElement().getBusinesspartner();
name += wdContext.nodeBapi_Bupa_Central_Getdetail_Input().nodeOutput().nodeCentraldataperson().currentCentraldatapersonElement().getFullname();
wdContext.currentContextElement().setFullname(name);
Any idea what could be wrong?
Thanks,
Divya
Similar Messages
-
Help on Parameters in RFC Function Module
Hi,
I am creating a RFC function module. The requirement is:
In a report program, the user enters ABC and XYZ values on the selection screen. These 2 fields are select options so will have From-Value and To-Value. This report program will pass these values to my RFC FM and depending upon these values I have to read a DB table and pass the data back to the program.
My doubt is, how should I intake these select options value? i.e should I specify them in import tab or tables tab? What TYPE/LIKE should I use?
Please help me in this...
Rgds,
Nimma.Hi Anji,
What is 'WSELKUNNR'? Is it a user defined type?
I am doing as below in the IMPORT tab.
Parameter name/Type Spec/Associated Type
ABC/LIKE/
I am not sure what type I have to use here as the incoming values will be of type SELECT-OPTIONS. Is there any standard type to specify here? If not, what should I do?
Best Regards,
Nimma. -
How to take back the control from RFC function module to calling program
Hi,
In our system landscape, more than 200 child systems are connected to Solution manager(SMP). I have copied a RFC enabled function module into all the child systems and calling that FM from Sol Man in sychronous mode.
Here goes my code in SolMan.
LOOP AT it_dest INTO wa_dest.
CALL FUNCTION 'Z_GET_LOGIN_DETAILS' DESTINATION wa_dest-rfcdest
EXPORTING
date_fr = s_date-low
date_to = s_date-high
TABLES
tab_data = it_val
EXCEPTIONS
communication_failure = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc EQ 0.
* Updates zuserlogon
MODIFY zt_logon_det FROM TABLE it_val.
COMMIT WORK.
WRITE:/'RFC for Destination', wa_dest-rfcdest, 'succesfully updated.'.
ELSE.
WRITE:/'RFC for Destination', wa_dest-rfcdest, ' failed.'.
ENDIF.
ENDLOOP.
Few child systems are very slow & takes more than 20 minutes(Many of the times system hangs) to return the result. But I should not wait for so long. Even if the child system doesn't return any values in 5 minutes I shoud continue with other system ignoring the current one.
I tried calling the FM in asynchronous mode(STARTING NEW TASK) but no success because only 6 DIA processes possible but as I said I have more than 200 systems connected to SolMan.
Please help me resolving this problem.
Thanks,
PrathapIf there are only few child systems with bad response time, use asynchronous call using a CALL FUNCTION func STARTING NEW TASK task DESTINATION dest PERFORMING subr or CALLING meth ON END OF TASK. Count asynchronous calls still running/waiting (increment a counter when creating a task (not the one used for task id). In the form/method performed at end of a call decrement the counter. When counter is lower than a limit, 4-5 if 6 processes (*), perform an asynchronous call else perform a synchronous call or wait until the counter falls below the limit.
Regards,
Raymond
(*) Use SPBT_INITIALIZE at start of program to get actual number of free/available processes. -
Error while creating import parameters in RFC function module
Hi,
I am trying to create import parameter in RFC enabled function module and getting the following error "Reference parameters are not allowed with RFC". Am I doing something wrong.
Your earlier response is much appreciated
Regards
KasiThere is a "Pass by Value" checkbox, just check that and you wont get the error. The basic reason behind is since an RFC is called by a different system the parameters have to be sent as values than as references.
hith
Sunil Achyut -
Web Service from RFC function module
Hi all,
I'm searching for a way to create web services from RFC-enabled function modules. I know there is a wizard, but it's not suitable for my problem:
I have around 30 function modules (number raising in near future) I want to enable for web services, most of them share the same structures representing the underlying data model. When one structure is modified (i.e. a new sub-structure is added) I have to recreate all web services, which is quite uncomfortable.
In addition, using the wizard results in one wsdl-file for each web service operation, that leads to an administration overhead using this web services from a java frontend.
So I'm searching for a "bulk creation". I also know the wizard can be used for a function group, but I can't put all my RFC-enabled function module in one function group, that would lead to confusion in the package.
Does anyone know how web services are created programmaticaly? If I had a function module which creates the web services I could write a function module which creates all web services I need.
Thank you in anticipation!
FlorianI'm not sure I understand the 're-create' part...how are you re-creating the web service? if you modify the interface of a function-based web service, then you use the 'modify operations' functionality (context menu - right-click) to regenerate the web service interface; this works for a function group based web service as well and hits all of the methods at once. As for the java overhead on function group services, stating the obvious, maybe you just need to lower the number of functions in your groups. We use .Net-developed applications with multi-function webservices and don't have any overhead issues.
-
How to retrieve data from a function module and use it in sap script??
I have a report program, which calls a function module. This function module internally calls an include program. In this program, I have a variable which is to be used in the sap script. How can I send this variable to the sap script
Hi,
In your case, Include prog is part of FM, no need to treat it as an Entity.
Now, Your Answer -
In SCRIPT - IN Page Window -->
PERFORM GET_MVAT_TIN IN PROGRAM Z_SCRIPT_PERFORMS_ABAPDB3
USING &VBDKR-KUNRE&
CHANGING &STCD1&
CHANGING &STCD2&
ENDPERFORM
IF &STCD1& <> ' '
<B>MVAT Number :</> &STCD1&
ENDIF
Then go to SE38 --> Creat prog with type - Subroutine pool
In that Write FORM statement for this PERFORM.
FORM get_mvat_tin TABLES inttab STRUCTURE itcsy
outtab STRUCTURE itcsy.
DATA : v_kunre TYPE kna1-kunnr,
v_stcd1 TYPE kna1-stcd1,
v_stcd2 TYPE kna1-stcd2.
LOOP AT outtab.
CLEAR outtab-value.
MODIFY outtab.
ENDLOOP.
READ TABLE inttab INDEX 1.
v_kunre = inttab-value.
IF v_kunre CA sy-abcde.
ELSE.
UNPACK v_kunre TO v_kunre.
ENDIF.
" Here You can take your Funcion module ***************************
SELECT SINGLE stcd1 stcd2 FROM kna1 INTO (v_stcd1, v_stcd2)
WHERE kunnr = v_kunre.
IF sy-subrc = 0.
READ TABLE outtab INDEX 1.
WRITE v_stcd1 TO outtab-value.
MODIFY outtab INDEX 1.
READ TABLE outtab INDEX 2.
WRITE v_stcd2 TO outtab-value.
MODIFY outtab INDEX 2.
ENDIF.
ENDFORM. -
Procedure for Mapping two types of Idocs from RFC function Module
Hi
My Scenario is RFC -- XI -- IDOC
Here i have 2 custom Idocs
First IDOC for Creation
second is for Deletion/Changing
Based on the condition from RFC it should trigger either one of the IDOC above.
Please provide me the procedure to do in IR and ID..
Regards,
Yeswanth.YeswanthRaj:
I found your conflicted statements
The following statement you say you just have one receiver, to receive two IDOCs
But i have only one receiver where the 2 IDOcs needs to be send based on the condition..
The following statements showing that you have more than one receiver,
the condition editor for receiver determination usually used for multiple receivers based on XPATH or Context Object condition
It is mapped based on the condition that is given in Receiver Determination and i has two interface Determinations.
It seems that the first scenario is your situation.
If your answer is yes, and your source interface is just one,and target interface is two (two IDOC), then this should be typical
muti-mapping scenario, and the propose I gave to you should fit
Regards.
Liang -
Problem with RFC function module from R/3 to CRM
Hi, i have a RFC function module created in R/3, this is the code:
function Z_CRM_PRODUCTO_INTERLOCUTOR.
""Interfase local
*" IMPORTING
*" VALUE(GV_VKORG) TYPE VKORG
*" VALUE(GV_VTWEG) TYPE VTWEG
*" VALUE(GV_MATNR) TYPE MATNR
*" VALUE(GV_KUNNR) TYPE KUNNR_V
*" EXPORTING
*" VALUE(GV_KDMAT) TYPE MATNR_KU
*" VALUE(GV_POSTX) TYPE KDPTX
*" EXCEPTIONS
*" NOT_FOUND
UNPACK GV_MATNR TO GV_MATNR.
UNPACK GV_KUNNR TO GV_KUNNR.
select single KDMAT POSTX
into (GV_KDMAT, GV_POSTX) from KNMT
where VKORG = GV_VKORG
and VTWEG = GV_VTWEG
and KUNNR = GV_KUNNR
and MATNR = GV_MATNR.
IF sy-subrc <> 0.
RAISE NOT_FOUND.
ENDIF.
endfunction.
When i call this function from CRM, i do it like this:
CALL FUNCTION 'Z_CRM_PRODUCTO_INTERLOCUTOR'
DESTINATION LV_RFCDEST
EXPORTING
GV_VKORG = lv_vkorg
GV_VTWEG = ORGMAN_H-DIS_CHANNEL
GV_MATNR = ORDERADM_I_WRK-ORDERED_PROD
GV_KUNNR = WA_DATOS_PER-N_PAGADOR
IMPORTING
GV_POSTX = IT_POS_LINE-DESCRIPCION
GV_KDMAT = IT_POS_LINE-material
EXCEPTIONS
not_found = 1.
where:
it_pos_line-descripcion type string
it_pos_line-material type string.
Well, my problem is that when debugging, in R/3 the 2 return values have the correct value, but when they are passed to CRM they have only one position.
As i've been told, it was working ok, but it's being wrong since we made a ¿conversion to unicode?. Maybe I should change the type of return ???
Thanks in advance !!!Hello Maria,
Make sure you define your parameters in CRM exactly the same way as in R3, do not use type string here.
So:
it_pos_line-descripcion type C char 40,
it_pos_line-material type C length 35.
Kind regards,
John. -
RFC function module - not considering string type parameters
Hi,
i am calling one RFC, this rfc function module is enhanced to have one more import parameter and the type of this parameter is of type "string".
i am passing this value from while calling rfc fm but i can see this value is not being considered here in the target system, i mean the passed value from source system is not seen in the target system.
i read some thing related to rfc restrictions on code pages, is it something to do with that or string type is not allowed??
Please suggest!!!Hi all,
I faced the same problem and solved it ,
You have defined a reference parameter for a remotely called
function module. However, only value parameters are allowed
for this type of module.
Procedure
Change the reference parameter to a value parameter.
Guys pls .don't leave the thread un-asnwered when you solved problem , post the solution it might be useful for others also.
Regards
Krishna Acharya -
How to debug a RFC function module remotely from another R/3 system?
Hi experts,
I have RFC function module in one R/3 system. I am calling this from another R/3 system that is cross apps (Xapps).
This function module is Synchronous.
Is it possible to debug this function module from cross apps?
Can somebody give me the steps?
Thanks & Regards
GopalHi Shree,
Can you explain it bit more?
Do I have to call the function module with "IN BACKGROUND TASK"?
Or is it that I have to just put external breakpoint in the function module?
Please help
Thanks
Gopa -
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 -
Debugging RFC function module from ECC to CRM
Hi All,
My requirement is to debug an RFC function module present in CRM(7.0) system from ECC(6.0) system. A report program in ECC will call CRM custom FM. I found many posts in SDN with the same issue and tried to implement suggestions provided there. But I couldn't succeed. The approach I followed is:
I logged in to ECC report program and kept an external breakpoint just before the function module call.
I logged in to CRM system, opened the function module and kept an external breakpoint there.
In both the systems I provided the dialogue userid( id through which I log in to SAPGUI) in the system->settings->debugging option.
In CRM I activated the external break point in transaction SRDEBUG.
Now when I execute the report program in ECC, control stops at the breakpoint. If I press F5 at the function call, control is not going to the external break point set in the CRM FM. I am getting output of FM directly.
I tried with different settings like turning on the check box for IP matching and session breakpoint active immediate, switching to classic debugger etc. I also tried to provide the RFC user id instead of dialogue user but system throws exception saying only dialogue userids are allowed. I found that by inserting an infinite loop statement, control goes inside the RFC CRM FM but I prefer not to change the code.
Please let me know if I missed anything.
Thanks and Regards,
NarenHi,
Debug RFC calls
When an RFC function module is called it is usually not possible to debug the call, using the below techniques we can achieve the same. For this example we are calling an RFC enabled FM in ECC system from CRM system.
Scenario 1: Calling a custom RFC FM
STEP 1: Add an infinite loop in the remote custom Function Module (adding a u201CDO. ENDDO.u201D statement at the start of the FM would be enough).
STEP 2: Execute your program in the CRM system. The execution stops at the RFC call, because of the infinite loop.
STEP 3: Now login to the ECC system and go to transaction SM51 select the process which is executing the RFC and navigate to the menu: u201CProgram/Session->Program->Debuggingu201D this triggers the debugger session in a separate window.
Scenario 2: Calling a Standard RFC FM
When we are debugging a standard program we cannot add the infinite loop, hence we cannot go to SM51 and debug the work process. The RFC destination for the ECC system has a User specified, the RFC function module gets executed using this users credentials. Usually the basis team set up the RFC user as non Dialog user, this does not allow debugging. Contact your Basis team and get this changed to a dialog user enabling you to debug RFC function calls via the normal debugger.
Note: User name configured in the RFC destination (transaction SM59)
Note: User type for the RFC User (transaction SU01D)
Hope this will be helpful.. -
RFC Function module needed for getting table details in APO from R/3
Hi,
I need a RFC function module where I can write a query from R/3 to access APO server database table and get the necessary records.
Regards
MacPossible ways
1. Call fm RFC_READ_TABLE and give destination and table name ( But i am not sure how it will work SCIF enviornment of APO)
or
2. Create a custom function module in APO side and call from R/3 side using destnation option
a® -
Unable to find the RFC function module in the impoting list in IR
HI
I am trying to import a RFC function module from the R/3 system.
I am not able to find the RFC in the list that comes for the RFC function modules that can be imported.
The RFC is present in the destination system and is actiated too
If anyone has and idea why is such a thing happning
Regards
NikhilHi Nikhil,
The Checklist,
1. Check the connection parameter at XI
2. Make sure ur function module is remote enabled
3. Make sure ur RFC exists for the same user, client credentials
Regards,
Prateek -
How to invoke RFC function module from XI interface
Hi all,
I am having one question, How to invoke RFC function module from XI interface.
Please reply me as soon as possible.
Thanks in advance,
RadhikaHi,
To call the RFC in mapping u need to create the RFC lookups...check these links.
How we have to create the lookups?
Check this weblogs with some screenshots on how to achieve this:
/people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
/people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups
/people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
/people/sap.user72/blog/2005/12/06/optimizing-lookups-in-xi
/people/morten.wittrock/blog/2006/03/30/wrapping-your-mapping-lookup-api-code-in-easy-to-use-java-classes
lookups in xi
XI Design Guidelines
Re: RFC Lookup API
/people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a03e7b02-eea4-2910-089f-8214c6d1b439
Regards,
Phani
Maybe you are looking for
-
I just had to have the Logic Board replaced at the Apple store in Madison. Seems to be working OK but the drive sounds like it's grinding.It's loud enough that it's no strain to hear it. I've never had any noise with this computer at all. My problem
-
How to open BSP in the same window of WD?
Hi, I have a WD that I would like to link to a BSP. I added a link and put the relative path to the BSP. Once I click on that link, the BSP is opened in a new window. I want the BSP to open in the same window, replacing the WD. I tried putting in the
-
I got a free Ilife pack with my Mac. I was using 8 and when I installed 9, it told me I had to use the latest version. Any ideas? The Apple disk clearly says 9.0.
-
Setting portrange directive for FTP
A few weeks ago I posted a question about FTP file listings timing out and got an excellent response from Camelot advising that I create a set of ports for passive FTP connection. This is done using the portrange directive in /etc/ftpd.conf. My Termi
-
Hi, Ive noticed that sometimes chromium freezes. I cant press any buttons or anything. I can minimize or restore that window just fine but i cant do anything, so i have to kill chromium proccess. I think this started to happen after recent xorg updat