Skip to Content
avatar image
Former Member

RfcRegisterServer exited with error

Hi!

My problem is as follows. I am using NW RFC SDK 64bit to create my own RFC Server application. I have installed SAP ABAP Trial 7.03 for testing and have created destination with name "TestRFC" which uses TCP/IP Connection. in my sapnwrfc.ini file I have saved the following text:

DEST=TestRFC
TYPE=R
GWSERV=3300
GWHOST=192.168.3.73

PROGRAM_ID=TestRFCSERVERID


In my source code I have prepared structure RFC_CONNECTION_PARAMETER in the following maner:

RFC_CONNECTION_PARAMETER m_oGatewayParams[1];

m_oGatewayParams[0].name = cU("DEST");

m_oGatewayParams[0].value = cU("TestRFC");


After that I call RfcRegisterServer function:

m_hRFCConn = ::RfcRegisterServer(m_oGatewayParams,1,&Err);


When I debug my application and reach the line with

RfcRegisterServer, the result of its execution is the error with the following description:

RFC_INVALID_PARAMETER

Parameter ASHOST, GWHOST or MSHOST is missing.


How can I fix this error?
P.S. I am using Visual Studio 2010 in Windows7 x64, SAP gateway is launched in virtual machine with IP-address 192.168.3.73, which is available. Moreover, I succeded to register my server using rfcexec.exe tool with the following command line:

rfcexec -a TestRFCSERVERID -g 192.168.3.73 -x 3300

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

2 Answers

  • Nov 09, 2016 at 08:32 PM

    Hello,

    To me it worked. I could see my program registered at the transaction SMGW -> goto -> logged on clients.

    Here is the complete code of my program:

    #include <stdio.h>
    #include <unistd.h>
    #include "c:\path\to\rfc\nwrfcsdk\include\sapnwrfc.h"
    
    int main(int argc, SAP_UC** argv) {
        RFC_CONNECTION_PARAMETER m_oGatewayParams[1];
        RFC_ERROR_INFO Err;
        m_oGatewayParams[0].name = cU("DEST");
        m_oGatewayParams[0].value = cU("TestRFC");
        RFC_CONNECTION_HANDLE m_hRFCConn;
    
        RfcInit();
        m_hRFCConn = RfcRegisterServer(m_oGatewayParams,1,&Err);
        if (m_hRFCConn == NULL) {
            printf("Error when opening an RFC connection!");
            RfcCloseConnection(m_hRFCConn, &Err);
            return 1;
        }
        
        //sleep 5s so I can see the program registered at SMGW
        sleep(5);
        printf("It worked.");
        RfcCloseConnection(m_hRFCConn, &Err);
    
        return 0;
    }

    And here the contents of my "sapnwrfc.ini" file:

    DEST=TestRFC
    TYPE=R
    GWSERV=3330
    GWHOST=<IP of my VM>
    PROGRAM_ID=TestRFCSERVERID
    <blank line at the end>

    What I did differently:

    1. I first just declared the handle (RFC_CONNECTION_HANDLE m_hRFCConn;);
    2. I called the function "RfcRegisterServer()" only after RfcInit();
    3. I removed a blank line between "GWHOST" and "PROGRAM_ID" at the "ini" file;
    4. My "ini" file has a blank line at the end.


    I hope this helps.

    Best regards,
    Isaías

    Add comment
    10|10000 characters needed characters exceeded

  • Nov 03, 2016 at 07:52 PM

    Hello,

    Can you please provide the complete sample code?

    Regards,

    Isaías

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      I have even tried to build my version of rfcexec from existing source code and the error is the same, regardless to the fact that the use of "rfcexec.exe" from NW RFC SDK is correct.