RFC lookup in User Defiened Function

Hi
Is there somewhere a step by step that shows everything needed to make a RFC call in a user defined function?
Thanx,
Jan

>
Chirag Gohil wrote:
> check this.
> Rfc lookup:
> https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a03e7b02-eea4-2910-089f-8214c6d1b439
> https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/70d90a91-3cf4-2a10-d189-bfd37d9c3231
>
> chirag
I tried the second link and everything works fine but it does not get the data from the rfc.. Is there a way I can debug the user defined function? Testing doesn't return any issues.

Similar Messages

  • Acces to XI R/3 table into user-defined function. Is possible?

    Hi experts.
    We want to do a user defined function in message mapping that reads a value in R/3 table. R/3 table is created in XI r/3.
    It´s possible?. How i can do it?.
    Thanks for all.

    HI Julian
    For your scenario, u need to create an rfc in the R/3 system and call that RFC from a user-defined function in XI by using the RFC Lookup facility..
    Check out this following code...
    com.sap.mw.jco.*;
    public String Get_Customerl(String a,String b,Container container){
       //write your code here
    JCO.Repository mRepository;
    // Change the logon information to your own system/user
        JCO.Client mConnection = JCO.createClient(
                "300",         // SAP client   
                "XYZ" ,       // userid
                "XYZ",       // password
                "EN",          // language
                "66.248.225.116",        // host name
                "00" );        // system number
    // connect to SAP
    mConnection.connect();
    // create repository
    mRepository = new JCO.Repository( "SAPLookup", mConnection );
    // Create function
    JCO.Function function = null;
    IFunctionTemplate ft = mRepository.getFunctionTemplate("ZGET_MATERIAL");
    function = ft.getFunction();
    // Obtain parameter list for function
    JCO.ParameterList input = function.getImportParameterList();
    // Pass function parameters
    input.setValue( a , "CUSTOMER" );
    input.setValue( b , "NAME" );
    mConnection.execute( function );
    String ret = function.getExportParameterList().getString( "CUST");
    mConnection.disconnect();
    return ret;
    This takes the customer number and name as input and the rfc maps these values in the table and returns the customer number if it exists in the database...
    Hope u find it useful
    Regards,
    Hari

  • How to use payload from standard RFC MessageType in a RFC Lookup function

    Hello
    We have a DB sender to call an BAPI. The DB receiver gets the BAPI response.
    It is an easy scenario with one mapping.
    But the RFC Mapping Lookup is very awful. You have to rebuild all open and close tags to get the RFC payload. A lot of concat functions are a must. The error search in such a mapping is not easy and seems like EAI developing 1990 (Hand am Arm).
    Ok, it is better as a BPM, but it is not well for first level support person and release changes and trouble shooting.
    How can I use a XML payload from first mapping in my RFC Mapping lookup (second mapping)? There must be a way with two mappings and an easy RFC lookup.
    Currently (one mapping):
    DB sender format -> ( RFC lookup self-made RFC XML structure) DB receiver format
    My dream (two mappings):
    DB sender format -> RFC SAP XI standard Format ->(RFC lookup by using Payload from first mapping) DB receiver format
    I hope someone can help me with an example.
    Daniel

    Hi Daniel,
    If i understood correctly, urs is a 'Asynch' scenario JDBC to JDBC with a RFC lookup in Mapping.
    If its so, then i think wat u r expecting can be done. In Interface Mapping, u can add more than one message mappings.
    So first do a Mapping for DB sender format - RFC input standard format,
    then another one for RFC sender Format - RFC receiver format, (look up code goes in this mapping).
    Then third one from RFC receiver format to DB receiver format.
    The order n which u add in Interface Mapping is also important. This is a suggestion, i havent tried this, but still i think u can give it a try.
    Regards,
    P.Venkat

  • RFC Lookup error :No RFC authorization for function module

    Hi All,
    I have created RFC in the PI system and enabled it as remote. I am working on PI7.1
    I have imported RFC into Repository.But when i am trying to execute RFC lookup function in the graphical mapping I am getting No RFC authorization for function module error.
    Unhandled RFC exception: <rfc:Z_MAIL_LOOKUP.Exception xmlns:rfc="urn:sap-com:document:sap:rfc:functions"><Name>RFC_ERROR_SYSTEM_FAILURE</Name><Text>No RFC authorization for function module Z_MAIL_LOOKUP.</Text><Message><ID>RFC_ERROR_SYSTEM_FAILURE</ID><Number>341</Number></Message><Attributes><V1>RFC_NO_AUTHORITY</V1></Attributes></rfc:Z_MAIL_LOOKUP.Exception> com.sap.aii.mapping.api.StreamTransformationException: Unhandled RFC exception: <rfc:Z_MAIL_LOOKUP.Exception xmlns:rfc="urn:sap-com:document:sap:rfc:functions"><Name>RFC_ERROR_SYSTEM_FAILURE</Name><Text>No RFC authorization for function module Z_MAIL_LOOKUP.</Text><Message><ID>RFC_ERROR_SYSTEM_FAILURE</ID><Number>341</Number></Message><Attributes><V1>RFC_NO_AUTHORITY</V1></Attributes></rfc:Z_MAIL_LOOKUP.Exception> at com.sap.aii.mappingtool.flib7.RfcLookup.cacheMore(RfcLookup.java:95) at com.sap.aii.mappingtool.tf7.rt.AMultiResIterator$MultiOutIterator.gotoNextContext(AMultiResIterator.java:95) at com.sap.aii.mappingtool.tf7.AMappingProgram.processNode(AMappingProgram.java:315) at com.sap.aii.mappingtool.tf7.AMappingProgram.processNode(AMappingProgram.java:406) at com.sap.aii.mappingtool.tf7.AMappingProgram.start(AMappingProgram.java:496) at com.sap.aii.mappingtool.tf7.Transformer.start(Transformer.java:133) at com.sap.aii.mappingtool.tf7.AMappingProgram.transform(AMappingProgram.java:626) at com.sap.aii.ibrep.server.mapping.exec.ExecuteXiMappingCommand.transformInternal(ExecuteXiMappingCommand.java:197) at com.sap.aii.ibrep.server.mapping.exec.ExecuteXiMappingCommand.execute(ExecuteXiMappingCommand.java:94) at com.sap.aii.ib.server.mapping.exec.CommandManager.execute(CommandManager.java:43) at com.sap.aii.ibrep.server.mapping.ServerMapService.execute(ServerMapService.java:40) at com.sap.aii.ibrep.server.mapping.MapServiceBean.execute(MapServiceBean.java:40) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy1005_10002.execute(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.rmi_p4.P4DynamicSkeleton.dispatch(P4DynamicSkeleton.java:234) at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:351) at com.sap.engine.services.rmi_p4.server.ServerDispatchImpl.run(ServerDispatchImpl.java:70) at com.sap.engine.services.rmi_p4.P4Message.process(P4Message.java:62) at com.sap.engine.services.rmi_p4.P4Message.execute(P4Message.java:37) at com.sap.engine.services.cross.fca.FCAConnectorImpl.executeRequest(FCAConnectorImpl.java:872) at com.sap.engine.services.rmi_p4.P4Message.process(P4Message.java:53) at com.sap.engine.services.cross.fca.MessageReader.run(MessageReader.java:58) at com.sap.engine.core.thread.execution.Executable.run(Executable.java:108) at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:304) Runtime exception when processing target-field mapping /ns0:MT_FileDummy/File; root message: Unhandled RFC exception: <rfc:Z_MAIL_LOOKUP.Exception xmlns:rfc="urn:sap-com:document:sap:rfc:functions"><Name>RFC_ERROR_SYSTEM_FAILURE</Name><Text>No RFC authorization for function module Z_MAIL_LOOKUP.</Text><Message><ID>RFC_ERROR_SYSTEM_FAILURE</ID><Number>341</Number></Message><Attributes><V1>RFC_NO_AUTHORITY</V1></Attributes></rfc:Z_MAIL_LOOKUP.Exception>
    13:42:37 End of test
    Edited by: Rams on Apr 17, 2009 1:43 PM

    Hi! Rams,
    I think the issue is related to Authentification Issue..Even though u did correctly please check once the below
    1) Check any Typo Erros are there while configuring or giving names in Lookups.
    2) please check Authorizations like ID and PWD and Sufficient Roles
    3) Also please check did u given paramters correctly while doing RFC look up I mean paramers , Binding parameters and RFC channel name and adapter type or Simple type it must be an  adapter
    4) In ID part while configuring Interface determinaition you need to give your RFC look Up name there also..Hence check whether u given or not if yes correctly or not
    5) Also remember one thing if your scenario is correct mostly you can know the result in mapping itself it seems while testing Message mapping and Interface mappings give your RFC look up paramters in the parameters tab present in TEST tab and later in Document tab give Input...and execute it works if it doesn;t works and if there is an issue with RFC you can get there only..ok
    Also go through the below document::
    [https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/20befc9a-aa72-2b10-ae9b-b0988791d457]
    I hope this will give u brief idea...
    Also check with basis while taking SAP_ALL authorization so that first u ill came to know whether issue is related to authentification or RFC module itself remote enabled and also do SXI_CACHE also ocne to refresh ESR and ID objects..
    Regards::
    Amar Srinivas Eli

  • Exception Handling in RFC lookup

    Hi Experts,
    I have a query in RFC Lookup function working with PI 7.1,  file to Idoc scenario.
    I am using Enhance Receiver Determination to find the dynamic recivers.Here we have used a Functional Module which gives an output according to the the input parameter (which comes from input file). thus i have used RFC lookup to the remote system to fetch this info from FM.
    Problem -
    When the remote system is down or if the RFC lookup attemped & exceptions raised for some reason (RFC user authority has been changed & it was not able to perform the intended Job at remote system) , the message stuck in queue and block the several other messages from another interfaces which belongs to teh same queue.
    Queries-
    This is not allowed in production as it affects other services.
    1>how can we handle the RFC lookup exception (in case of remote system is down or if the RFC lookup exception)
    2>how can we perform Local lookup at PI box rather then remote lookup (the FM fetches the data from remote system)
    3>Is Value mapping is relevant in this case raher the RFC lookup ? I am not sure as the values are dynamic & selected as per the FM's output.
    Please provide your valuable insight .
    Thanks in advance !
    -Jyoti

    Hi Jyoti,
    Answer for your 3 question.
    1. RFC lookup will get execute on R/3 so if R/3 is down there no way that your RFC lookup will work as expected.
    2. So if R/3 is down or RFC not able to get receiver system due to some problem.. then in that case.
              On your Receiver determination at bottom
              Configure  u201Cif no receiver found proceed as followingu201D
               In this you can have 3 option.
                        a. Error message u2013 if you select this the transaction will end with error message in SXMB_MONI
                        b. Ignore: if you select this execution will get ignored and there will not be any entry in SXMB_MONI
                        c. Select the following receiver. You can select this and can configured default receiver system in case if RFC not able to determine receiver then interface will get route to receiver system configured here.
    3. As you mentioned values are dynamic  then Value mapping doesnu2019t make any sense here. RFCl ookup is the right option and above are few other option in case you RFC lookup flailed.
    Thanks,
    Bhupesh

  • Cannot perform RFC lookup

    Hi All,
    We are getting below error in doing testing in PI mapping.
    Cannot perform RFC lookup com.sap.aii.mapping.api.StreamTransformationException: Cannot perform RFC lookup at com.sap.aii.mappingtool.flib7.RfcLookup.cacheMore(RfcLookup.java:105) at com.sap.aii.mappingtool.tf7.rt.AMultiResIterator$MultiOutIterator.gotoNextContext(AMultiResIterator.java:95) at com.sap.aii.mappingtool.tf7.rt.C2CFunctionWrapper.cacheContext(C2CFunctionWrapper.java:77) at com.sap.aii.mappingtool.tf7.rt.C2CFunctionWrapper.gotoNextContext(C2CFunctionWrapper.java:42) at com.sap.aii.mappingtool.tf7.AMappingProgram.processNode(AMappingProgram.java:317) at com.sap.aii.mappingtool.tf7.AMappingProgram.processNode(AMappingProgram.java:410) at com.sap.aii.mappingtool.tf7.AMappingProgram.processNode(AMappingProgram.java:410) at com.sap.aii.mappingtool.tf7.AMappingProgram.processNode(AMappingProgram.java:410) at com.sap.aii.mappingtool.tf7.AMappingProgram.processNode(AMappingProgram.java:410) at com.sap.aii.mappingtool.tf7.AMappingProgram.start(AMappingProgram.java:502) at com.sap.aii.mappingtool.tf7.Transformer.start(Transformer.java:133) at com.sap.aii.mappingtool.tf7.AMappingProgram.transform(AMappingProgram.java:632) at com.sap.aii.ibrep.server.mapping.exec.ExecuteXiMappingCommand.transformInternal(ExecuteXiMappingCommand.java:197) at com.sap.aii.ibrep.server.mapping.exec.ExecuteXiMappingCommand.execute(ExecuteXiMappingCommand.java:94) at com.sap.aii.ib.server.mapping.exec.CommandManager.execute(CommandManager.java:43) at com.sap.aii.ibrep.server.mapping.ServerMapService.execute(ServerMapService.java:40) at com.sap.aii.ibrep.server.mapping.MapServiceBean.execute(MapServiceBean.java:40) at sun.reflect.GeneratedMethodAccessor701.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:46) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy1525.execute(Unknown Source) at sun.reflect.GeneratedMethodAccessor700.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.rmi_p4.P4DynamicSkeleton.dispatch(P4DynamicSkeleton.java:234) at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:355) at com.sap.engine.services.rmi_p4.server.ServerDispatchImpl.run(ServerDispatchImpl.java:69) at com.sap.engine.services.rmi_p4.P4Message.process(P4Message.java:67) at com.sap.engine.services.rmi_p4.P4Message.execute(P4Message.java:41) at com.sap.engine.services.cross.fca.FCAConnectorImpl.executeRequest(FCAConnectorImpl.java:977) at com.sap.engine.services.rmi_p4.P4Message.process(P4Message.java:57) at com.sap.engine.services.cross.fca.MessageReader.run(MessageReader.java:55) at com.sap.engine.core.thread.execution.Executable.run(Executable.java:115) at com.sap.engine.core.thread.execution.Executable.run(Executable.java:96) at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:314) Caused by: com.sap.aii.mapping.lookup.LookupException: Connection to system RUNTIME using application RUNTIME lost. Detailed information: Error accessing "http://sapdevpid01:51000/run/system/int?container=web" with user "PIREPUSER". Response code is 401, response message is "Unauthorized" at com.sap.aii.ibrep.server.lookup.LookupServiceProvider$RemoteClientDelegator.<init>(LookupServiceProvider.java:103) at com.sap.aii.ibrep.server.lookup.LookupServiceProvider$RemoteClientDelegator.<init>(LookupServiceProvider.java:86) at com.sap.aii.ibrep.server.lookup.LookupServiceProvider$RemoteClient.getSystemAccessor(LookupServiceProvider.java:73) at com.sap.aii.mapping.lookup.LookupService.getRfcAccessor(LookupService.java:258) at com.sap.aii.mappingtool.flib7.RfcLookup.cacheMore(RfcLookup.java:78) ... 52 more Caused by: com.sap.aii.utilxi.hmi.api.HmiCoreException: Connection to system RUNTIME using application RUNTIME lost. Detailed information: Error accessing "http://sapdevpid01:51000/run/system/int?container=web" with user "PIREPUSER". Response code is 401, response message is "Unauthorized" at com.sap.aii.utilxi.hmi.api.HmiCoreException.newCommunicationError(HmiCoreException.java:85) at com.sap.aii.utilxi.hmi.api.HmiHttpJDKClient.sendRequestAndReceiveResponse(HmiHttpJDKClient.java:184) at com.sap.aii.utilxi.hmi.api.HmiClientAdapter.invokeMethod(HmiClientAdapter.java:92) at com.sap.aii.ibrep.server.lookup.SystemAccessorHmiClient.<init>(SystemAccessorHmiClient.java:50) at com.sap.aii.ibrep.server.lookup.SystemAccessorHmiClient.getInstance(SystemAccessorHmiClient.java:71) at com.sap.aii.ibrep.server.lookup.LookupServiceProvider$RemoteClientDelegator.<init>(LookupServiceProvider.java:96) ... 56 more Root Cause: com.sap.aii.mapping.lookup.LookupException: Connection to system RUNTIME using application RUNTIME lost. Detailed information: Error accessing "http://sapdevpid01:51000/run/system/int?container=web" with user "PIREPUSER". Response code is 401, response message is "Unauthorized" at com.sap.aii.ibrep.server.lookup.LookupServiceProvider$RemoteClientDelegator.<init>(LookupServiceProvider.java:103) at com.sap.aii.ibrep.server.lookup.LookupServiceProvider$RemoteClientDelegator.<init>(LookupServiceProvider.java:86) at com.sap.aii.ibrep.server.lookup.LookupServiceProvider$RemoteClient.getSystemAccessor(LookupServiceProvider.java:73) at com.sap.aii.mapping.lookup.LookupService.getRfcAccessor(LookupService.java:258) at
    Thank you very much for advance.
    Ferran

    hi
    Check in SM59 the RFC destination is working fine
    Check the RFC communication channel is without error
    also
    Please check if the RFC is imported properly and you are using RFCLookup function in the mapping.
    Check if you have completd the parameter creation

  • Mapping Exception Issue with RFC LookUp

    Hi,
    My scenario is Idoc To file, in my idoc user who created a purchase order filed is not there but in xml file i want the user who create that PO, for this i am using RFC LooUp. I want the user who created a purchase order.
    Graphical Mapping looks like below.
    Belnr-->User Defined Function--
    >UserName
    Please find the code bloew:
    String DBTABLE = "EKKO";
    String lookUpField = "ERNAM";
    String WHERE_CLAUSE = " EBELN "" = "" ' "a" ' " ;
    JCO.Repository mRepository;
    JCO.Client mConnection = JCO.createClient(
                   "500",
                    "RFCUSER",
                   "abc1234",
                   "EN",
                   "cxylo06",
                   "05");
    // connect to SAP
    mConnection.connect();
    // create repository
    mRepository = new JCO.Repository( "GenericRFCMappingLookup", mConnection );
    // create function template to select data from any table
    JCO.Function function = null;
    IFunctionTemplate ft = mRepository.getFunctionTemplate("RFC_READ_TABLE");
    function = ft.getFunction();
    // Obtain parameter list for function
    JCO.ParameterList input = function.getImportParameterList();
    // Pass function parameters
    // set import parameters table name and RFC
    input.setValue( DBTABLE, "QUERY_TABLE");
    input.setValue( "," , "DELIMITER");
    //Fill the where clause of the table
    JCO.ParameterList tabInput = function.getTableParameterList();
    JCO.Table inputTable = tabInput.getTable("OPTIONS");
    inputTable.appendRow();
    inputTable.setValue(WHERE_CLAUSE,"TEXT");
    mConnection.execute( function );
    //Find the position of the field that has to be lookedUp
    JCO.Table lookupFieldPos = function.getTableParameterList().getTable("FIELDS");
    int pos = -1;
    for (int i = 0; i < lookupFieldPos.getNumRows(); i++)
              lookupFieldPos.setRow(i);
              if (lookupFieldPos.getString("FIELDNAME").equals(lookUpField))
              pos = i;
    //Get the exact lookupvalue from the position obtained above
    JCO.Table valueSet = function.getTableParameterList().getTable("DATA");
    valueSet.setRow(0);
    String resultSet = valueSet.getString("WA");
    result.addValue(resultSet);
    mConnection.disconnect();
    I am not aware of java coding so kindly make necessary  modifications.
    Kindly suggest what changes i need to do to execute perfectly.
    Your help will be greatly apprecited.
    Regards,
    Venkat

    Hi Venkat,
         If you use the JCO connection to get the value from RFC, it would be a problem in futherly like when you move this interface DEV to Q, then you need to change the connection parameters to establish the JCO connection.Same in Production environment too.It is not advisable to do JCO lookup. Go for RFC lookup as the link given by Farooq.
    Create Reciever RFC communication channel and take the XML signature of u r RFC by importing that RFC under imported objects.Create an UDF, for this see the sample code which is exisitng in document to pass the Export parameter to RFC.
    In this way u r RFC channel establish the connection to R3 and your RFC will execute and return the value.U just need to change the Reciever RFC channel parameters respective of environment.
    Cheers
    Veera

  • PI 7.1: RFC Lookup Graphically in BPM

    Hi,
    I want to do a RFC lookup to XI abap stack in my graphical mapping.
    The problem is my mapping is defined in a transformation step inside my BPM, and I'm not able to link my RFC CC to the Import parameter. Has anyone experience with this sort of flow yet, is this even possible because I don't have a receiver agreement because it's BPM?
    I only can link following Container Element types: Simple Type / Abstract Interface / Receiver
    SAP Library don't even talk about BPM's for the lookups:
    http://help.sap.com/saphelp_nwpi71/helpdata/en/33/1ec6ced273493a993a80c2301c03da/frameset.htm
    Any help would be appreciated,
    Wouter.

    hi,
    check this links
    The specified item was not found.
    SAP PI 7.1 Mapping Enhancements Series: Graphical Support for JDBC and RFC Lookups
    RFC lookups https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/xi-code-samples/xi%20mapping%20lookups%20rfc%20api.pdf
    This blog and article deals with calling your RFC from your JAVA MAPPING / User Defined Function.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/uuid/801376c6-0501-0010-af8c-cb69aa29941c
    Use this crazy piece for any RFC Mapping Lookups!
    regards
    srinivas

  • Handling PI 7.1 RFC Lookup Exception in Graphical Mapping

    Dear Experts,
              I would like to know the better way of handling PI 7.1 - RFC Lookup Exception in Graphical Mapping without using  BPM. Say I perform a RFC Lookup from PI 7.1 Graphical Mapping and it fails due to RFC server down. In this case I suppose the RFC exception would be returned as response to the mapping? But, am really not sure how this response (RFC Exception) could be effectively used. Please clarify.
    Thanks,
    Hussain.
    Edited by: HussainShaik on Oct 26, 2009 8:24 AM

    Hi Hussain,
    I am not sure if I understood you query completely.
    IF the RFC look up raised some exception then how this is going to impact your interface will depend your mapping (which you did in ESR)
    (the following is adopted from help.sap,com)
    If you handled exceptions  by selecting Use Exceptions checkbox in the function properties of the standard function, the mapping editor adds an additional parameter in red (the bottommost return parameter) to the standard function in the data-flow editor. If you do not assign a target field to this return parameter, ignore the RFC exceptions (the message mapping is not terminated at runtime). Otherwise the mapping runtime transfers the exception as an XML structure and it can then be evaluated in a user-defined function, for example. If there is no exception, the mapping runtime transfers an empty context.
    If you have not selected the Use Exceptions checkbox, the mapping runtime terminates the message mapping if an exception occurs during the RFC lookup.
    Is this you are looking here?
    Also check this thread and help.sap site
    Re: SAP-PI - RFC call to SAP backend system
    http://help.sap.com/saphelp_nwpi71/helpdata/en/33/1ec6ced273493a993a80c2301c03da/content.htm
    Regards
    Suraj

  • RFC lookup issue

    Dear experts,
    i have a file to file scenario where in the graphical mapping i have to write a RFC lookup to get some data from R3 system ...
    i have written the following RFC lookup and it is working fine....
    java.lang.;java.util.;com.sap.aii.mapping.lookup.;java.lang.reflect.;com.sap.mw.jco.;java.io.;
    JCO.Repository mRepository;
    // Change the logon information to your own system/user
    JCO.Client mConnection = JCO.createClient(
        "500", // SAP client
        "test", // userid
        "temp", // password
        "EN", // language
        "gadrp700", // host name
        "03" ); // system number
    // connect to SAP
    mConnection.connect();
    // create repository
    mRepository = new JCO.Repository( "SAPLookup", mConnection );
    // Create function
    JCO.Function function = null;
    IFunctionTemplate ft = mRepository.getFunctionTemplate("Zlookup_test");
    function = ft.getFunction();
    // Obtain parameter list for function
    JCO.ParameterList input = function.getImportParameterList();
    // Pass function parameters
    input.setValue( a , "REC" );
    mConnection.execute( function );
    String ret = function.getExportParameterList().getString( "PAR" );
    mConnection.disconnect();
    return ret;
    only problem is i have to hardcode the system details user id and pwd...i know that i can create a business service and RFC communication channel which i have done ...but i do not know what addition needs to be done in the code...can you pls help me regarding what addition needs to be done in code...
    my business service name is : BS_test
    RFC channels name is : RFC_channel.
    Edited by: Ravi Mehta on Jun 22, 2009 4:23 PM

    Hi Ravi,
    You are doing a RFC lookup using JCO connection. It is very old. So please see this help and do accordingly. In this you dont need to hardcode anything. For business system, you can do a UDF for getting the system name. So based upon the system name do a Fix Values. Only thing you need to maintain is the communication channel when you transport.
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/70d90a91-3cf4-2a10-d189-bfd37d9c3231
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/a03e7b02-eea4-2910-089f-8214c6d1b439
    Regards,
    ---Satish

  • Is is possibel to do an RFC Lookup from The Graphical Mapping?

    Greetings,
    While doing a message mapping I need to get the value from R3 system using an RFC, is it is possible ?

    Hi
    we can do by using rfc look ups
    Lookup in mapping is the feature provided by SAP to lookup the data in the target R/3 or DB systems with the API provided.
    You need to write UDF in order to implement the API's provided by SAP.Consider the below example
    VendorNumber-UDF--CURR
    The scenario is legacy to SAP. The legacy system doesn't provide the currency details. But the target field need's to be populated with currency value.
    "The business rules says there are values maintained in SAP Table where if you pass VendorNumber it will return thr currency to you"
    So what you can do? You can write UDF implementing SAP Provided API's and do a lookup in the SAP System and get back the currency value and populate them in CURR field.
    I hope it clears a bit.
    Please find the below blogs
    DB Lookup: /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    RFC Lookup:https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a03e7b02-eea4-2910-089f-8214c6d1b439
    There are three types of look ups u can do
    RFC look up
    SOAP look up
    JDBC look up
    What is Lookup and why we need:
    Within an XI mapping it is a common requirement to be able to perform data lookups on-the-fly. In particular, there may be a need to look up some data that is maintained in an R/3 application.
    In the error handling topic we have seen the different validations which need to be performed on file. This can be done through Lookup.
    Some use cases:
    • Look up material number from table MARA.
    • Look up cost center budget.
    • Look up employee information.
    • Look up unit-of-measure (UOM) information from table t006a.
    • Lookup for raising an alert.
    The purpose of the lookup may be:
    • To perform application-level validation of the data, before sending it to the backend.
    • To populate fields of the XML document with some additional data found in the backend application.
    This is a form of value transformation.
    The "value mappings" offered by XI are not adequate in this case, since the data would have to be manually entered in the Integration Directory.
    There are two ways in which we can do lookup:
    • Call lookup method from GUI mapping.
    • Call lookup method from XSLT mapping.
    Lookup method from GUI mapping can be called using any of the following ways.
    • RFC lookup using JCO (without communication channel)
    /people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups
    • RFC lookup with communication channel.
    /people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
    • Lookup using JDBC adapter.
    /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    /people/sap.user72/blog/2005/12/06/optimizing-lookups-in-xi
    • CSV file lookup.
    /people/sundararamaprasad.subbaraman/blog/2005/12/09/making-csv-file-lookup-possible-in-sap-xi
    Lookups with XSLT - https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/8e7daa90-0201-0010-9499-cd347ffbbf72
    /people/sravya.talanki2/blog
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/05a3d62e-0a01-0010-14bc-adc8efd4ee14
    DB lookup - /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    SOAP Lookup - /people/bhavesh.kantilal/blog/2006/11/20/webservice-calls-from-a-user-defined-function
    You can refer to these links.
    /people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer Absolute stealer.
    /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    For Java APIs and also here you can map that how many types of lookups are possible in XI.
    http://help.sap.com/javadocs/NW04/current/pi/com/sap/aii/mapping/lookup/package-summary.html

  • How 2 Develope user defined functions to call function modules in R/3 syst

    How to Develope user defined functions to call function modules in SAP R/3 system....in xi

    HIi,
    If those function modules are RFC enabled then we can call those function module from user defined functions. Please see below link
    /people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
    Reward points if helpful.
    Thanks,
    Vijay Kumar T,

  • Creating RFC Lookups

    Hi experts,
    In my File to IDoc Scenario , How can I create RFC lookups using the Ztables of SAP R/3 in XI.
    Please give me any suggestions.
    Regards,
    Sri

    Sree,
    Can you please brief about your requirement.
    If I am not wrong..you need a lookup before posting idoc in R/3 system. I think its better to write a code in User Exit on R/3 side rather than calling a R/3 RFC function module from SAP XI. This approach will slow down your process.
    Its better if you can find an user exit before posting idoc and write a code for lookup data.
    Let me know if you need more details.
    Nilesh

  • RFC Lookups codepage

    Hi guys,
    I am using RFC API to perform some lookups from within my mapping program.
    In order to create the request in XML, I am using DOM xml parser.
    My code works fine when input data is in English, but when it is in another language, e.g. Greek, input data is respresented wrongly in XML document.
    The ppiece of code where I create the XML request is the following:
    Document docReq = null;
    // Building up RFC Request Document
    docReq = builder.newDocument();
    RFCInterfaceLine il = null;
    Element documentElement = docReq.createElement("ns0:" + remoteFunctionName);
    documentElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:ns0", "urn:sap-com:document:sap:rfc:functions");
    Node root = docReq.appendChild(documentElement);
    rfcInterfaceParametersLines = rfcInterfaceParameters.getLines();
    for (int i = 0; i < functionParameters.size(); i++)
    il = (RFCInterfaceLine) rfcInterfaceParametersLines.get(i);
         if (il.getParameterType().equalsIgnoreCase("I"))
         root.appendChild(docReq.createElement(il.getParameterName())).appendChild(docReq.createTextNode((String) functionParameters.get(i)));
    RFCInterfaceLine is a class used to represent the parameters (inputs, outputs and exceptions) used by the Remote Function Module in ABAP. "I" stands for Import. So when I have an import parameter, I create an element in XML.
    However, in the final XML document I cannot see as a header the encoding = "UTF" attribute. Is this the one that is missing to enable other languages as well??
    Evaggelos

    Hi refer these
    If you want to use DOM, you'll also have to choose a parser, since DOM's specification doesn't specify a parser, just document and element handlers, so there are various implementations of parsers for DOM. I've used Xerces's DOMParser (org.apache.xerces.parsers.DOMParser) on Java Mappings with success (never tried on UDF, though) and it's very simple.
    After you get the output stream from the rfc lookup, just use:
    DOMParser parser = new DOMParser();
    InputSource input = new InputSource(in);
    parser.parse(input);
    Document MyDoc = parser.getDocument();
    to get the Document object. Then you can use regular DOM methods to get the value.
    For example, with
    String value = MyDoc.getDocumentElement().getFirstChild().getNodeValue();
    you'd get the value of the first child of the root element.
    following document on XI Mapping lookups RFC API by Michal?
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/xi-code-samples/xi%20mapping%20lookups%20rfc%20api.pdf
    Mapping lookups u0096 RFC API
    <b>Mapping Lookups (New)</b>
    http://help.sap.com/saphelp_erp2005/helpdata/en/0f/f084429fb4aa1ae10000000a1550b0/frameset.htm
    <b>For Mapping Lookups~</b>
    /people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
    /people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups
    This blog and article deals with calling your RFC from your JAVA MAPPING / User Defined Function.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/uuid/801376c6-0501-0010-af8c-cb69aa29941c
    Java Mapping
    http://help.sap.com/saphelp_nw04/helpdata/en/e2/e13fcd80fe47768df001a558ed10b6/content.htm
    DOM parser API
    http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/package-frame.html
    On how to create XML docs with SAX and DOM go thruugh these links:
    http://www.cafeconleche.org/books/xmljava/chapters/ch09.html
    http://www.cafeconleche.org/books/xmljava/chapters/ch06.html
    Also go through these Blogs....
    /people/prasad.ulagappan2/blog/2005/06/08/sax-parser
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-i
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-ii
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-iii
    /people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups
    Thanks !!

  • Http-RFC Lookup-Integration Server -  Synchronous

    Hello Experts,
    I am creating a scenario in which data comes from http and RFC call is made in the R/3 system and then repsonse plus some  values from source side are sent back to http.
    For this scenario i had thought of RFC lookup...but i am not very clear with configuration....
    Here i have created one Sender as Business Service and other reciever as Intergration server.
    Can you provide inputs on this.
    Thanks,
    Vishal

    Hi Vishal,
                       For HTTP to RFC Synch Scenario, check out the following link...
    /people/community.user/blog/2006/12/12/http-to-rfc--a-starter-kit  -- HTTP to RFC Starter kit...
    for RFC lookup, if it needs to connect to an SAP System, u need to configure a receiver RFC Adapter in a separate communication channel through which you will connect to the SAP System. You will access the SAP System using the communication channel through an API..you need to create an UDF and import the following api...
    java.io.*
    com.sap.aii.mapping.lookup.*
    and for further info, kindly check out the following links..
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/a03e7b02-eea4-2910-089f-8214c6d1b439 -- Mapping Lookups function calls API by Michal Krawczyk,
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/05a3d62e-0a01-0010-14bc-adc8efd4ee14 -- Easy RFC Lookup From XSLT Mappings Using a Java Helper Class by Thorsten Nordholm Søbirk
    Thanks,
    N.Jayanth Kumar

Maybe you are looking for