Java 为什么SAP JCo会提出错误;领域不是……的成员。”;即使这个领域存在?
我想从Servlet应用程序将数据发送到SAP RFC表 我试着用下面的方法来做这件事Java 为什么SAP JCo会提出错误;领域不是……的成员。”;即使这个领域存在?,java,sap,Java,Sap,我想从Servlet应用程序将数据发送到SAP RFC表 我试着用下面的方法来做这件事 JCO.Function function = null; Connection conn = new Connection(); JCO.Client mConnection = conn.open(); JCO.Repository mRepository; mConnection.connect(); mRepository = new JCO.Repository("KEYWORD",mConnec
JCO.Function function = null;
Connection conn = new Connection();
JCO.Client mConnection = conn.open();
JCO.Repository mRepository;
mConnection.connect();
mRepository = new JCO.Repository("KEYWORD",mConnection);
try{
function = this.createFunction("MY RFC NAME");
if(function != null){
function.getImportParameterList.setValue("ID1","USERID");
function.getImportParameterList.setValue("Test Name","UNAME");
function.getImportParameterList.setValue("CLASSA","UCLASS");
mConnection.execute(function);
}
}catch(Exception ex){
// Exception handling goes here.
}
conn.disconnected();
但我有以下错误
com.sap.mw.jco.jco$Exception:jco\u ERROR\u FIELD\u NOT\u FOUND:FIELD USERID不是输入的成员
但我检查了一下,SAP中有exist列
这里少了什么?
我应该也传递RFC表名吗?那么如何解决呢?我通过下面的代码来解决这个问题
JCO.Function function = null;
Connection conn = new Connection();
JCO.Client mConnection = conn.open();
JCO.Table GET_DATA = null;
JCO.Repository mRepository;
mConnection.connect();
mRepository = new JCO.Repository("KEYWORD",mConnection);
try{
function = this.createFunction("MY RFC NAME");
if(function != null){
GET_DATA = function.getTableParameterList.getTable(TABLE_NAME);
GET_DATA.appendRow();
function.getImportParameterList.setValue("ID1","USERID");
function.getImportParameterList.setValue("Test Name","UNAME");
function.getImportParameterList.setValue("CLASSA","UCLASS");
GET_DATA.nextRow();
mConnection.execute(function);
}
}catch(Exception ex){
// Exception handling goes here.
}
conn.disconnected();
连接的sap系统上是否存在此功能? 如果是这样,我建议使用
function=conn.getRepository.getFunction('MY\u RFC\u NAME')
。通过该方法,您可以获得连接的SAP系统上存在的功能模块的元数据和签名。这允许您检查函数是否存在if(function==null)抛出新异常(“连接的SAP系统上不存在函数模块MY_RFC_NAME”)
并检查每个参数是否存在,是否具有您期望的名称和类型
在大多数情况下,发生这种错误是因为参数的名称略有不同。例如,
USERID
而不是USERID
function.getImportParameterList.setValue
是一个强有力的指示器,表明您发布的不是实际代码,因为MY TABLE字段
没有出现在代码中的任何地方。如果你漏掉了重要的部分,你不可能得到一个有用的答案。请参阅更新的答案。将My TABLE FIELD
替换为USERID
。再次-我怀疑这是实际代码,它应该是getImportParameterList()。setValue
。我的RFC名称是什么,它的签名是什么?我的RFC名称是功能模块的名称
。是的。功能模块的实际名称是什么?它的签名是什么?如果你想要一个真实的答案,请发布更多的信息。请看下面我的答案。我已经用下面的代码解决了我的问题。请检查一下。