Java使用JCO调用RFC函数

配置SAP集成开发环境

windows

librfc32.dll,sapjcorfc.dll 放到c:\windows\system32下面
sapjco.jar 放到当前项目的\web-inf\lib下面

linux

librfccm.so、libsapjcorfc.so放到jdk所安装的路径下的jre/lib/amd64下面
sapjco.jar 放到当前项目的WEB-INF\lib下面

代码示例

// sap连接属性
Properties logonProperties = new Properties();
logonProperties.put("jco.client.ashost", "192.168.255.256");
logonProperties.put("jco.client.client", "800");
logonProperties.put("jco.client.sysnr", "12");
logonProperties.put("jco.client.user", "username");
logonProperties.put("jco.client.passwd", "password");
logonProperties.put("jco.client.lang", "zh");
logonProperties.put("jco.client.CodePage", "8400");
JCO.Client client = JCO.createClient(logonProperties);
// 建立连接
client.connect();

// 建立repository 
JCO.Repository repository = new JCO.Repository("myRepository", client);
// 获取函数模版
IFunctionTemplate functionTemplate = repository.getFunctionTemplate("Y_FUNCTION_NAME");
// 获取函数对象
JCO.Function function = functionTemplate.getFunction();
// 输入参数列表
JCO.ParameterList parameterList = function.getImportParameterList();
// 输入结构赋值
JCO.Structure oaidStructure = parameterList.getStructure("IS_OAID");
oaidStructure.setValue("12", "OAID");
oaidStructure.setValue("23", "MATNR");

// client 执行函数
client.execute(function);

// 获取输出参数列表
ParameterList exportParameterList = function.getExportParameterList();
// 根据参数名获取参数值
System.out.println("EX_TYPE : " + exportParameterList.getString("EX_TYPE"));
System.out.println("EX_MESSAGE : " + exportParameterList.getString("EX_MESSAGE"));
// 获取表
ParameterList tableParameterList = function.getTableParameterList();
Table etOaid = tableParameterList.getTable("ET_OAID");
for (int i = 0; i < etOaid.getNumRows(); i++) {
    etOaid.setRow(i); // 设置游标
    System.out.print("MANDT : " + etOaid.getString("MANDT"));
    System.out.print(" MATNR : " + etOaid.getString("MATNR"));
    System.out.print(" OAID : " + etOaid.getString("OAID"));
    System.out.println(" CONFX : " + etOaid.getString("CONFX"));
}

其它

rfc函数编辑

如图,RFC函数包括:
* 导入-输入参数(普通参数,结构)
* 导出-输出参数(普通参数,结构)
* 表-不区分导入导出,同一个表可作为导入表,也可作为导出表,甚至可以同时作为导入导出表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值