当前位置:编程学习 > 网站相关 >>

jco通过连接池远程调用bapi 出现空指针 入门测试 多多帮忙

有两种方式连接sap,直接连没有问题,但是通过连接池就出现空指针错误,注释掉的是第一种方法,但是用第二种方法就在IFunctionTemplate ft = mRepository.getFunctionTemplate(name);报错at apidemo.TutorialBapi1.createFunction(TutorialBapi1.java:115)
public class TutorialBapi1 extends Object {
JCO.Client mConnection;

JCO.Repository mRepository;

static final String POOL_NAME = "Pool";

public TutorialBapi1() {
// try {
//  //Change the logon information to your own system/user
// mConnection = JCO.createClient("803", // SAP client
// "10651", // userid
// "xxx", // password
// null, // language
// "192.168.100.229", // application server host name
// "00"); // system number
// mConnection.connect();
// mRepository = new JCO.Repository("ARAsoft", mConnection);
// } catch (Exception ex) {
// ex.printStackTrace();
// System.exit(1);
// }

try { 
      JCO.Pool pool = JCO.getClientPoolManager().getPool(POOL_NAME); 
      if (pool == null) { 
        OrderedProperties logonProperties = 
          OrderedProperties.load("/logon.properties"); 
        JCO.addClientPool(POOL_NAME,  // pool name 
                          5,          // maximum number of connections 
                          logonProperties);  // properties 
      } 
      mConnection = JCO.getClient(POOL_NAME); 
      mConnection.connect();
      mRepository = new JCO.Repository("ARAsoft", mConnection);
     // System.out.println(mConnection.getAttributes()); 
    } 
    catch (Exception ex) { 
      ex.printStackTrace(); 
    } 
   

JCO.Function function = null;
JCO.Table codes = null;
try {
function = this.createFunction("BAPI_COMPANYCODE_GETLIST");
if (function == null) {
System.out.println("BAPI_COMPANYCODE_GETLIST"
+ " not found in SAP.");
System.exit(1);
}
mConnection.execute(function);
JCO.Structure returnStructure = function.getExportParameterList()
.getStructure("RETURN");
if (!(returnStructure.getString("TYPE").equals("") || returnStructure
.getString("TYPE").equals("S"))) {
System.out.println(returnStructure.getString("MESSAGE"));
System.exit(1);
}
codes = function.getTableParameterList().getTable(
"COMPANYCODE_LIST");
for (int i = 0; i < codes.getNumRows(); i++) {
codes.setRow(i);
System.out.println(codes.getString("COMP_CODE") + '\t'
+ codes.getString("COMP_NAME"));
}
} catch (Exception ex) {
ex.printStackTrace();
System.exit(1);
}
try {
codes.firstRow();
for (int i = 0; i < codes.getNumRows(); i++, codes.nextRow()) {
function = this.createFunction("BAPI_COMPANYCODE_GETDETAIL");
if (function == null) {
System.out.println("BAPI_COMPANYCODE_GETDETAIL"
+ " not found in SAP.");
System.exit(1);
}
function.getImportParameterList().setValue(
codes.getString("COMP_CODE"), "COMPANYCODEID");
function.getExportParameterList().setActive(false,
"COMPANYCODE_ADDRESS");
mConnection.execute(function);
JCO.Structure returnStructure = function
.getExportParameterList().getStructure("RETURN");
if (!(returnStructure.getString("TYPE").equals("")
|| returnStructure.getString("TYPE").equals("S") || returnStructure
.getString("TYPE").equals("W"))) {
System.out.println(returnStructure.getString("MESSAGE"));
}
JCO.Structure detail = function.getExportParameterList()
.getStructure("COMPANYCODE_DETAIL");
System.out.println(detail.getString("COMP_CODE") + '\t'
+ detail.getString("COUNTRY") + '\t'
+ detail.getString("CITY"));
}
} catch (Exception ex) {
ex.printStackTrace();
System.exit(1);
}
mConnection.disconnect();
}

public JCO.Function createFunction(String name) throws Exception {
try {
IFunctionTemplate ft = mRepository.getFunctionTemplate(name);
if (ft == null)
return null;
return ft.getFunction();
} catch (Exception ex) {
ex.printStackTrace();
throw new Exception("Problem retrieving JCO.Function object.");

}
}

public static void main(String args[]) {
TutorialBapi1 app = new TutorialBapi1();
}
}
补充:企业软件 ,  ERP/CRM
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,