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
人首先应当遵从的,不是别人的意见,而是自己的良心。
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连接不上 请高手指点的主要内容,如果未能解决你的问题,请参考以下文章