jco3调用sap系统的rfc连接不上 请高手指点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jco3调用sap系统的rfc连接不上 请高手指点相关的知识,希望对你有一定的参考价值。

帐号是没有问题的
错误代码:
com.sap.conn.jco.JCoException: (103) RFC_ERROR_LOGON_FAILURE: ##.#####,#### on 10.10.1.2 sysnr 00at com.sap.conn.jco.rt.MiddlewareJavaRfc.generateJCoException(MiddlewareJavaRfc.java:637)at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcClient.connect(MiddlewareJavaRfc.java:1313)at com.sap.conn.jco.rt.ClientConnection.connect(ClientConnection.java:712)at com.sap.conn.jco.rt.PoolingFactory.init(PoolingFactory.java:103)at com.sap.conn.jco.rt.ConnectionManager.createFactory(ConnectionManager.java:189)at com.sap.conn.jco.rt.DefaultConnectionManager.createFactory(DefaultConnectionManager.java:45)at com.sap.conn.jco.rt.ConnectionManager.getFactory(ConnectionManager.java:178)at com.sap.conn.jco.rt.RfcDestination.initialize(RfcDestination.java:760)at com.sap.conn.jco.rt.RfcDestination.getSystemID(RfcDestination.java:784)at com.sap.conn.jco.rt.RepositoryManager.getRepository(RepositoryManager.java:30)at com.sap.conn.jco.rt.RfcDestination.getRepository(RfcDestination.java:858)at com.sap.conn.jco.rt.RfcDestination.getRepository(RfcDestination.java:28)at src.dev.dao.SapDao.returnSAPDemo_Data(SapDao.java:16)at src.dev.dao.SapDao.main(SapDao.java:47)Caused by: RfcException: [null] message: ##.#####,#### on 10.10.1.2 sysnr 00 Return code: RFC_SYS_EXCEPTION(3) error group: 103 key: RFC_ERROR_LOGON_FAILUREat com.sap.conn.rfc.api.RfcApi.RfcOpen(RfcApi.java:219)at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcClient.connect(MiddlewareJavaRfc.java:1306)... 12 moreCaused by: RfcException: [QAS|dareerp-qas] message: ##.#####,#### Return code: RFC_SYS_EXCEPTION(3) error group: 104 key: RFC_ERROR_SYSTEM_FAILUREException raised by QAS|dareerp-qasat com.sap.conn.rfc.engine.RfcIoOpenCntl.RfcReceive(RfcIoOpenCntl.java:2023)at com.sap.conn.rfc.api.RfcApi.RfcOpen(RfcApi.java:187)... 13 moreCaused by: com.sap.conn.rfc.exceptions.RfcGetException: ##.#####,####at com.sap.conn.rfc.engine.RfcImp.ab_rfcerror(RfcImp.java:1156)at com.sap.conn.rfc.engine.RfcGet.rfcget_run(RfcGet.java:131)at com.sap.conn.rfc.engine.RfcGet.ab_rfcget(RfcGet.java:23)at com.sap.conn.rfc.engine.RfcRcv.ab_rfcreceive(RfcRcv.java:33)at com.sap.conn.rfc.engine.RfcIoOpenCntl.RfcReceive(RfcIoOpenCntl.java:1970)... 14 more

有相关开发经验的人 希望指点指点。
我QQ 232691496

参考技术A 帐号权限有没有问题?RFC需要开通《Remote-Enabled Module》。 参考技术B EXEC ZRFCSD020 '0010000142','2010-10-25'

人首先应当遵从的,不是别人的意见,而是自己的良心。

C#如何通过RFC连接SAP系统

--定义SAPStart类:用于打开访问SAP的链接桥梁

public class SAPStart

{

//用于接收rfc配置     

public static RfcDestination rfcdest = null;

public static RfcRepository rfcrep = null;


//打开sap接口

public static void OpenSAP()

{

/ /如果rfcdest rfcrep 没有为空,则不需要再次打开链接的桥梁

if (rfcdest != null && rfcrep != null)

{

return;

}

try

{

//rfc配置 

string rfcname = "rfcname";

string rfcsystemid = "rfcsystemid";

string rfcappserverhost = "rfcappserverhost";

string rfcclient = "rfcclient";

string rfcuser = "rfcuser";

string rfcpassword = "rfcpassword";

string rfcsystemnumber = "rfcsystemnumber";


RfcConfigParameters rfc = new RfcConfigParameters();

rfc.Add(RfcConfigParameters.Name, rfcname);

rfc.Add(RfcConfigParameters.SystemID, rfcsystemid);

rfc.Add(RfcConfigParameters.AppServerHost, rfcappserverhost);

rfc.Add(RfcConfigParameters.Client, rfcclient);

rfc.Add(RfcConfigParameters.User, rfcuser);

rfc.Add(RfcConfigParameters.Password, rfcpassword);

rfc.Add(RfcConfigParameters.SystemNumber, rfcsystemnumber);


rfc.Add(RfcConfigParameters.Language, "ZF");

rfc.Add(RfcConfigParameters.PoolSize, "5");

rfc.Add(RfcConfigParameters.MaxPoolSize, "10");

rfc.Add(RfcConfigParameters.IdleTimeout, "500");


rfcdest = RfcDestinationManager.GetDestination(rfc);

rfcrep = rfcdest.Repository;

}

catch (Exception ex)

{

//OpenSAP失败= ex.ToString(),;

throw ex;

}

}

}

---------------------------------------------


----------Get 数据

public static void function_Get()

{

//打开访问SAP的链接桥梁

SAPStart.OpenSAP(); 

try

{

//调用函数名

IRfcFunction myfun = SAPStart.rfcrep.CreateFunction("函数名");

//设置参数

myfun.SetValue("参数名", "参数值");

//执行函数

myfun.Invoke(SAPStart.rfcdest);

//获取内表

IRfcTable output= myfun.GetTable("内表名");

//获取SAP返回的数据

string message = output.GetString("内表的列名");

}

catch (Exception ex)

{

throw ex;

}


---------------------------------------------


----------Post 数据

public static void function_Post()

//打开访问SAP的链接桥梁

SAPStart.OpenSAP();

try    

{

//调用函数名

IRfcFunction myfun= SAPStart.rfcrep.CreateFunction("函数名");

//结构  

IRfcStructure imports= myfun.GetStructure("结构名称"); 

//执行函数

myfun.Invoke(SAPStart.rfcdest);

//设置参数

mports.SetValue("参数名", "参数值"); 

IRfcTable output= myfun.GetTable("内表名");               

//获取SAP返回的数据    

string message = output.GetString("内表的列名");

}

catch (Exception ex)

{

throw ex;

}

}

  

以上是关于jco3调用sap系统的rfc连接不上 请高手指点的主要内容,如果未能解决你的问题,请参考以下文章

JCo for SAP中的嵌套结构?

java 调用 sap rfc函数 rfc函数是自定义的还是sap系统组件自带的

C#如何通过RFC连接SAP系统

C语言文件操作,请高手指点

调用JCO连接SAP的问题

SAP的RFC接口的发布与JAVA调用